Pisanie Pętla wiadomości głównego

Pętla głównym przesłaniem stosowania MDI jest podobna do tej aplikacji nie MDI obsługi klawiszy skrótu. Różnica jest, że pętla wiadomości MDI wywołuje funkcję TranslateMDISysAccel , przed sprawdzanie klawisze przyśpieszające zdefiniowanych przez aplikację lub wysyłanie wiadomości.

W poniższym przykładzie pokazano pętli komunikatów Typowa aplikacja MDI.

podczas gdy (GetMessage (amp; msg, NULL (HWND), 0, 0)) {Jeżeli (!TranslateMDISysAccel (hwndMDIClient & msg) & &!TranslateAccelerator (hwndFrame, hAccel & msg))
    {TranslateMessage(&msg); 
        DispatchMessage(&msg); 
    } 
} 

 

Funkcja TranslateMDISysAccel tłumaczy WM_KEYDOWN wiadomości na WM_SYSCOMMAND wiadomości i wysyła je do aktywnego okna podrzędnych MDI. Jeśli wiadomość nie jest wiadomością akceleratora MDI, funkcja zwraca wartość FALSE, w którym to przypadku aplikacja używa funkcji TranslateAccelerator do określenia, czy wydano klawiszy skrótu zdefiniowanych przez aplikację. W przeciwnym razie pętli wysyła wiadomość do procedury odpowiedniego okna.