本帖最后由 zdphj 于 2022-7-9 14:14 编辑
新手被困扰2天的问题,我界面是左边TREEVIEW,右边LISTVIEW,如果代码如下,鼠标双击LISTVIEW可以响应事件,但TREEVIEW不响应;但是如代码里面,启用屏蔽的参数为 2 3那2句,屏蔽掉上面对应的2句,就可以响应TREEVIEW的鼠标双击事件,但LISTVIEW的双击又不响应了,不知道问题出在哪里,请各位大佬帮忙看看!
Func WM_NOTIFY($hWnd, $iMsg, $wParam, $lParam)
#forceref $hWnd, $iMsg, $wParam
Local $hWndFrom, $iIDFrom, $iCode, $tNMHDR, $tInfo
$tNMHDR = DllStructCreate($tagNMHDR, $lParam)
$hWndFrom = HWnd(DllStructGetData($tNMHDR, "hWndFrom")) -----------------------
$iCode = DllStructGetData($tNMHDR, "Code") ----------------------启用这两句 可以响应 $ListView1 的双击,但是不响应 $g_hTreeView
;$hWndFrom = HWnd(DllStructGetData($tNMHDR, 2)) ------------------
;$iCode = DllStructGetData($tNMHDR, 3) ------------------ 启用这两句,可以响应 $g_hTreeView 的双击,但是不响应 $ListView1
Switch $hWndFrom
Case $g_hTreeView
Switch $iCode
Case $NM_DBLCLK ; 双击
$Index = _GUICtrlTreeView_GetSelection($g_hTreeView)
If Not $Index Then Return; 这里用以判断是否选定了TreeViewItem
MsgBox(0,0,"双击了" & $Index)
EndSwitch
Case $ListView1
Switch $iCode
Case $NM_DBLCLK ; 左键双击
$tInfo = DllStructCreate($tagNMITEMACTIVATE, $lParam)
$Index = DllStructGetData($tInfo, "Index") ;_GUICtrlListView_GetSelectedIndices($ListView1)
If $Index = -1 Then Return; 这里用以判断是否选定了ListViewItem
Local $numx = _ArrayBinarySearch($hItemArray, $LItemx[Number($Index)][1], 0, 0, 0)
;MsgBox(0, "", _GUICtrlListView_GetItemText($ListView1, Number($Index), 0)&": TREEVIEW ID="&$hItemArray[$numx][1])
Local $pcmsg = StringSplit($hItemArray[$numx][1], ";")
OpenServer($pcmsg)
EndSwitch
EndSwitch
Return $GUI_RUNDEFMSG
EndFunc
|