自问自答:
AU3中没有UINT类型,而$NM_CLICK为INT类型,所以所以如果定义为UINT类型,需要把数据转化为相同类型的INT类型再进行比较。
所以定义为UINT类型的代码如下:
#include <WindowsConstants.au3>
$hForm = GUICreate("treeview", 200, 100)
$hTree = GUICtrlCreateTreeView(0, 0, 200, 100)
GUISetState()
GUIRegisterMsg($WM_NOTIFY, "WM_NOTIFY")
While 1
$Msg = GUIGetMsg()
Switch $Msg
Case -3
Exit
EndSwitch
WEnd
Func WM_NOTIFY($hWnd, $Msg, $wParam, $lParam)
Local $hWndFrom, $iCode, $tNMHDR
$tNMHDR = DllStructCreate('HWND hwndFrom;UINT_PTR idFrom;UINT code;', $lParam) ;最后一个参数修改为Uint则无效。
$hWndFrom = HWnd(DllStructGetData($tNMHDR, "hWndFrom"))
$iCode = DllStructGetData($tNMHDR, "Code")
$iCode = BitAND('0x' & Hex($iCode), 0xffffffff)
Switch $hWndFrom
Case GUICtrlGetHandle($hTree)
Switch $iCode
Case $NM_CLICK
MsgBox(0, '$iCode=' & $iCode, '单击', 1, $hForm)
EndSwitch
EndSwitch
EndFunc ;==>WM_NOTIFY
|