哪里可以找到窗口消息 WM_UAHDRAWMENUITEM (0x92) 的定义

ima*_*ish 5 c++ windows winapi window-messages

我正在编写一个钩子 dll,它处理窗口绘制消息。
我发现对于Vista及以上版本,hook dll会收到一些未知的消息id,特别是0x90 ~ 0x95。
我做了一些谷歌搜索,发现了一个msdn 链接this,它告诉我它们是什么消息:

#define WM_UAHDESTROYWINDOW 0x0090
#define WM_UAHDRAWMENU 0x0091
#define WM_UAHDRAWMENUITEM 0x0092
#define WM_UAHINITMENU 0x0093
#define WM_UAHMEASUREMENUITEM 0x0094
#define WM_UAHNCPAINTMENUPOPUP 0x0095
Run Code Online (Sandbox Code Playgroud)

但我在任何头文件中都找不到宏的定义WM_UAHDRAWMENUITEM,编译器抱怨“未定义的符号”。我对“WM_UAHDRAWMENUITEM”进行了全局搜索,但什么也没找到。

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

Rem*_*eau 5

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

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

#ifndef WM_UAHDRAWMENUITEM
#define WM_UAHDRAWMENUITEM 0x0092
#endif
Run Code Online (Sandbox Code Playgroud)