На главную

On-line справка по Win32 API

Написать письмо
БЕСПЛАТНАЯ ежедневная online лотерея! Выигрывай каждый день БЕСПЛАТНО!
Список всех статей A-B-C-D-E-F-G-H-I-J-K-L-M-N-O-P-Q-R-S-T-U-V-W-X-Y-Z | Скачать Вниз

Writing the Main Message Loop



The main message loop of an MDI application is similar to that of a non-MDI application handling accelerator keys. The difference is that the MDI message loop calls the TranslateMDISysAccel function before checking for application-defined accelerator keys or before dispatching the message.

The following example shows the message loop of a typical MDI application.

while (GetMessage(&msg, (HWND) NULL, 0, 0))
{
if (!TranslateMDISysAccel(hwndMDIClient, &msg) &&
!TranslateAccelerator(hwndFrame, hAccel, &msg))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
}


The TranslateMDISysAccel function translates WM_KEYDOWN messages into WM_SYSCOMMAND messages and sends them to the active MDI child window. If the message is not an MDI accelerator message, the function returns FALSE, in which case the application uses the TranslateAccelerator function to determine whether any of the application-defined accelerator keys were pressed. If not, the loop dispatches the message to the appropriate window procedure.


Пригласи друзей и счет твоего мобильника всегда будет положительным!
Предыдущая статья
 
Сайт Народ.Ру Интернет
Следующая статья
Пригласи друзей и счет твоего мобильника всегда будет положительным!

Сочинение Основного Цикла Сообщения



Основной цикл сообщения приложения MDI подобный тому же самому не-приложению MDI, обрабатывающему ключи акселератора. Различие - в том, что цикл сообщения MDI вызывает функцию TranslateMDISysAccel перед проверкой на определенные прикладные ключи акселератора или перед отправкой сообщения.

Следующий пример показывает цикл сообщения типичного приложения MDI.

пока (GetMessage(&msg, (HWND) НЕДЕЙСТВИТЕЛЬНЫЙ, 0, 0))
{
если (!TranslateMDISysAccel(hwndMDIClient, &msg) && !TranslateAccelerator(hwndFrame, hAccel, &msg))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
}


Функция TranslateMDISysAccel переводится сообщения WM_KEYDOWN в сообщения WM_SYSCOMMAND и посылает им в активное окно ребенка MDI. Если сообщение не является сообщением акселератора MDI, функция возвращает ЛОЖЬ, в этом случае приложение использует функцию TranslateAccelerator, чтобы определять независимо любой из определенных прикладных ключей акселератора были нажаты. Если нет, цикл посылает сообщение в подходящую процедуру окна.


Вверх Version 1.3, Oct 26 2010 © 2007, 2010, mrhx Вверх
 mrhx software  Русский перевод OpenGL  Русский перевод Win32 API
 
Используются технологии uCoz