Freigeben über


Aktualisieren des Textes in der Statusleiste

In diesem Artikel wird erläutert, wie Sie den Text ändern, der in einem MFC-Statusleistenbereich angezeigt wird. Eine Statusleiste – ein Fensterobjekt der Klasse CStatusBar – enthält mehrere "Bereiche". Jeder Bereich ist ein rechteckiger Bereich der Statusleiste, den Sie zum Anzeigen von Informationen verwenden können. Viele Anwendungen zeigen z. B. den Status der FESTSTELLTASTE, DER NUM-TASTE und anderer Tasten im äußerst rechten Bereich an. Anwendungen zeigen auch häufig informativen Text im äußerst linken Bereich (Bereich 0) an, manchmal auch als "Nachrichtenbereich" bezeichnet. Die Standardmäßige MFC-Statusleiste verwendet beispielsweise den Nachrichtenbereich, um eine Zeichenfolge anzuzeigen, die das aktuell ausgewählte Menüelement oder die Symbolleistenschaltfläche erläutert. Die Abbildung in Statusleisten zeigt eine Statusleiste aus einer vom Anwendungs-Assistenten erstellten MFC-Anwendung.

MFC aktiviert CStatusBar standardmäßig keinen Bereich, wenn er den Bereich erstellt. Zum Aktivieren eines Bereichs müssen Sie das ON_UPDATE_COMMAND_UI Makro für jeden Bereich auf der Statusleiste verwenden und die Bereiche aktualisieren. Da Bereiche keine WM_COMMAND Nachrichten senden (sie sind nicht wie Symbolleistenschaltflächen), müssen Sie den Code manuell eingeben.

Angenommen, ein Bereich weist ID_INDICATOR_PAGE den Befehlsbezeichner auf und enthält die aktuelle Seitenzahl in einem Dokument. Im folgenden Verfahren wird das Erstellen eines neuen Bereichs in der Statusleiste beschrieben.

So erstellen Sie einen neuen Bereich

  1. Definieren Sie die Befehls-ID des Bereichs.

    Klicken Sie im Menü "Ansicht" auf "Ressourcenansicht". Klicken Sie mit der rechten Maustaste auf die Projektressource, und klicken Sie dann auf "Ressourcensymbole". Klicken Sie im Dialogfeld "Ressourcensymbole" auf New. Geben Sie einen Befehls-ID-Namen ein: ID_INDICATOR_PAGEz. B. . Geben Sie einen Wert für die ID an, oder akzeptieren Sie den vom Dialogfeld "Ressourcensymbole" vorgeschlagenen Wert. Akzeptieren Sie z. B. für ID_INDICATOR_PAGE" den Standardwert. Schließen Sie das Dialogfeld "Ressourcensymbole".

  2. Definieren Sie eine Standardzeichenfolge, die im Bereich angezeigt werden soll.

    Doppelklicken Sie bei geöffneter Ressourcenansicht im Fenster auf "Zeichenfolgentabelle ", in dem Ressourcentypen für Ihre Anwendung aufgelistet sind. Wählen Sie im geöffneten Zeichenfolgentabellen-Editor im Menü "Einfügen" die Option "Neue Zeichenfolge" aus. Wählen Sie die Befehls-ID Ihres Bereichs (z. B. ) aus, ID_INDICATOR_PAGEund geben Sie einen Standardzeichenfolgenwert ein, z. B. "Seite". Schließen Sie den Zeichenfolgen-Editor. (Sie benötigen eine Standardzeichenfolge, um einen Compilerfehler zu vermeiden.)

  3. Fügen Sie den Bereich zum Indikatorenarray hinzu.

    In Datei MAINFRM. CPP, suchen Sie das Indikatorenarray . Dieses Array listet Befehls-IDs für alle Indikatoren der Statusleiste in der Reihenfolge von links nach rechts auf. Geben Sie am entsprechenden Punkt im Array die Befehls-ID Ihres Bereichs ein, wie hier gezeigt für ID_INDICATOR_PAGE:

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

Die empfohlene Möglichkeit zum Anzeigen von Text in einem Bereich besteht darin, die SetText Memberfunktion der Klasse CCmdUI in einer Updatehandlerfunktion für den Bereich aufzurufen. Sie können z. B. eine ganzzahlige Variable m_nPage einrichten, die die aktuelle Seitenzahl enthält, und den SetText Text des Bereichs auf eine Zeichenfolgenversion dieser Zahl festlegen.

Hinweis

Der SetText Ansatz wird empfohlen. Es ist möglich, diese Aufgabe auf einer etwas niedrigeren Ebene auszuführen, indem sie die CStatusBar Memberfunktion aufruft SetPaneText. Dennoch benötigen Sie einen Updatehandler. Ohne einen solchen Handler für den Bereich deaktiviert MFC den Bereich automatisch, löscht dessen Inhalt.

Das folgende Verfahren zeigt, wie Sie mithilfe einer Updatehandlerfunktion Text in einem Bereich anzeigen.

So erstellen Sie einen Bereichsanzeigetext

  1. Fügen Sie einen Befehlsaktualisierungshandler für den Befehl hinzu.

    Fügen Sie manuell einen Prototyp für den Handler hinzu, wie hier ID_INDICATOR_PAGE gezeigt (in MAINFRM). H):

    afx_msg void OnUpdatePage(CCmdUI* pCmdUI);
    
  2. In der entsprechenden . Fügen Sie die CPP-Datei hinzu, wie hier ID_INDICATOR_PAGE gezeigt (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 dieses Handlers sind der Code, der Den Text anzeigt.

  3. Fügen Sie in der entsprechenden Nachrichtenzuordnung das ON_UPDATE_COMMAND_UI Makro hinzu, wie hier ID_INDICATOR_PAGE gezeigt (in MAINFRM). CPP):

    ON_UPDATE_COMMAND_UI(ID_INDICATOR_PAGE, &CMainFrame::OnUpdatePage)
    

Nachdem Sie den Wert der m_nPage Membervariable (der Klasse CMainFrame) definiert haben, bewirkt diese Technik, dass die Seitenzahl im Bereich während der Leerlaufverarbeitung auf die gleiche Weise angezeigt wird, wie die Anwendung andere Indikatoren aktualisiert. Wenn sich m_nPage ändert, ändert sich die Anzeige während der nächsten Leerlaufschleife.

Was möchten Sie mehr über

Siehe auch

Implementieren der Statusleiste mit MFC
CStatusBar-Klasse