WM_NOTIFY的文档很容易找到,但是我找到了大量引用的示例代码和文章,WM_REFLECT_NOTIFY
但我找不到任何文档。
什么是WM_REFLECT_NOTIFY
,我在哪里可以找到它的文档以及此消息与此有何不同WM_NOTIFY
?
示例参考:
WM_NOTIFY的文档很容易找到,但是我找到了大量引用的示例代码和文章,WM_REFLECT_NOTIFY
但我找不到任何文档。
什么是WM_REFLECT_NOTIFY
,我在哪里可以找到它的文档以及此消息与此有何不同WM_NOTIFY
?
示例参考:
WM_REFLECT_NOTIFY
被称为具有 的值0x204E
,即0x2000
+ WM_NOTIFY
。消息反射的典型用途是将通知发送回其来源,以便所谓的子类控件可以自己处理通知。
因此,您可能缺少并查找文档的知识是控件WM_NOTIFY
以常规方式发送给其父级。并且父级SendMessage
使用消息号0x2000
+ original将相同的消息参数返回给控件Msg
。wParam
参数的含义lParam
应该与原始消息相同(WM_NOTIFY
在您的情况下)。
该常量0x2000
可能因框架而异,或者是控件和托管窗口之间的私有协议。
例如,MFC 和 ActiveX 控件反映WM_NOTIFY
使它们成为OCM_NOTIFY
消息的消息,其中 (olectl.h):
#define OCM_NOTIFY (OCM__BASE + WM_NOTIFY)
#define OCM__BASE (WM_USER+0x1c00)
最后(winuser.h):
#define WM_USER 0x0400
也就是说,OCM_NOTIFY
is 0x204E
,就像你的WM_REFLECT_NOTIFY
. 来自此处的 MSDN 文档:Reflected Window Message IDs。