这是一个为控制win32 api中的消息而发布的理论问题。
WM_COMMAND和 和有WM_NOTIFY什么区别?我们什么时候需要处理这些消息,什么时候选择忽略它们?
产生这种疑问是因为这两个消息都是在用户与控件交互时发送的,并且都将相同的信息发送到事件类型的窗口过程,控件 Id 和控件句柄作为结构(LPNMHDR 在情况下WM_NOTIFY)或直接发送(LPARAM 句柄来控制和 LOWORD (WPARAM) 的情况下WM_COMMAND)
有了所有这些相似之处,为什么我们仍然将两者一起使用,而不仅仅是弃用一个?
由于向后兼容的原因,我们同时使用两者。新控件倾向于使用 WM_NOTIFY(它的功能要强大得多),但存在发送 WM_COMMAND 的现有控件,MS 不会改变这一点。
我说 WM_NOTIFY 更有能力,因为它的 lParam 是 NMHDR *,如果 NMHDR 是 POD 类型(或现代 C++ 术语中的标准布局)的第一个成员,那么您可以将 lParam 转换为控件发送的实际类型. WM_COMMAND 所能提供的只是一个命令代码和窗口句柄。
至于何时处理它们,这完全是一个需要的问题,如果您需要处理特定控件的一部分上的特定操作,则您处理该消息,否则您不处理。