Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RusFAQ.ru: Win API


РАССЫЛКИ ПОРТАЛА RUSFAQ.RU

/ КОМПЬЮТЕРЫ И ПО / Языки программирования / WinAPI

Выпуск № 380
от 17.01.2007, 10:05

Администратор:Калашников О.А.
В рассылке:Подписчиков: 398, Экспертов: 35
В номере:Вопросов: 2, Ответов: 2


Вопрос № 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


Отправить вопрос экспертам этой рассылки

Приложение (если необходимо):

* Код программы, выдержки из закона и т.п. дополнение к вопросу.
Эта информация будет отображена в аналогичном окне как есть.

Обратите внимание!
Вопрос будет отправлен всем экспертам данной рассылки!

Для того, чтобы отправить вопрос выбранным экспертам этой рассылки или
экспертам другой рассылки портала RusFAQ.ru, зайдите непосредственно на RusFAQ.ru.


Форма НЕ работает в почтовых программах The BAT! и MS Outlook (кроме версии 2003+)!
Чтобы отправить вопрос, откройте это письмо в браузере или зайдите на сайт RusFAQ.ru.


© 2001-2007, Портал RusFAQ.ru, Россия, Москва.
Идея, дизайн, программирование: Калашников О.А.
Email: adm@rusfaq.ru, Тел.: +7 (926) 535-23-31
ООО "Мастер-Эксперт Про", Москва, 2007
Авторские права | Реклама на портале
Версия системы: 4.40 beta от 14.01.2007
Яндекс Rambler's Top100

В избранное