找回密码
 加入
搜索
查看: 6833|回复: 14

[GUI管理] 关于鼠标右键的消息写法

  [复制链接]
发表于 2014-10-14 09:12:46 | 显示全部楼层 |阅读模式
在帮助里面 有这么个自定义消息函数

请问 要是$nNotifyCode是鼠标右键消息 应该怎么写呢?


Func WM_COMMAND($hWnd, $Msg, $wParam, $lParam)
    #forceref $hWnd, $Msg
    Local $nNotifyCode = BitShift($wParam, 16)
    Local $nID = BitAND($wParam, 0x0000FFFF)
    Local $hCtrl = $lParam
    Local $sText = ""

    Switch $hCtrl
        Case $btn, $rdo, $chk
            Switch $nNotifyCode
                Case $BN_CLICKED
                    $sText = "$BN_CLICKED" & @CRLF
                Case $BN_PAINT
                    $sText = "$BN_PAINT" & @CRLF
                Case $BN_PUSHED, $BN_HILITE
                    $sText = "$BN_PUSHED, $BN_HILITE" & @CRLF
                Case $BN_UNPUSHED, $BN_UNHILITE
                    $sText = "$BN_UNPUSHED" & @CRLF
                Case $BN_DISABLE
                    $sText = "$BN_DISABLE" & @CRLF
                Case $BN_DBLCLK, $BN_DOUBLECLICKED
                    $sText = "$BN_DBLCLK, $BN_DOUBLECLICKED" & @CRLF
                Case $BN_SETFOCUS
                    $sText = "$BN_SETFOCUS" & @CRLF
                Case $BN_KILLFOCUS
                    $sText = "$BN_KILLFOCUS" & @CRLF
            EndSwitch
            MemoWrite($sText & _
                    "-----------------------------" & @CRLF & _
                    "WM_COMMAND - Infos:" & @CRLF & _
                    "-----------------------------" & @CRLF & _
                    "Code" & @TAB & ":" & $nNotifyCode & @CRLF & _
                    "CtrlID" & @TAB & ":" & $nID & @CRLF & _
                    "CtrlHWnd:" & $hCtrl & @CRLF & _
                    _GUICtrlButton_GetText($hCtrl) & @CRLF)
            Return 0 ; Only workout clicking on the button
    EndSwitch
    ; Proceed the default AutoIt3 internal message commands.
    ; You also can complete let the line out.
    ; !!! But only 'Return' (without any value) will not proceed
    ; the default AutoIt3-message in the future !!!
    Return $GUI_RUNDEFMSG
EndFunc   ;==>WM_COMMAND
发表于 2014-10-14 13:31:48 | 显示全部楼层
#include <TreeViewConstants.au3>
#include <WindowsConstants.au3>
#include <GuiTreeView.au3>
#include <GuiConstantsEx.au3>

$form=GUICreate("欢迎", 800,660,-1,-1)
$htv = GUICtrlCreateTreeView(5, 5,330,585)
$zd1 = GUICtrlCreateContextMenu($htv)
$tj1 = GUICtrlCreateMenuItem("添加",$zd1)
$sc1 = GUICtrlCreateMenuItem("删除",$zd1)
$rn1 = GUICtrlCreateMenuItem("修改",$zd1)
$sx1 = GUICtrlCreateMenuItem("显示",$zd1)
GUISetState(@SW_SHOW)


While 1
        $nMsg = GUIGetMsg()
        Switch $nMsg
                Case $GUI_EVENT_CLOSE
                        Exit
                Case $tj1
                        MsgBox(64,"提示","这是添加")
                ;..........
        EndSwitch
        
WEnd
 楼主| 发表于 2014-10-14 13:37:21 | 显示全部楼层
你这个方法 确实可以  但是只能用于固定的控件  
要是动态的控件 就不可以了
发表于 2014-10-21 08:52:53 | 显示全部楼层
WM_RBUTTONDOWN
发表于 2014-10-21 08:54:13 | 显示全部楼层
注册这个消息,别用command消息
发表于 2014-10-21 09:09:14 | 显示全部楼层
学习了,,2楼的代码干净整洁~点个赞~
发表于 2014-10-21 17:08:19 | 显示全部楼层
学习了,感谢分享!
发表于 2014-10-24 10:39:48 | 显示全部楼层
回复 2# ap112

楼主要用消息,给个事件有什么用
 楼主| 发表于 2014-10-24 13:54:51 | 显示全部楼层
主要是 空间如果是 动态建立的  怎么写这个消息
 楼主| 发表于 2014-10-24 13:55:36 | 显示全部楼层
回复  ap112

楼主要用消息,给个事件有什么用
netegg 发表于 2014-10-24 10:39



    主要是 控件如果是 动态建立的  怎么写这个消息
发表于 2014-10-24 17:47:01 | 显示全部楼层
消息只管你的操作,和控件标识没关系
发表于 2014-10-24 17:47:07 | 显示全部楼层
消息只管你的操作,和控件标识没关系
 楼主| 发表于 2014-10-24 20:40:25 | 显示全部楼层
消息只管你的操作,和控件标识没关系
netegg 发表于 2014-10-24 17:47



    要是控件是动态建立的   那么2楼的方法就不行了
发表于 2014-10-25 11:02:39 | 显示全部楼层
本帖最后由 netegg 于 2014-10-25 11:03 编辑

动态建立的按钮总有句柄呀,指定就行了,消息函数里的窗口句柄参数可以使用控件句柄
 楼主| 发表于 2014-10-25 11:46:48 | 显示全部楼层
动态建立的按钮总有句柄呀,指定就行了,消息函数里的窗口句柄参数可以使用控件句柄
netegg 发表于 2014-10-25 11:02


是的 咱们在群里讨论过了
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-4-30 00:14 , Processed in 0.087712 second(s), 22 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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