2014-11-09 5 views
0

EDIT: Удалить код, который я вставил здесь. Ошибка в моем коде вызывала описанное поведение (отсутствует оператор break в инструкции switch).Сообщение Windows 9 из GetMessage?

В switch заявления, что обрабатываются сообщения от GetMessage, я бросил в целых значениях в течение нескольких сообщений, которые не имеют алиасов (с помощью списка я нашел здесь: http://www.mazama.net/scheme/v12/w32message.scm) с окном сообщений, которые будут трещать, если одно из этих сообщений было получено. Я ожидал, что неназванные сообщения просто устарели и никогда не появятся.

Я также пробовал код под WM_ACTIVATE, который должен был минимизировать окно, если бы я щелкнул его. Я что-то испортил, поэтому окно сворачивает к минимуму, как только оно открывается, но это не привело меня сюда. Как только окно открывается и сводится к минимуму, появляется окно сообщения, чтобы сообщить мне сообщение, отправленное Windows 9. Если я его отклоню, окно сообщения снова появится.

Так что мне стало интересно, кто-нибудь знает, какое событие вызывает это сообщение? Или, если на то пошло, любое целое число, возвращаемое GetMessage, у которого нет псевдонима? Все, что я нашел, перечисляя сообщения Windows, пропускает те же номера, что и ссылка, которую я опубликовал выше.

+0

Похоже, что ваши заявления 'break' все вышли из соответствующих блоков. – Hosch250

+0

@ hosch250 Ты прав; Мне не хватало 'break' от части оператора' switch' непосредственно над той, которая должна была появиться в окне сообщения, поэтому WndProc фактически не получал это сообщение. Не знаю, как я это пропустил. Оставив вопрос для ответа ниже. – jmccracken

ответ

0

Сообщения с низким номером, которые не указаны в общедоступных заголовочных файлах, скорее всего, являются устаревшими сообщениями Windows 3.1 (или более ранних версий), которые сохраняются для совместимости (или потому, что никто в Microsoft не решил, что это достаточно важно, чтобы удалить их) ,

Вы можете найти ключ к ним в источнике для различных проектов замены Windows, таких как Wine или ReactOS. В самом деле, из заголовков ReactOS:

#define WM_SETVISIBLE  0x00000009 

Это, кажется, был предшественником WM_SHOWWINDOW сообщения и отправляется одновременно с теми же аргументами.

Я также нашел сообщение о сообщении 0x0004 в a newsgroup thread, о котором даже ReactOS, похоже, не знает. Там сообщение описано как WM_SIZEWAIT, но нет никакой подсказки его функции.

Короче говоря, эти сообщения недокументированы по какой-либо причине - они не нужны или не используются никаким программным обеспечением, которое вы, возможно, писали, и вы должны просто игнорировать их.

+0

Спасибо. Мне было любопытно, потому что я думал, что получаю это сообщение, но оказалось, что я не был (отсутствовал оператор 'break' из дела' WM_ACTIVATE' непосредственно над ним). Я подозреваю, что незарегистрированные никогда не получат их в очереди сообщений. – jmccracken