问下在au3用$WM_KEYDOWN消息的问题
怎么在au3里用它个时,一个空的窗口用它有效,而一旦在这个窗口再建了别的控件后,它就没有效果了呢?如下面的代码,注释掉这一行:;$OkButton = GUICtrlCreateButton("ok",10,10,20,20),正常,一旦去掉这行的分号,就没有效果了?
奇怪了。
Global Const $WM_KEYDOWN = 0x0101
$hwd = GUICreate("TEST",300,300)
GUIRegisterMsg($WM_KEYDOWN, "WM_KeyDown")
;$OkButton = GUICtrlCreateButton("ok",10,10,20,20)
GUISetState()
While 1
$msg = GUIGetMsg()
Switch $msg
Case -3
Exit
EndSwitch
WEnd
Func WM_KeyDown($HWnd,$iMsg,$wParam,$lParam)
MsgBox(0, "", "按键值是: " & BitAND($wParam,0xFF))
EndFunc 不会又是au3里的特别吧。在实际我的程序中,想在截获回车键后“doing smth”,由于用了Opt("GUIOnEventMode", 1),就没法用GUIGetMsg函数了 对于 这种VM 的参数一直很好奇, 这些值都有些什么功能呢?不知道楼主是哪里看过来的, 有中文资料吗,分享于我与众多坛友吧~感谢 因为你的按钮吃掉了$WM_KEYDOWN 的消息 回复 4# xxoojoeooxx
按照WinAPI里的说明,你的说法是不成立的。象在C/C++里,就可以直接用了。
除非au3里有特别规定,但我找了帮助半天也没有看到相关说明。
别的wm_消息都没有问题,可以直接用,难道就“吃”wm_keydown的消息/ 本帖最后由 xxoojoeooxx 于 2011-2-15 21:06 编辑
回复 5# happytc
WM_KEYDOWN消息由焦点送往视窗而不是前台视窗,并不会“冒泡”至父视窗。这就意味着,按钮和其它控件可以接收这些消息,并能“吃掉”它们。 回复 6# xxoojoeooxx
谢了,看来在au3里果然如此了。 这不是AU3的特性,所有语言都是如此。
页:
[1]