Aktualisieren des Textes in der Statusleiste
Dieser Artikel wird beschrieben, wie der Text ändert, der in einem MFC-Statusleistenbereich wird. Eine - Statusleiste ein Window-Objekt der Klasse CStatusBar - Enthält verschiedene "Bereiche". Jeder Bereich ist ein rechteckiger Bereich der Statusleiste, die Sie verwenden können, um Informationen anzuzeigen. Beispielsweise zeigen viele Anwendungen den Status der FESTSTELLTASTE, des NUMs und anderer Schlüssel in den am weitesten rechts befindlichen Bereichen angezeigt. Anwendungen auch zeigen oft Informationskomponenten Text im linken Bereich (Bereich 0), den Meldungsbereich gelegentlich aufgerufen "." Beispielsweise verwendet die Statusleiste des Standardanbieters MFC den Meldungsbereich, um eine Zeichenfolge anzuzeigen, die das gerade ausgewählte Menüelement oder die Symbolleistenschaltfläche erläutert. Die Abbildung in Statusleisten wird eine Statusleiste von einer Anwendung Assistent-erstellten MFC-Anwendung an.
Standardmäßig aktiviert MFC keinen Bereich CStatusBar, wenn sie den Bereich erstellt. Um einen Bereich zu aktivieren, müssen Sie das ON_UPDATE_COMMAND_UI-Makro für jeden Bereich der Statusleiste verwenden und Bereiche aktualisiert. Da Bereiche nicht WM_COMMAND Meldungen (nicht z Symbolleisten-Schaltflächen), Senden, müssen Sie den Code manuell eingeben.
Angenommen, ein Bereich ID_INDICATOR_PAGE als Befehlskennzeichen verfügt und dem er die aktuelle Seitenzahl in einem Dokument enthält. Die folgende Prozedur beschreibt, wie Sie einen neuen Bereich in der Statusleiste.
Um einen neuen Bereich erstellen
Definieren Sie ID der Befehl des Bereichs
Klicken Sie im Menü Ansicht auf Ressourcenansicht. Klicken Sie auf die Projektressource mit der rechten Maustaste auf Ressourcensymbole. Im Ressourcen-Symboldialogfeld klicken Sie auf New. Geben Sie einen Befehls-ID-Namen ein: beispielsweise ID_INDICATOR_PAGE. Geben Sie einen Wert für die ID, oder übernehmen Sie den Wert, der vom Ressourcen-Symboldialogfeld vorgeschlagen wird. Für ID_INDICATOR_PAGE, übernehmen Sie den Standardwert. Schließen Sie das Ressourcen-Symboldialogfeld.
Definieren einer Standardzeichenfolge, im Bereich anzuzeigen.
Mit der Ressourcenansicht geöffnet, doppelklicken Sie im Fenster Zeichenfolgentabelle Ressourcentypen, das für die Anwendung enthält. geöffnetem Zeichenfolgentabelle Editor, wählen Sie Neue Zeichenfolge im Menü Einfügen aus. Im Zeichenfolgen-Eigenschaftenfenster wählen Sie die Befehls-ID des Panels (beispielsweise, ID_INDICATOR_PAGE) aus und geben Sie einen Standard-Zeichenfolgenwert, wie "Seite" ein. Schließen Sie den Editor. (Sie benötigen eine Standardzeichenfolge, um einen Compilerfehler zu vermeiden.)
Fügen Sie dem Bereich dem Array Indikatoren hinzu.
In der Datei MAINFRM.CPP, suchen Sie das Indikatoren Array. Dies Matrixlistebefehls-ids für alle Indikatoren der Statusleiste, in Reihenfolge von links nach rechts. Am entsprechenden Punkt im Array, geben Sie der Befehls-ID des Bereichs, wie hier gezeigt für ID_INDICATOR_PAGE ein:
static UINT indicators[] = { ID_SEPARATOR, // status line indicator ID_INDICATOR_CAPS, ID_INDICATOR_NUM, ID_INDICATOR_SCRL, ID_INDICATOR_PAGE, };
Die empfohlene Methode, Text in einem Bereich anzuzeigen, die SetText-Memberfunktion der CCmdUI-Klasse in einer Aktualisierungshandlerfunktion für den Bereich aufzurufen. Beispielsweise sollten Sie eine ganzzahlige m_nPage installieren, die die aktuelle Seitenzahl und die Verwendung von SetText, enthält den Text des Bereichs auf eine Angabe dieser Zahl festzulegen.
Hinweis
Der SetText ist die empfohlene Vorgehensweise.Es ist möglich, diese Aufgabe mit einem etwas auf der untersten Ebene auszuführen, indem die CStatusBar-Memberfunktion SetPaneText aufruft.Dennoch müssen jedoch weiterhin einen Aktualisierungshandler.Ohne einen solchen Handler für den Bereich, deaktiviert MFC automatisch den Bereich und löscht den Inhalt.
Die folgende Prozedur zeigt, wie eine Aktualisierungshandlerfunktion verwendet, um Text in einem Bereich anzeigen.
Um einen Bereich erstellen, Text anzuzeigen
Fügen Sie einem Befehlsaktualisierungshandler für den Befehl hinzu.
Fügen Sie manuell einen Prototyp für den Handler, wie hier gezeigt für ID_INDICATOR_PAGE (in MAINFRM.H):
afx_msg void OnUpdatePage(CCmdUI *pCmdUI);
In der entsprechenden CPP-Datei fügen Sie die Definition des Handlers, wie hier gezeigt für ID_INDICATOR_PAGE (in MAINFRM.CPP):
void CMainFrame::OnUpdatePage(CCmdUI *pCmdUI) { pCmdUI->Enable(); CString strPage; strPage.Format(_T("Page %d"), m_nPage); pCmdUI->SetText(strPage); }
Die letzten drei Zeilen dieser Handler sind der Code, der den Text anzeigt.
In der entsprechenden Meldungszuordnung fügen Sie dem ON_UPDATE_COMMAND_UI-Makro, wie hier gezeigt für ID_INDICATOR_PAGE (in MAINFRM.CPP):
ON_UPDATE_COMMAND_UI(ID_INDICATOR_PAGE, &CMainFrame::OnUpdatePage)
Sobald Sie den Wert der m_nPage der Membervariable (Klasse CMainFrame) definieren, Ursachen dieser Technik die Seitenzahl, den Gültigkeitsbereich der Leerlaufverarbeitung dass auf die gleiche Weise angezeigt werden, die Anwendung weitere Indikatoren aktualisiert. Wenn m_nPage ändert, ändert sich die Anzeige während der nächsten Leerlaufschleife.