Sdílet prostřednictvím


Aktualizace textu na panelu stavového řádku

Tento článek vysvětluje, jak změnit text, který se zobrazí v podokně stavového řádku MFC. Stavový řádek – objekt okna třídy CStatusBar – obsahuje několik "podoken". Každé podokno je obdélníková oblast stavového řádku, kterou můžete použít k zobrazení informací. Mnoho aplikací například zobrazuje stav CAPS LOCK, NUM LOCK a dalších kláves v podoknech úplně vpravo. Aplikace také často zobrazují informativní text v levém podokně (podokno 0), někdy označovaný jako "podokno zpráv". Například výchozí stavový řádek MFC používá podokno zpráv k zobrazení řetězce vysvětlujícího aktuálně vybranou položku nabídky nebo tlačítko panelu nástrojů. Obrázek na stavových úsečech znázorňuje stavový řádek z aplikace vytvořené průvodcem MFC.

Prostředí MFC ve výchozím nastavení nepovoluje CStatusBar podokno při vytváření podokna. Pokud chcete aktivovat podokno, musíte použít makro ON_UPDATE_COMMAND_UI pro každé podokno na stavovém řádku a aktualizovat podokna. Protože podokna neodesílají WM_COMMAND zprávy (nejsou to jako tlačítka panelu nástrojů), musíte kód zadat ručně.

Předpokládejme například, že jedno podokno má ID_INDICATOR_PAGE jako identifikátor příkazu a obsahuje aktuální číslo stránky v dokumentu. Následující postup popisuje, jak vytvořit nové podokno na stavovém řádku.

Vytvoření nového podokna

  1. Definujte ID příkazu podokna.

    V nabídce Zobrazení klikněte na Zobrazení zdrojů. Klikněte pravým tlačítkem myši na zdroj projektu a klikněte na Symboly zdrojů. V dialogovém okně Symboly zdrojů klepněte na tlačítko New. Zadejte název ID příkazu: například ID_INDICATOR_PAGE. Zadejte hodnotu PRO ID nebo přijměte hodnotu navrženou dialogem Symboly zdrojů. Například přijměte ID_INDICATOR_PAGEvýchozí hodnotu. Zavřete dialogové okno Symboly zdrojů.

  2. Definujte výchozí řetězec, který se má zobrazit v podokně.

    V otevřeném zobrazení zdrojů poklikejte na Tabulku řetězců v okně se seznamem typů prostředků pro vaši aplikaci. V otevřeném editoru tabulky řetězců zvolte v nabídce Vložit nový řetězec. Vyberte ID příkazu podokna (například ID_INDICATOR_PAGE) a zadejte výchozí řetězcovou hodnotu, například Stránka. Zavřete editor řetězců. (Abyste se vyhnuli chybě kompilátoru, potřebujete výchozí řetězec.)

  3. Přidejte podokno do pole indikátorů .

    V souboru MAINFRM. CPP, vyhledejte pole indikátorů . Toto pole obsahuje ID příkazů pro všechny indikátory stavového řádku v pořadí odleva doprava. V příslušném bodě pole zadejte ID příkazu podokna, jak je znázorněno zde ID_INDICATOR_PAGE:

    static UINT indicators[] =
    {
       ID_SEPARATOR,           // status line indicator
       ID_INDICATOR_CAPS,
       ID_INDICATOR_NUM,
       ID_INDICATOR_SCRL,
       ID_INDICATOR_PAGE,
    };
    

Doporučeným způsobem zobrazení textu v podokně je volání SetText členské funkce třídy CCmdUI ve funkci obslužné rutiny aktualizace pro podokno. Můžete například chtít nastavit celočíselnou proměnnou m_nPage , která obsahuje aktuální číslo stránky a použít SetText k nastavení textu podokna na řetězcovou verzi tohoto čísla.

Poznámka

Tento SetText přístup se doporučuje. Tento úkol je možné provést na mírně nižší úrovni voláním CStatusBar členské funkce SetPaneText. I tak stále potřebujete obslužnou rutinu aktualizace. Bez takové obslužné rutiny pro podokno mfc automaticky zakáže podokno a vymaže jeho obsah.

Následující postup ukazuje, jak pomocí funkce obslužné rutiny aktualizace zobrazit text v podokně.

Vytvoření zobrazovaného textu podokna

  1. Přidejte obslužnou rutinu aktualizace příkazu.

    Ručně přidejte prototyp obslužné rutiny, jak je znázorněno zde ID_INDICATOR_PAGE (v MAINFRM). H):

    afx_msg void OnUpdatePage(CCmdUI* pCmdUI);
    
  2. V příslušném případě . Soubor CPP přidejte definici obslužné rutiny, jak je znázorněno zde ID_INDICATOR_PAGE (v MAINFRM. CPP):

    void CMainFrame::OnUpdatePage(CCmdUI* pCmdUI)
    {
       pCmdUI->Enable();
       CString strPage;
       strPage.Format(_T("Page %d"), m_nPage);
       pCmdUI->SetText(strPage);
    }
    

    Poslední tři řádky této obslužné rutiny jsou kód, který zobrazuje váš text.

  3. Do příslušné mapy zpráv přidejte makro ON_UPDATE_COMMAND_UI, jak je znázorněno zde ID_INDICATOR_PAGE (v MAINFRM). CPP):

    ON_UPDATE_COMMAND_UI(ID_INDICATOR_PAGE, &CMainFrame::OnUpdatePage)
    

Jakmile definujete hodnotu m_nPage členské proměnné (třídy CMainFrame), tato technika způsobí, že se číslo stránky zobrazí v podokně během zpracování nečinnosti stejným způsobem, jakým aplikace aktualizuje další indikátory. Pokud m_nPage změny, zobrazení se změní během další nečinné smyčky.

O čem chcete vědět víc

Viz také

Implementace stavového řádku v prostředí MFC
CStatusBar – třída