找回密码
 加入
搜索
查看: 1886|回复: 6

[网络通信] 新手求教关于代码整合问题[已解决]

[复制链接]
发表于 2018-8-13 13:45:09 | 显示全部楼层 |阅读模式
本帖最后由 xyhqqaa 于 2018-8-13 15:40 编辑

实现工具栏点击操作

Func WM_NOTIFY($hWnd, $Msg, $wParam, $lParam)
Local $tNMHDR, $hWndFrom, $iCode, $tNMTOOLBAR, $iItem
        $tNMHDR = DllStructCreate($tagNMHDR, $lParam)
        $hWndFrom = HWnd(DllStructGetData($tNMHDR, "hWndFrom"))
        $iCode = DllStructGetData($tNMHDR, "Code")
        $tNMTOOLBAR = DllStructCreate($tagNMTOOLBAR, $lParam)
        $iItem = DllStructGetData($tNMTOOLBAR, "iItem")
        Switch $hWndFrom
                Case $mainToolBar
                        Switch $iCode
                                Case $NM_LDOWN
                                        Switch $iItem
                                                Case $ToolBar_new
                                                        $MSG_NOTIFY = "newuser"
                                                Case $ToolBar_del
                                                        $MSG_NOTIFY = "deluser"
                           EndSwitch
                        EndSwitch
        EndSwitch
        Return $GUI_RUNDEFMSG
EndFunc  

实现listview点击操作
 
Func WM_NOTIFY($hWndGUI, $MsgID, $WParam, $LParam) ;判断listview双击事件
        Local $tagNMHDR, $Event, $hWndFrom, $IDFrom
        Local $tagNMHDR = DllStructCreate("int;int;int", $LParam)
        If @error Then Return $GUI_RUNDEFMSG
        $IDFrom = DllStructGetData($tagNMHDR, 2)
        $Event = DllStructGetData($tagNMHDR, 3)
        $tagNMHDR = 0
        Switch $IDFrom ;選擇產生事件的控制項
                Case $IDFrom = $ListView
                        Switch $Event ; 選擇產生的事件
                                Case $NM_CLICK ; 左擊
                                Case $NM_DBLCLK ; 雙擊
                                Case $NM_RCLICK ; 右擊
                        EndSwitch
        EndSwitch
EndFunc   ;==>WM_NOTIFY


新手请教下,是否可以将两段代码整合成一段。。求各位大佬指点!!






发表于 2018-8-13 14:06:30 | 显示全部楼层
高级会员是新手?!不会吧?!
发表于 2018-8-13 14:57:59 | 显示全部楼层
为什么不仔细查看帮助呢?
Global Const $tagNMHDR = "struct; hwnd hWndFrom;uint_ptr IDFrom;INT Code; endstruct"
Global Const $tagNMTOOLBAR = $tagNMHDR & ";int iItem;" & _
"struct; int iBitmap;int idCommand;byte fsState;byte fsStyle;dword_ptr dwData;int_ptr iString; endstruct" & _
";int cchText;ptr pszText;" & $tagRECT

下面二种都可以

Func WM_NOTIFY($hWnd, $Msg, $wParam, $lParam)
        Local $hWndFrom, $iCode, $tNMTOOLBAR, $iItem, $IDFrom
        $tNMTOOLBAR = DllStructCreate($tagNMTOOLBAR, $lParam)
        $hWndFrom = HWnd(DllStructGetData($tNMTOOLBAR, "hWndFrom"))
        $IDFrom = (DllStructGetData($tNMTOOLBAR, "IDFrom")
        $iCode = DllStructGetData($tNMTOOLBAR, "Code")
        $iItem = DllStructGetData($tNMTOOLBAR, "iItem")
        Switch $hWndFrom
                Case $mainToolBar
                        Switch $iCode
                                Case $NM_LDOWN
                                        Switch $iItem
                                                Case $ToolBar_new
                                                        $MSG_NOTIFY = "newuser"
                                                Case $ToolBar_del
                                                        $MSG_NOTIFY = "deluser"
                                        EndSwitch
                        EndSwitch
        EndSwitch
        Switch $IDFrom ;選擇產生事件的控制項
                Case $ListView
                        Switch $iCode ; 選擇產生的事件
                                Case $NM_CLICK ; 左擊
                                Case $NM_DBLCLK ; 雙擊
                                Case $NM_RCLICK ; 右擊
                        EndSwitch
        EndSwitch
        Return $GUI_RUNDEFMSG
EndFunc   ;==>WM_NOTIFY


Func WM_NOTIFY($hWnd, $Msg, $wParam, $lParam)
        Local $hWndFrom, $iCode, $tNMTOOLBAR, $iItem, $IDFrom
        Local $hListView = GUICtrlGetHandle($ListView)
        $tNMTOOLBAR = DllStructCreate($tagNMTOOLBAR, $lParam)
        $hWndFrom = HWnd(DllStructGetData($tNMTOOLBAR, "hWndFrom"))
        $IDFrom = (DllStructGetData($tNMTOOLBAR, "IDFrom")
        $iCode = DllStructGetData($tNMTOOLBAR, "Code")
        $iItem = DllStructGetData($tNMTOOLBAR, "iItem")
        Switch $hWndFrom
                Case $mainToolBar
                        Switch $iCode
                                Case $NM_LDOWN
                                        Switch $iItem
                                                Case $ToolBar_new
                                                        $MSG_NOTIFY = "newuser"
                                                Case $ToolBar_del
                                                        $MSG_NOTIFY = "deluser"
                                        EndSwitch
                        EndSwitch
                Case $hListView
                        Switch $iCode ; 選擇產生的事件
                                Case $NM_CLICK ; 左擊
                                Case $NM_DBLCLK ; 雙擊
                                Case $NM_RCLICK ; 右擊
                        EndSwitch
        EndSwitch
        Return $GUI_RUNDEFMSG
EndFunc   ;==>WM_NOTIFY


评分

参与人数 1金钱 +10 收起 理由
xyhqqaa + 10

查看全部评分

 楼主| 发表于 2018-8-13 15:29:20 | 显示全部楼层
tubaba 发表于 2018-8-13 14:57
为什么不仔细查看帮助呢?
Global Const $tagNMHDR = "struct; hwnd hWndFrom;uint_ptr IDFrom ...

谢谢 ,后面我搜索了其他。找到处理方法了。。。也万分感谢您~~~给您造成麻烦了~~~
 楼主| 发表于 2018-8-14 00:32:18 | 显示全部楼层

万分感谢楼上前辈。现在可以了~~
 
Func WM_NOTIFY($hWnd, $iMsg, $iwParam, $ilParam)
        Local $tNMHDR, $iCode, $hWndFrom, $tNMTOOLBAR, $iItem
        Local $hListView = GUICtrlGetHandle($ListView)
        $tNMHDR = DllStructCreate($tagNMHDR, $ilParam)
        $hWndFrom = HWnd(DllStructGetData($tNMHDR, "hWndFrom"))
        $iIDFrom = DllStructGetData($tNMHDR, "IDFrom")
        $iCode = DllStructGetData($tNMHDR, "Code")
        $tNMTOOLBAR = DllStructCreate($tagNMTOOLBAR, $ilParam)
        $iItem = DllStructGetData($tNMTOOLBAR, "iItem")
        Switch $hWndFrom
                Case $hListView ;这里改成你的listview的ID
                        Switch $iCode
                                Case $NM_DBLCLK
                                        MsgBox("", "", "1")
                        EndSwitch

                Case $mainToolBar ;这个是你的toolbar的ID
                        Switch $iCode
                                Case $NM_LDOWN
                                        Switch $iItem
                                                Case $ToolBar_new
                                                        MsgBox(262208, "你点击了:", "2")
                                        EndSwitch
                        EndSwitch

        EndSwitch
        Return $GUI_RUNDEFMSG
EndFunc   ;==>WM_NOTIFY






发表于 2018-8-14 09:15:00 | 显示全部楼层
高级会员只能说使用时间较长,我也没会多少。只能解决自己能解决的问题
发表于 2018-8-14 21:06:12 | 显示全部楼层
你还是没看仔细....$tagNMTOOLBAR结构已包含$tagNMHDR结构,所以无需创建二个结构
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-12-24 00:20 , Processed in 0.102989 second(s), 21 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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