我正在写一个钩子dll,它处理窗口绘图信息 我找到了Vista及以上版本,钩子dll收到了一些未知的消息ID,特别是0x90~0x95 我做了一些谷歌搜索,找到了msdn link和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
但我在任何头文件中找不到宏WM_UAHDRAWMENUITEM
的定义,编译器抱怨“未定义的符号”。我对“WM_UAHDRAWMENUITEM”进行了全局搜索,但一无所获。
目前我正在使用0x92来处理此消息 我的问题是:如何用Windows定义的宏很好地替换硬编码的0x92?
答案 0 :(得分:1)
如何用Windows定义的宏很好地替换硬编码的0x92?
显然,您安装的Win32 SDK版本没有宏,因此您无法使用它们。但是您拥有#define
值,因此只需将它们直接复制/粘贴到您自己的代码中即可。如果需要,可以将它们包装在#ifdef
中,这样如果您升级到原生的SDK版本,将使用本机宏,否则编译器将继续使用您的手动宏。
#ifndef WM_UAHDRAWMENUITEM
#define WM_UAHDRAWMENUITEM 0x0092
#endif