Microsoft Visual C++ и MFC. Программирование для Win95 и WinNT

       

Метод PreTranslateAppMessage класса CSplashWnd


Класс CSplashWnd имеет свою таблицу сообщений. Так как в классе CSplashWnd переопределен метод PreTranslateAppMessage, то он вызывается для каждого сообщения, поступающего в это окно перед его обработкой.

В самом начале метод PreTranslateAppMessage проверяет, существует ли окно заставки. Если нет, то дополнительная обработка сообщений не выполняется:

if (c_pSplashWnd == NULL)

   return FALSE;

Когда окно заставки уже создано, метод PreTranslateAppMessage определяет тип сообщения. Если сообщение поступило от мыши или клавиатуры, то для окна заставки, представленного объектом c_pSplashWnd, вызывается метод HideSplashScreen, который его закрывает не дожидаясь первого сообщения от таймера. Метод PreTranslateAppMessage в этом случае возвращает значение TRUE и обработка сообщения завершается:

if (pMsg->message == WM_KEYDOWN

   pMsg->message == WM_SYSKEYDOWN

   pMsg->message == WM_LBUTTONDOWN

   pMsg->message == WM_RBUTTONDOWN

   pMsg->message == WM_MBUTTONDOWN

   pMsg->message == WM_NCLBUTTONDOWN

   pMsg->message == WM_NCRBUTTONDOWN

   pMsg->message == WM_NCMBUTTONDOWN)

{

   c_pSplashWnd->HideSplashScreen();

   return TRUE;   // message handled here

}

Если поступило какое-либо другое сообщение, метод PreTranslateAppMessage возвращает значение FALSE и оно передается далее для дальнейшей обработки:

return FALSE;



Содержание раздела