Aktualisieren des Texts eines Statusleisten-Bereichs

In diesem Artikel wird beschrieben, wie Sie den Text, der in einem MFC-Statusleisten Änderungen im Bereich angezeigt wird.Eine Statusleiste — Ein Fensterobjekt der CStatusBar — Klasse enthält mehrere "Bereiche". Jeder Bereich ist ein rechteckiger Bereich der Statusleiste bereit, die Sie verwenden können, um Informationen anzuzeigen.Viele Anwendungen veranschaulichen beispielsweise den Status der FESTSTELL-, des NUMs und anderer Schlüssel in den am weitesten rechts befindende Bereichen an.Anwendungen werden auch häufig informativen Text im äußersten linken Bereich (Bereich 0), manchmal als "Meldungen". Beispielsweise verwendet die Statusleiste des Standardwerts MFC den Bereich Meldungen anzuzeigen, eine Zeichenfolge, die das derzeit ausgewählte Menüelement oder die Symbolleisten-Schaltfläche erläutert.Die Abbildung zeigt eine Statusleiste in Statusleiste von einer Anwendung Assistent-erstellten MFC-Anwendung an.

Standardmäßig aktiviert MFC keinen CStatusBar Bereich, wenn er den Bereich erstellt.Um einen Bereich zu aktivieren, müssen Sie das ON_UPDATE_COMMAND_UI Makro für jeden Bereich auf der Statusleiste und die Bereiche aktualisieren.Da Bereiche nicht WM_COMMAND Meldungen (sie sind nicht wie Symbolleisten-Schaltflächen) senden, müssen Sie den Code manuell eingeben.

Nehmen Sie beispielsweise an, dass ein Bereich ID_INDICATOR_PAGE als Befehlsbezeichner enthält und dem er die aktuelle Seitenzahl in einem Dokument enthält.Im folgenden Verfahren wird beschrieben, wie ein neuer Bereich der Statusleiste erstellt wird.

So erstellen Sie einen neuen Bereich

  1. Definieren Sie den Befehl des Bereichs.

    Zeigen Sie im Menü Ansicht Ressourcenansicht.Klicken Sie mit der rechten Maustaste auf die Ressource, und klicken Sie auf Projekt Ressourcensymbole.Klicken Sie im Dialogfeld Ressourcen-Symbol auf New.Geben Sie einen Befehls-ID-Namen ein: Beispielsweise ID_INDICATOR_PAGE.Geben Sie einen Wert für die IDs dargestellt, oder übernehmen Sie den Wert, der vom Dialogfeld Ressourcen-Symbol vorgeschlagen wird.Zum Beispiel für ID_INDICATOR_PAGE, übernehmen Sie den Standardwert.Schließen Sie das Dialogfeld Ressourcen-Symbol.

  2. Definieren einer Standardzeichenfolge, die im Bereich anzuzeigen.

    Mit der Ressourcenansicht auf Öffnen, Zeichenfolgentabelle im Fenster, das Ressourcentypen für die Anwendung auflistet.Mit dem Zeichenfolgentabelle Editor öffnen, wählen Sie im Menü Einfügen Neue Zeichenfolge aus.Wählen Sie im Zeichenfolgen-Eigenschaftenfenster die Befehls-ID des Bereichs (z. B. ID_INDICATOR_PAGE) aus, und geben Sie einen Zeichenfolgenwert, z. B. "Page" ein.Schließen Sie den Zeichenfolgen-Editor.(Sie benötigen eine Zeichenfolge, um einen Compilerfehler.)

  3. Fügen Sie dem Bereich indicators Array hinzu.

    In der Datei MAINFRM.CPP, suchen Sie das indicators Array.Dieser Matrixliste-Befehl ID für die sämtliche Zähler der Statusleiste in der Reihenfolge von links nach rechts.Am entsprechenden Punkt im Array, geben Sie die 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, um Text in einen Bereich anzuzeigen, die SetText-Memberfunktion der Klasse CCmdUI in einer Aktualisierungshandler für Reservierungen für den Bereich aufzurufen.Beispielsweise können Sie eine ganzzahlige Variable m_nPage installieren, die die aktuelle Seitenzahl und die Verwendung SetText enthält den Text des Bereichs auf eine Zeichenfolgenversion diese Zahl festzulegen.

HinweisHinweis

Der SetText Vorgehensweise wird empfohlen.Es ist möglich, diese Aufgabe einem etwas auf der untersten Ebene auszuführen, indem die CStatusBarSetPaneText-Memberfunktion aufruft.Allerdings müssen Sie dennoch einen Aktualisierungshandler.Ohne einen solchen Handler für den Bereich des Bereichs automatisch deaktiviert, und löscht MFC deren Inhalt.

Das folgende Verfahren zeigt, wie eine Aktualisierungshandler Funktion verwendet, um Text in einen Bereich anzuzeigen.

So fügen Sie Text anzeigen, erstellen Sie einen Bereich

  1. Hinzufügen eines Befehls aktualisierungshandler 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);
    
  2. 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 diesem Handler ist der Code, der den Text anzeigt.

  3. In der entsprechenden Meldungszuordnung fügen Sie das 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-Membervariable (der Klasse CMainFrame) definieren, dass dieser Technik die Seitenzahl im Bereich während der Leerlaufverarbeitung dass auf diese Weise zu scheinbar die Anwendung andere Indikatoren aktualisiert.Wenn m_nPage ändert, ändert die Anzeige während der nächsten Ruheschleife.

a9ys3wsb.collapse_all(de-de,VS.110).gifWorüber möchten Sie mehr erfahren?

Siehe auch

Referenz

CStatusBar-Klasse

Konzepte

Statusleisten-Implementierung in MFC