Kdy jsou volány obslužné rutiny aktualizace
Předpokládejme, že uživatel klikne myší v nabídce Soubor, která vygeneruje zprávu WM_INITMENUPOPUP. Mechanismus aktualizace architektury souhrnně aktualizuje všechny položky v nabídce Soubor před rozevírací nabídkou, aby ho uživatel viděl.
K tomu architektura směruje příkazy aktualizace pro všechny položky nabídky v místní nabídce podél standardního směrování příkazů. Cíle příkazů ve směrování mají možnost aktualizovat jakékoli položky nabídky tak, že odpovídají příkazu update s příslušnou položkou mapy zpráv (formuláře ON_UPDATE_COMMAND_UI
) a zavoláním funkce "obslužná rutina aktualizace". V případě nabídky se šesti položkami nabídky se tedy odešle šest aktualizačních příkazů. Pokud obslužná rutina aktualizace existuje pro ID příkazu položky nabídky, volá se k aktualizaci. Pokud ne, architektura zkontroluje existenci obslužné rutiny pro toto ID příkazu a podle potřeby povolí nebo zakáže položku nabídky.
Pokud architektura nenajde ON_UPDATE_COMMAND_UI
položku během směrování příkazů, automaticky povolí objekt uživatelského rozhraní, pokud existuje ON_COMMAND
položka někde se stejným ID příkazu. V opačném případě zakáže objekt uživatelského rozhraní. Proto chcete-li zajistit, aby byl objekt uživatelského rozhraní povolen, zadejte obslužnou rutinu pro příkaz, který objekt generuje nebo zadává obslužnou rutinu aktualizace. Podívejte se na obrázek v tématu Objekty uživatelského rozhraní a ID příkazů.
Výchozí zakázání objektů uživatelského rozhraní je možné zakázat. Další informace naleznete v m_bAutoMenuEnable člen třídy CFrameWnd
v mfc reference.
Inicializace nabídky je v rozhraní automatická, k němuž dochází, když aplikace obdrží WM_INITMENUPOPUP zprávu. Během nečinné smyčky rozhraní prohledává směrování příkazů obslužné rutiny aktualizace tlačítek stejným způsobem jako u nabídek.