Где найти определение оконного сообщения WM_UAHDRAWMENUITEM (0x92)

Я пишу хук DLL, который обрабатывает сообщения рисования окна.
Я обнаружил, что для Vista и выше некоторые неизвестные идентификаторы сообщений получены через DLL, а именно 0x90 ~ 0x95.
Я немного погуглил и нашел MSDN ссылка а также этот, который сказал мне, какое сообщение они:

#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 для обработки этого сообщения.
Мой вопрос: как приятно заменить жестко запрограммированный 0x92 макросом, определяемым Windows?

2

Решение

как приятно заменить жестко запрограммированный 0x92 на определенный в Windows макрос?

Очевидно, что ваша установленная версия Win32 SDK не имеет макросов, поэтому вы не можете их использовать. Но у вас есть #define значения, так что просто скопируйте / вставьте их прямо в ваш собственный код. Если вы хотите, вы можете обернуть их в #ifdef так что, если вы когда-нибудь обновитесь до версии SDK, которая имеет их изначально, будут использованы собственные макросы, в противном случае компилятор будет продолжать использовать ваши ручные макросы.

#ifndef WM_UAHDRAWMENUITEM
#define WM_UAHDRAWMENUITEM 0x0092
#endif
1

Другие решения


По вопросам рекламы [email protected]