WM_REFLECT_NOTIFY与WM_NOTIFY

时间:2012-05-17 13:57:23

标签: winapi window-messages windows-controls

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

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

示例参考:

1 个答案:

答案 0 :(得分:2)

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

因此,您可能缺少的知识和查找文档是控件以常规方式将WM_NOTIFY发送给其父级。并且父级使用消息编号SendMessage +原始0x2000将相同的消息参数返回到控件Msg。参数wParamlParam的含义应与原始消息(在您的情况下为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_NOTIFY0x204E,就像您的WM_REFLECT_NOTIFY一样。 MSDN上的文档来自此处:Reflected Window Message IDs