Kiedy są wywoływane programy obsługi aktualizacji
Załóżmy, że użytkownik kliknie mysz w menu Plik, co spowoduje wygenerowanie komunikatu WM_INITMENUPOPUP. Mechanizm aktualizacji platformy zbiorczo aktualizuje wszystkie elementy w menu Plik przed menu rozwijanymi, aby użytkownik mógł go zobaczyć.
W tym celu platforma kieruje polecenia aktualizacji dla wszystkich elementów menu w menu podręcznym wzdłuż standardowego routingu poleceń. Obiekty docelowe poleceń w routingu mają możliwość zaktualizowania wszystkich elementów menu przez dopasowanie polecenia aktualizacji z odpowiednim wpisem mapy komunikatów (formularza ON_UPDATE_COMMAND_UI
) i wywołaniem funkcji "update handler". W związku z tym w przypadku menu z sześcioma elementami menu wysyłane są sześć poleceń aktualizacji. Jeśli program obsługi aktualizacji istnieje dla identyfikatora polecenia elementu menu, jest wywoływany w celu przeprowadzenia aktualizacji. Jeśli tak nie jest, struktura sprawdza istnienie programu obsługi dla tego identyfikatora polecenia i włącza lub wyłącza odpowiedni element menu.
Jeśli platforma nie znajdzie ON_UPDATE_COMMAND_UI
wpisu podczas routingu poleceń, automatycznie włączy obiekt interfejsu użytkownika, jeśli istnieje ON_COMMAND
wpis gdzieś o tym samym identyfikatorze polecenia. W przeciwnym razie wyłącza obiekt interfejsu użytkownika. W związku z tym, aby upewnić się, że obiekt interfejsu użytkownika jest włączony, podaj procedurę obsługi dla polecenia, które generuje obiekt lub podaj dla niego program obsługi aktualizacji. Zobacz rysunek w temacie User-Interface Objects and Command IDs (Obiekty interfejsu użytkownika i identyfikatory poleceń).
Można wyłączyć domyślne wyłączenie obiektów interfejsu użytkownika. Aby uzyskać więcej informacji, zobacz składowa m_bAutoMenuEnable klasy CFrameWnd
w dokumentacji MFC.
Inicjowanie menu jest automatyczne w strukturze, występujące po odebraniu przez aplikację komunikatu WM_INITMENUPOPUP. Podczas pętli bezczynności platforma wyszukuje routing poleceń dla programów obsługi aktualizacji przycisków w taki sam sposób, jak w przypadku menu.