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
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říkladID_INDICATOR_PAGE
. Zadejte hodnotu PRO ID nebo přijměte hodnotu navrženou dialogem Symboly zdrojů. Například přijměteID_INDICATOR_PAGE
výchozí hodnotu. Zavřete dialogové okno Symboly zdrojů.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.)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
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);
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.
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