1

WM_NOTIFY的文档很容易找到,但是我找到了大量引用的示例代码和文章,WM_REFLECT_NOTIFY但我找不到任何文档。

什么是WM_REFLECT_NOTIFY,我在哪里可以找到它的文档以及此消息与此有何不同WM_NOTIFY

示例参考:

4

1 回答 1

3

WM_REFLECT_NOTIFY被称为具有 的值0x204E,即0x2000+ WM_NOTIFY。消息反射的典型用途是将通知发送回其来源,以便所谓的子类控件可以自己处理通知。

因此,您可能缺少并查找文档的知识是控件WM_NOTIFY以常规方式发送给其父级。并且父级SendMessage使用消息号0x2000+ original将相同的消息参数返回给控件MsgwParam参数的含义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_NOTIFYis 0x204E,就像你的WM_REFLECT_NOTIFY. 来自此处的 MSDN 文档:Reflected Window Message IDs

于 2012-05-17T14:41:25.627 回答