这是一道理论题,旨在控制 win32 api 中的消息。
有什么区别WM_COMMAND
and WM_NOTIFY
?
我们什么时候需要处理这些消息,什么时候我们选择忽略它们?
出现这种疑问是因为当用户与控件交互时,这两个消息都会发送,并且都将相同的信息发送到事件类型的窗口过程,控件 I 和控件句柄都作为结构
(LPNMHDR 在以下情况下WM_NOTIFY
)或直接(LPARAM 句柄来控制和 LOWORD (WPARAM),以防WM_COMMAND
)
既然有这么多相似之处,为什么我们仍然一起使用两者而不是仅仅贬低其中一个呢?
由于向后兼容性的原因,我们使用两者。新的控件倾向于使用 WM_NOTIFY(它的功能要强大得多),但是现有的控件会发送 WM_COMMAND,并且 MS 不会改变这一点。
我说 WM_NOTIFY 更强大,因为它的 lParam 是一个 NMHDR *,如果 NMHDR 是 POD 类型(或现代 C++ 术语中的标准布局)的第一个成员,那么您可以将 lParam 转换为控件发送的实际类型。 WM_COMMAND 所能提供的只是命令代码和窗口句柄。
至于何时处理它们,这完全是一个需要的问题,如果您需要处理特定控件的一部分上的特定操作,那么您就处理该消息,如果不需要,则不处理。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)