Вопрос № 70589: Не знаю куда задать вопрос сюда или в рассылку по С++.
Подскажите как приложение получает сообщения от Windows, с помощью цикла и оконной процедуры.
Я понимаю что сообщение извлекается циклом обраб.сообщений ф-ей GetMessage(), далее если все<...Вопрос № 70590: Хотел сказать DispatchMessage.
Не знаю куда задать вопрос сюда или в рассылку по С++.
Подскажите как приложение получает сообщения от Windows, с помощью цикла и оконной процедуры.
Я понимаю что сообщение извлекается циклом обраб.сообщений...
Вопрос № 70.589
Не знаю куда задать вопрос сюда или в рассылку по С++.
Подскажите как приложение получает сообщения от Windows, с помощью цикла и оконной процедуры.
Я понимаю что сообщение извлекается циклом обраб.сообщений ф-ей GetMessage(), далее если все
нормально переается в оконную процедуру, а дальше...
И еще, ф-я GetMessage() если передает сообщение далее,
то куда, сразу в оконную ф-ю, или через Windows?
Приложение:
Отправлен: 12.01.2007, 09:38
Вопрос задал: DEVILL (статус: Посетитель)
Всего ответов: 1 Мини-форум вопроса >>> (сообщений: 1)
Отвечает: IceWolf
Здравствуйте, DEVILL!
Функция GetMessage извлекает сообщение из очереди, далее оно передаётся функции DispathMessage, которая (через Windows, как Вы и сказали) передаёт его в оконную функцию. Т.е. оконная функция-функция обратного вызова (callback):пишете её Вы, а вызывается она из Windows. Внутри оконной функции вы обрабатываете сообщение (например получаете код символа, если это WM_CHAR, прорисовываете клиентскую область, если это WM_PAINT, etc.) или если Вы нежелаеты его обрабатывать передаёте сообщение функции DefWindowProc.
С уваженем, IceW0|f.
--------- Идеальных защит не существует, ибо то, что создано человеческим разумом, им же будет и разрушено!
Ответ отправил: IceWolf (статус: 6-ой класс)
Ответ отправлен: 13.01.2007, 20:22
Вопрос № 70.590
Хотел сказать DispatchMessage.
Не знаю куда задать вопрос сюда или в рассылку по С++.
Подскажите как приложение получает сообщения от Windows, с помощью цикла и оконной процедуры.
Я понимаю что сообщение извлекается циклом обраб.сообщений ф-ей DispatchMessage(), далее если все
нормально переается в оконную процедуру, а дальше...
И еще, ф-я DispatchMessage() если передает сообщение далее,
то куда, сразу в оконную ф-ю, или через Windows?
Отправлен: 12.01.2007, 09:41
Вопрос задал: DEVILL (статус: Посетитель)
Всего ответов: 1 Мини-форум вопроса >>> (сообщений: 0)
Отвечает: Sergey A. Wedensky
Здравствуйте, DEVILL!
Функция GetMessage извлекает сообщение из очереди сообщений вызывающего потока. Для главного потока приложения это действительно обычно делается в WinMain в цикле обработки сообщений:
while (GetMessage())
{
// ... TranslateMessage(), если используются акселераторы
DispatchMessage();
// ...
}
DispatchMessage вызывает оконную функцию, ассоциированную с окном, хэндл которого пришел в сообщении (оконная функция указывается при регистрации класса окна).
Оконная функция обрабатывает сообщение и может выполнить некоторые действия в зависимости от uMsg, wParam, lParam, получить время прихода сообщения и координаты мыши (GetMessageTime и GetMessagePos) и/либо вызвать DefWindowProc. И все, дальше ничего.
Ответ отправил: Sergey A. Wedensky (статус: 10-ый класс)
Ответ отправлен: 12.01.2007, 11:15