找回密码
 加入
搜索
查看: 3316|回复: 7

[AU3基础] 问下在au3用$WM_KEYDOWN消息的问题

  [复制链接]
发表于 2011-2-14 09:26:52 | 显示全部楼层 |阅读模式
怎么在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
 楼主| 发表于 2011-2-14 09:34:29 | 显示全部楼层
不会又是au3里的特别吧。在实际我的程序中,想在截获回车键后“doing smth”,由于用了Opt("GUIOnEventMode", 1),就没法用GUIGetMsg函数了
发表于 2011-2-14 11:24:36 | 显示全部楼层
对于 这种VM 的参数一直很好奇, 这些值都有些什么功能呢?不知道楼主是哪里看过来的, 有中文资料吗,分享于我与众多坛友吧~感谢
发表于 2011-2-14 18:36:24 | 显示全部楼层
因为你的按钮吃掉了$WM_KEYDOWN 的消息
 楼主| 发表于 2011-2-15 20:36:05 | 显示全部楼层
回复 4# xxoojoeooxx
按照WinAPI里的说明,你的说法是不成立的。象在C/C++里,就可以直接用了。
除非au3里有特别规定,但我找了帮助半天也没有看到相关说明。
别的wm_消息都没有问题,可以直接用,难道就“吃”wm_keydown的消息/
发表于 2011-2-15 20:58:31 | 显示全部楼层
本帖最后由 xxoojoeooxx 于 2011-2-15 21:06 编辑

回复 5# happytc

WM_KEYDOWN消息由焦点送往视窗而不是前台视窗,并不会“冒泡”至父视窗。这就意味着,按钮和其它控件可以接收这些消息,并能“吃掉”它们。

本帖子中包含更多资源

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

×
 楼主| 发表于 2011-2-15 22:23:56 | 显示全部楼层
回复 6# xxoojoeooxx
谢了,看来在au3里果然如此了。
发表于 2011-2-16 17:18:30 | 显示全部楼层
这不是AU3的特性,所有语言都是如此。
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-9-21 12:26 , Processed in 0.078023 second(s), 25 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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