Вход в цикл обработки сообщений


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

Система не отправляет ввод данных непосредственно прикладной программе. Вместо этого она помещает все вводимые данные от мыши и клавиатуры от пользователя в очередь сообщений, наряду с сообщениями, посланными системой и другими приложениями. Приложение должно читать очередь сообщений, извлекать сообщения и распределять их так, чтобы оконная процедура могла обрабатывать их.

Обобщенное приложение использует нижеследующий цикл обработки сообщений:

BOOL bRet;

while( (bRet = GetMessage( &msg, NULL, 0, 0 )) != 0 ) 
{
   if (bRet == -1 )
   {
      // обработка ошибки и возможный выход из программы
   }
   else
   {
      TranslateMessage( &msg );
      DispatchMessage( &msg );
   }
}

Функция GetMessage извлекает сообщение из очереди. Функция DispatchMessage отправляет каждое сообщение соответствующей оконной процедуре. Функция TranslateMessage преобразует сообщение виртуальной клавиши в символьные сообщения. В Обобщенном приложении, это необходимо, чтобы реализовать клавиши доступа к меню.

 

Назад в оглавление
На главную страницу темы

Hosted by uCoz