wsfda 发表于 2011-6-4 23:29:23

【已解决】控件操作问题

本帖最后由 wsfda 于 2011-6-6 00:42 编辑

各位大大好:我想做个小工具,界面如下:

使用的OnEvent 模式
添加按钮和删除按钮都是右键弹出菜单,
请问如何当我点击删除按钮时,删除当前鼠标所在控件上面的按钮
就是不知道怎么判断鼠标是在哪个按钮上面点击的右键,说的比较含糊,不知道大家理解没有,求助

3mile 发表于 2011-6-4 23:51:04

1.WM_CONTEXTMENU($hWnd, $iMsg, $iwParam, $ilParam)消息.
2.消息中使用$hCtlr=GUIGetCursorInfo($hWnd)
3.If $hCtlr<=3 then 建立空白区域的右键菜单
4.Else建立按钮上的菜单,此时控件ID为$hCtlr,此时已经可以为所欲为了.

wsfda 发表于 2011-6-5 10:13:36

回复 2# 3mile


    谢谢这位大哥好心帮忙,小弟感激不尽,我先去研究啊

wsfda 发表于 2011-6-5 11:12:28

楼上大哥,能否给个实例,仔细研究了一下,对这个不太明白,谢谢了

3mile 发表于 2011-6-5 12:26:41

回复 4# wsfda
#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <GuiMenu.au3>

Opt("GUIOnEventMode", 1)

Global Enum $idOpen = 1000, $idSave, $idInfo
Local $Button

$Form1 = GUICreate("Form1", 616, 112, 192, 132)
GUISetOnEvent(-3,"_exit")

for $i=0 to 4
        $Button[$i] = GUICtrlCreateButton("Button"&$i+1, 16+($i*120), 8, 105, 97)
        GUICtrlSetOnEvent(-1,"Button_Click")
Next

GUISetState(@SW_SHOW)
GUIRegisterMsg($WM_CONTEXTMENU, "WM_CONTEXTMENU")

While 1
        Sleep(100)
WEnd

Func _exit()
        Exit
EndFunc

Func Button_Click()
        msgbox(0,0,"Clicked Button"&@GUI_CtrlId-3+1)
EndFunc

Func WM_CONTEXTMENU($hWnd, $iMsg, $iwParam, $ilParam)
        $aa=GUIGetCursorInfo($hWnd)
If $aa<=3 then
    Local $hMenu
    $hMenu = _GUICtrlMenu_CreatePopup ()
    _GUICtrlMenu_InsertMenuItem ($hMenu, 0, "关于", $idOpen)
    _GUICtrlMenu_InsertMenuItem ($hMenu, 1, "设置", $idSave)
    _GUICtrlMenu_InsertMenuItem ($hMenu, 3, "", 0)
    _GUICtrlMenu_InsertMenuItem ($hMenu, 3, "退出", $idInfo)
    Switch _GUICtrlMenu_TrackPopupMenu ($hMenu, $iwParam,-1,-1,1,1,2)
                Case $idOpen                       
            about()
      Case $idSave
            setup()
      Case $idInfo
            exit
        EndSwitch
    _GUICtrlMenu_DestroyMenu ($hMenu)
    Return True
Else
        Local $hMenu
    $hMenu = _GUICtrlMenu_CreatePopup ()
    _GUICtrlMenu_InsertMenuItem ($hMenu, 0, "删除快捷方式", $idOpen)
        _GUICtrlMenu_InsertMenuItem ($hMenu, 1, "", 0)
        _GUICtrlMenu_InsertMenuItem ($hMenu, 2, "打开文件位置", $idSave)
    Switch _GUICtrlMenu_TrackPopupMenu ($hMenu, $iwParam,-1,-1,1,1,2)
                Case $idOpen
                        delete($aa)
                case $idSave
;~                         $pathfile=IniRead("quick.ini","工具",$aa-3,"error")
;~                         if $pathfile<>"error" Then
;~                                 $shell=iniread("quick.ini",$pathfile,1,"")
;~                                 Run('explorer /select, "' & $shell & '"')
;~                         EndIf
    EndSwitch
    _GUICtrlMenu_DestroyMenu ($hMenu)
    Return True
EndIf
EndFunc   ;==>WM_CONTEXTMENU

Func about()
        msgbox(0,0,"ABout")
EndFunc

Func setup()
        msgbox(0,0,"setup")
EndFunc

Func delete($C_id)
        GUICtrlDelete($C_id)
EndFunc

浪迹红客 发表于 2011-6-5 12:54:26

学习了。。。。

浪迹红客 发表于 2011-6-5 12:54:45

代码不错。。

inter701 发表于 2011-6-5 13:01:06

good~good~

xyhqqaa 发表于 2011-6-5 13:58:18

收藏了。。。。

wsfda 发表于 2011-6-6 00:55:22

另外大哥能不能给个 GUICtrlCreateButton双击的例子,我搜索论坛,都是其他控件的,请给思路或者例子,非常感谢

58fly 发表于 2011-6-6 00:58:39

三笑大大很厉害

Netfox 发表于 2011-6-9 00:15:22

不错。三笑的东东。。

inter701 发表于 2011-6-11 17:06:28

Launcher???

dyd 发表于 2011-6-11 18:07:44

路过。。。

零度深蓝 发表于 2011-12-18 10:27:37

界面很强大啊,正好需要
页: [1] 2
查看完整版本: 【已解决】控件操作问题