|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
28.10.2011, 01:33 | #1 |
Пользователь
Регистрация: 23.10.2011
Сообщений: 14
|
GetMessage
Код:
Насколько я понял, в случае, если нам приходит сообщение WM_KEYDOWN, TranslateMessage генерирует сообщение WM_CHAR о том, какой именно символ мы получили, а DispatchMessage просто отсылает это сообщение в главную функцию обработки сообщений. Тобишь, все сообщения, которые принимает главная функция обработки сообщений, приходят из GetMessage...? Что произойдет с WM_KEYDOWN после обработки в TranslateMessage, пропадет или будет отправлено вместе с WM_CHAR в главную функцию обработки сообщений? Если будет отправлено, то как именно это произойдет(как можно отправить сразу два сообщения в данном случае? Где они будут храниться и как именно будут отправлены...) Что нужно добавить в главную функцию обработки сообщений, чтобы доказать, что WM_KEYDOWN пропадет/не пропадет? |
28.10.2011, 07:14 | #2 |
C++,DirectX/OpenGL
Форумчанин
Регистрация: 09.01.2011
Сообщений: 422
|
Функция GetMessage извлекает сообщения из очереди сообщений. Если поле message сообщения, извлеченного из очереди сообщений, равно любому значению, кроме WM_QUIT, то функция GetMessage возвращает ненулевое значение.
Функция TranslateMessage передает структуру msg обратно в Windows для преобразования аппаратных сообщений клавиатуры в символьные сообщения. Если этим сообщением является M_KEYDOWN или WM_SYSKEYDOWN и, если нажатие клавиши в сочетании с положением клавиши сдвига генерирует символ, тогда TranslateMessage помещает символьное сообщение в очередь сообщений. Это символьное сообщение будет следующим, после сообщения о нажатии клавиши, которое функция GetMessage извлечет из очереди сообщений. Функция DispatchMessage также передает структуру msg обратно в Windows. Windows отправляет сообщение для его обработки соответствующей оконной процедуре — таким образом, Windows вызывает оконную процедуру. Есть синхронные сообщения они будут помещены в очередь и извлечены с помощью GetMessage. А есть асинхронные, которые сразу отправляются в оконную процедуру. |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Хук на GetMessage | HollyPaladin | Win Api | 19 | 16.01.2010 01:09 |