РЕДАКТИРОВАТЬ: Удалить код, который я вставил сюда. Ошибка в моем коде приводила к описанному поведению (отсутствует break
в заявлении переключателя).
В switch
заявление, которое обрабатывало сообщения от GetMessage
Я добавил целочисленные значения для пары сообщений, для которых не определены псевдонимы (используя список, который я нашел здесь: http://www.mazama.net/scheme/v12/w32message.scm) с сообщениями, которые появляются, если одно из этих сообщений было получено. Я ожидал, что неназванные сообщения просто устаревают и никогда не появятся.
Я также попробовал код под WM_ACTIVATE
это должно было минимизировать окно, если бы я щелкнул по нему. Я что-то напутал, поэтому окно сворачивается, как только открывается, но это не то, что привело меня сюда. Как только окно открывается и сворачивается, появляется окно сообщения, сообщающее мне о отправленном Windows сообщении 9. Если я отклоняю его, окно сообщения снова появляется.
Так что меня удивило, кто-нибудь знает, какое событие вызывает это сообщение? Или, в этом отношении, любое из целочисленных значений, возвращаемых GetMessage, которые не имеют псевдонима? Все, что я нашел в списке сообщений Windows, пропускает те же цифры, что и ссылка, которую я разместил выше.
Сообщения с низким номером, которые не перечислены в общедоступных заголовочных файлах, скорее всего, являются устаревшими сообщениями Windows 3.1 (или более ранних версий), которые сохраняются для совместимости (или потому, что никто в Microsoft не решил, что это достаточно важно, чтобы удалить их).
Вы можете найти в них подсказку в различных проектах по замене Windows, таких как Wine или ReactOS. На самом деле, из заголовков ReactOS:
#define WM_SETVISIBLE 0x00000009
Это, кажется, предшественник WM_SHOWWINDOW
сообщение и отправляется одновременно с одинаковыми аргументами.
Я также нашел обсуждение сообщения 0x0004
в ветка новостной группы, о котором даже ReactOS, похоже, не знает. Там сообщение описано как WM_SIZEWAIT
но нет понятия о его функции.
Короче говоря, эти сообщения недокументированы по какой-то причине — они не нужны или не используются каким-либо программным обеспечением, для которого вы пишете, и вы должны просто игнорировать их.