Gravar o Loop de mensagem principal

O loop de mensagem principal de um aplicativo MDI é semelhante de um aplicativo MDI não manipulação de teclas de aceleração. A diferença é que o loop de mensagem do MDI chama a função TranslateMDISysAccel antes de verificar as chaves de accelerator application-defined ou antes de despachar a mensagem.

O exemplo a seguir mostra o loop de mensagem de um aplicativo MDI típico.

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

 

A função de TranslateMDISysAccel traduz WM_KEYDOWN mensagens WM_SYSCOMMAND mensagens e envia-los para a janela de filho MDI ativo. Se a mensagem não é uma mensagem de acelerador MDI, a função retorna FALSE, em cujo caso o aplicativo usa o TranslateAccelerator função para determinar se as chaves de accelerator application-defined de foram prensadas. Caso contrário, o loop envia a mensagem para o apropriado procedimento janela.