新手求教关于代码整合问题[已解决]
本帖最后由 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
新手请教下,是否可以将两段代码整合成一段。。求各位大佬指点!!
高级会员是新手?!不会吧?! 为什么不仔细查看帮助呢?
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_RUNDEFMSGEndFunc ;==>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_RUNDEFMSGEndFunc ;==>WM_NOTIFY
tubaba 发表于 2018-8-13 14:57
为什么不仔细查看帮助呢?
Global Const $tagNMHDR = "struct; hwnd hWndFrom;uint_ptr IDFrom ...
谢谢 ,后面我搜索了其他。找到处理方法了。。。也万分感谢您~~~给您造成麻烦了~~~
万分感谢楼上前辈。现在可以了~~
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
高级会员只能说使用时间较长,我也没会多少。只能解决自己能解决的问题 你还是没看仔细....$tagNMTOOLBAR结构已包含$tagNMHDR结构,所以无需创建二个结构
页:
[1]