找回密码
 加入
搜索
查看: 7382|回复: 16

[AU3基础] 【已解决】控件操作问题

 火.. [复制链接]
发表于 2011-6-4 23:29:23 | 显示全部楼层 |阅读模式
本帖最后由 wsfda 于 2011-6-6 00:42 编辑

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

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

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?加入

×
发表于 2011-6-4 23:51:04 | 显示全部楼层
1.WM_CONTEXTMENU($hWnd, $iMsg, $iwParam, $ilParam)消息.
2.消息中使用$hCtlr=GUIGetCursorInfo($hWnd)
3.If $hCtlr[4]<=3 then 建立空白区域的右键菜单
4.Else建立按钮上的菜单,此时控件ID为$hCtlr[4],此时已经可以为所欲为了.

评分

参与人数 2金钱 +60 贡献 +13 收起 理由
wsfda + 50 + 11 能否给个实例,非常感谢你
tryhi + 10 + 2 貌似挺高深,貌似明白了那么一点

查看全部评分

 楼主| 发表于 2011-6-5 10:13:36 | 显示全部楼层
回复 2# 3mile


    谢谢这位大哥好心帮忙,小弟感激不尽,我先去研究啊
 楼主| 发表于 2011-6-5 11:12:28 | 显示全部楼层
楼上大哥,能否给个实例,仔细研究了一下,对这个不太明白,谢谢了
发表于 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[5]

$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[4]<=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[4])
                case $idSave
;~                         $pathfile=IniRead("quick.ini","工具",$aa[4]-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

评分

参与人数 1金钱 +30 贡献 +15 收起 理由
wsfda + 30 + 15 神人

查看全部评分

发表于 2011-6-5 12:54:26 | 显示全部楼层
学习了。。。。
发表于 2011-6-5 12:54:45 | 显示全部楼层
代码不错。。
发表于 2011-6-5 13:01:06 | 显示全部楼层
good~good~
发表于 2011-6-5 13:58:18 | 显示全部楼层
收藏了。。。。
 楼主| 发表于 2011-6-6 00:55:22 | 显示全部楼层
另外大哥能不能给个 GUICtrlCreateButton双击的例子,我搜索论坛,都是其他控件的,请给思路或者例子,非常感谢
发表于 2011-6-6 00:58:39 | 显示全部楼层
三笑大大很厉害
发表于 2011-6-9 00:15:22 | 显示全部楼层
不错。三笑的东东。。
发表于 2011-6-11 17:06:28 | 显示全部楼层
Launcher???
发表于 2011-6-11 18:07:44 | 显示全部楼层
路过。。。
发表于 2011-12-18 10:27:37 | 显示全部楼层
界面很强大啊,正好需要
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-11-17 15:43 , Processed in 0.086020 second(s), 25 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表