floor6ggg 发表于 2019-11-22 23:37:28

https://blog.csdn.net/HiRuyue/article/details/9632507   里面提到:
在WM_COMMAND中,lParam用来区分是命令消息还是控件通知消息:如果lParam为NULL,则这是个命令消息,否则lParam里面放的必然就是控件的句柄,是一个控件通知消息。对于wParam则是低位放的是控件ID,高位放的是相应的消息事件。

解释也是:
lParam=NULL or 控件的句柄
wParam则是低位放的是控件ID,高位放的是相应的消息事件。

floor6ggg 发表于 2019-11-22 23:54:04

教训:
靠猜靠蒙是靠不住的,调试才是王道!!!调调更健康!!!

smooth 发表于 2019-11-28 08:03:10

floor6ggg 发表于 2019-11-22 23:33
将第五到第七行,更改为:



我本来有点理解,你这么说我更糊涂了。我的理解是:高位字符,等于GUI事件触发,低位字符,等于控件ID。

smooth 发表于 2019-11-28 08:11:01

floor6ggg 发表于 2019-11-22 23:37
https://blog.csdn.net/HiRuyue/article/details/9632507   里面提到:
在WM_COMMAND中,lParam用来区分是 ...

刚才没看到你这楼的回复,我的理解也是这样,虽然感觉硬生生的,但是也没有别的更好的解释。另外,我只要在GUIRegisterMsg($WM_COMMAND, "WM_COMMAND")中,加入_ArrayDisplay()来显示数组,就会卡死,我加入了足够大的Sleep,也无济于事。

tubaba 发表于 2019-11-28 11:52:59

_arraydisplay你直接查看函数构造就知道为什么了,完全就是一个完整的GUI脚本

haijie1223 发表于 2019-11-28 16:58:26

查windows资料去微软自家查:https://docs.microsoft.com/zh-cn/windows/win32/menurc/wm-command
注意看备注:

RemarksUse of the wParam and lParam parameters are summarized here.
Message SourcewParam (high word)wParam (low word)lParam
Menu0Menu identifier (IDM_*)0
Accelerator1Accelerator identifier (IDM_*)0
ControlControl-defined notification codeControl identifierHandle to the control window

当消息是来自 菜单   时,lParam是0。wParam的高位是0,低位是 菜单ID。
当消息是来自 加速键 时 ,lParam是0。wParam的高位是1,低位是 加速键ID。
当消息是来自 控件   时 ,lParam是 控件句柄。wParam的高位是 控件的通知代码,低位是 控件ID。


smooth 发表于 2019-12-2 12:18:13

haijie1223 发表于 2019-11-28 16:58
查windows资料去微软自家查:https://docs.microsoft.com/zh-cn/windows/win32/menurc/wm-command
注意看 ...

看了你发的资料,对这个函数有了进一步的了解,谢谢!但是有的还是不懂,比如,$hWnd, $iMsg, $wParam, $lParam这几个参数,为啥不用先定义就能使用?

haijie1223 发表于 2019-12-2 17:15:10

smooth 发表于 2019-12-2 12:18
看了你发的资料,对这个函数有了进一步的了解,谢谢!但是有的还是不懂,比如,$hWnd, $iMsg, $wParam, $ ...

编程的基础,形参本身就是一种定义。
页: 1 [2]
查看完整版本: 请教关于GUIRegisterMsg注册消息ID的用法