C++ 在何处查找窗口消息WM_UAHDRAWMENUITEM(0x92)的定义

C++ 在何处查找窗口消息WM_UAHDRAWMENUITEM(0x92)的定义,c++,windows,winapi,window-messages,C++,Windows,Winapi,Window Messages,我正在编写一个钩子dll,用于处理窗口绘图消息。 我发现对于Vista和更高版本,钩子dll接收到一些未知的消息id,特别是0x90~0x95。 我在谷歌上搜索了一下,发现了一个and,它告诉了我它们是什么: #define WM_UAHDESTROYWINDOW 0x0090 #define WM_UAHDRAWMENU 0x0091 #define WM_UAHDRAWMENUITEM 0x0092 #define WM_UAHINITMENU 0x0093 #define WM_UAHME

我正在编写一个钩子dll,用于处理窗口绘图消息。
我发现对于Vista和更高版本,钩子dll接收到一些未知的消息id,特别是0x90~0x95。
我在谷歌上搜索了一下,发现了一个and,它告诉了我它们是什么:

#define WM_UAHDESTROYWINDOW 0x0090
#define WM_UAHDRAWMENU 0x0091
#define WM_UAHDRAWMENUITEM 0x0092
#define WM_UAHINITMENU 0x0093
#define WM_UAHMEASUREMENUITEM 0x0094
#define WM_UAHNCPAINTMENUPOPUP 0x0095
但我在任何头文件中都找不到宏
WM_ahdrawmenuitem
的定义,编译器抱怨“未定义的符号”。我在“WM_UAHDRAWMENUITEM”上做了一次全局搜索,但什么也没找到

目前,我正在使用0x92处理此消息。
我的问题是:如何用Windows定义的宏很好地替换硬编码的0x92

如何用Windows定义的宏很好地替换硬编码的0x92

显然,您安装的Win32 SDK版本没有宏,因此无法使用它们。但是您有
#define
值,所以只需将它们直接复制/粘贴到您自己的代码中即可。如果需要,可以将它们包装在
#ifdef
中,这样,如果您升级到以本机方式拥有它们的SDK版本,则将使用本机宏,否则编译器将继续使用手动宏

#ifndef WM_UAHDRAWMENUITEM
#define WM_UAHDRAWMENUITEM 0x0092
#endif

通常,如果您找不到Windows消息的文档,则这些消息是不供外部使用的内部Windows消息。例如,使用风险由您自己承担。仅供参考,我已经记录了这些消息的作用以及经过一些尝试和错误后与它们相关的结构。它们用于在使用主题时绘制菜单栏。我想我将只使用整数0x92,并在其中留下注释。