找回密码
 加入
搜索
查看: 5234|回复: 9

[网络通信] [己解决]两个WM_NOTIFY如何使用

  [复制链接]
发表于 2014-12-24 13:38:54 | 显示全部楼层 |阅读模式
本帖最后由 chzj589 于 2014-12-24 21:57 编辑

两个WM_NOTIFY,一个是工具栏的,一个是ListView,为何点击ListView的WM_NOTIFYA后,工具栏的WM_NOTIFY就不能使用??
工具条栏
Func _WM_NOTIFY($hWnd, $iMsg, $iwParam, $ilParam)
        Local $tNMHDR, $iCode, $hMenu
        $tNMHDR = DllStructCreate($tagNMHDR, $ilParam)
        $iCode = DllStructGetData($tNMHDR, "Code")
        If $iCode = $TBN_DROPDOWN Then ;
                $hMenu = _GUICtrlMenu_CreatePopup()
                _GUICtrlMenu_AddMenuItem($hMenu, "菜单项目1", 2000)
                _GUICtrlMenu_AddMenuItem($hMenu, "菜单项目2", 2001)
                _GUICtrlMenu_AddMenuItem($hMenu, "菜单项目3", 2002)
                _GUICtrlMenu_AddMenuItem($hMenu, "", 0)
                _GUICtrlMenu_AddMenuItem($hMenu, "菜单项目4", 2003)
                _GUICtrlMenu_AddMenuItem($hMenu, "菜单5", 2004)
                _GUICtrlMenu_TrackPopupMenu($hMenu, $hGUI)
                _GUICtrlMenu_DestroyMenu($hMenu)
               
        EndIf
        Return $GUI_RUNDEFMSG
EndFunc   ;==>WM_NOTIFY

ListView
Func _WM_NOTIFYA($hWnd, $iMsg, $iwParam, $ilParam)
        $hWndListView = $ListView1
        If Not IsHWnd($ListView1) Then $hWndListView = GUICtrlGetHandle($PListView1)
        $tNMHDR = DllStructCreate($tagNMHDR, $ilParam)
        $hWndFrom = HWnd(DllStructGetData($tNMHDR, "hWndFrom"))
        $iIDFrom = DllStructGetData($tNMHDR, "IDFrom")
        $iCode = DllStructGetData($tNMHDR, "Code")
        Switch $hWndFrom
                Case $hWndListView
                        Switch $iCode
                                Case $NM_DBLCLK
                                        $tInfo = DllStructCreate($tagNMITEMACTIVATE, $ilParam)
                                        $iIndex = DllStructGetData($tInfo, "Index")
                                        If $iIndex >= 0 Then _binzzdup()
                        EndSwitch
        EndSwitch
        Return $GUI_RUNDEFMSG       
EndFunc   ;==>_WM_NOTIFYAA
解决方法看二楼
发表于 2014-12-24 15:46:20 | 显示全部楼层

Func _WM_NOTIFY($hWnd, $iMsg, $iwParam, $ilParam)
        Local $tNMHDR, $iCode, $hMenu
        $tNMHDR = DllStructCreate($tagNMHDR, $ilParam)
        $hWndFrom = HWnd(DllStructGetData($tNMHDR, "hWndFrom"))
        $iIDFrom = DllStructGetData($tNMHDR, "IDFrom")
        $iCode = DllStructGetData($tNMHDR, "Code")
        Switch $hWndFrom
                Case $hWndListView;这里改成你的listview的ID
                        Switch $iCode
                                Case $NM_DBLCLK
                                        $tInfo = DllStructCreate($tagNMITEMACTIVATE, $ilParam)
                                        $iIndex = DllStructGetData($tInfo, "Index")
                                        If $iIndex >= 0 Then _binzzdup()
                        EndSwitch
                        
                Case $hToolbar;这个是你的toolbar的ID
                        Switch $iCode
                                Case $TBN_DROPDOWN
                                        $hMenu = _GUICtrlMenu_CreatePopup()
                                        _GUICtrlMenu_AddMenuItem($hMenu, "菜单项目1", 2000)
                                        _GUICtrlMenu_AddMenuItem($hMenu, "菜单项目2", 2001)
                                        _GUICtrlMenu_AddMenuItem($hMenu, "菜单项目3", 2002)
                                        _GUICtrlMenu_AddMenuItem($hMenu, "", 0)
                                        _GUICtrlMenu_AddMenuItem($hMenu, "菜单项目4", 2003)
                                        _GUICtrlMenu_AddMenuItem($hMenu, "菜单5", 2004)
                                        _GUICtrlMenu_TrackPopupMenu($hMenu, $hGUI)
                                        _GUICtrlMenu_DestroyMenu($hMenu)
                        EndSwitch
                        
        EndSwitch
        Return $GUI_RUNDEFMSG
EndFunc   ;==>_WM_NOTIFY
 楼主| 发表于 2014-12-24 16:23:04 | 显示全部楼层
回复 2# seniors

谢谢!我调试一下!
发表于 2014-12-24 16:29:17 | 显示全部楼层
学习了 谢谢 !
 楼主| 发表于 2014-12-24 21:55:33 | 显示全部楼层
回复 2# seniors

谢谢!调试成功!
 楼主| 发表于 2014-12-25 09:55:50 | 显示全部楼层
调试成功的效果图


本帖子中包含更多资源

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

×
发表于 2014-12-27 18:41:38 | 显示全部楼层
新手路过 进来学习下
发表于 2014-12-28 19:50:32 | 显示全部楼层
学习了,这个不错,case
发表于 2014-12-31 10:35:57 | 显示全部楼层
回复 2# seniors


如果兄台能细细讲下 _WM_NOTIFY 函数里 传人的及定义的各个变量、引用的各个方法 的意义再好不过
发表于 2014-12-31 15:03:52 | 显示全部楼层
回复 9# vigiles
这个要讲解又可以写一本书了
因为这是winapi函数接口的硬性规定,win内部也是这样操作的。
是先有了规定,再有对应的函数开发的
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-12-23 03:52 , Processed in 0.249463 second(s), 24 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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