Grundlegendes über Symbolleisten

In diesem Artikel wird die grundlegende MFC-Implementierung beschrieben, mit der Sie Ihrer Anwendung eine Standardsymbolleiste hinzufügen können, indem Sie im Anwendungs-Assistenten eine Option auswählen. Folgende Themen werden behandelt:

Die Symbolleistenoption des Anwendungs-Assistenten

Um eine einzelne Symbolleiste mit Standardschaltflächen abzurufen, wählen Sie die Symbolleistenoption Standard andocken auf der Seite mit der Bezeichnung Benutzeroberfläche Features aus. Dadurch wird Ihrer Anwendung Code hinzugefügt, der:

  • Erstellt das Symbolleistenobjekt.

  • Verwaltet die Symbolleiste, einschließlich der Möglichkeit zum Andocken oder gleitend.

Die Symbolleiste im Code

Die Symbolleiste ist ein CToolBar-Objekt, das als Datenmember der -Klasse Ihrer Anwendung deklariert ist. Anders ausgedrückt: Das Symbolleistenobjekt ist in das Hauptrahmenfensterobjekt eingebettet. Dies bedeutet, dass MFC die Symbolleiste beim Erstellen des Rahmenfensters erstellt und die Symbolleiste zerstört, wenn das Rahmenfenster zerstört wird. Die folgende partielle Klassendeklaration für eine MDI-Anwendung (Multiple Document Interface) zeigt Datenmember für eine eingebettete Symbolleiste und eine eingebettete Statusleiste an. Außerdem wird die Überschreibung der OnCreate Memberfunktion angezeigt.

class CMainFrame : public CMDIFrameWnd
{
// Implementation
protected:  // control bar embedded members
   CStatusBar  m_wndStatusBar;
   CToolBar    m_wndToolBar;

// Generated message map functions
protected:
   afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct);
   DECLARE_MESSAGE_MAP()

Die Erstellung der Symbolleiste erfolgt in CMainFrame::OnCreate . MFC ruft OnCreate auf, nachdem das Fenster für den Frame erstellt wurde, aber bevor es sichtbar wird. Der OnCreate Anwendungs-Assistent generiert standardmäßig die folgenden Symbolleistenaufgaben:

  1. Ruft die CToolBarCToolBar des Objekts auf, um das zugrunde liegende CToolBarCtrl-Objekt zu erstellen.

  2. Ruft LoadToolBar auf, um die Informationen zur Symbolleistenressource zu laden.

  3. Ruft Funktionen auf, um docking, floating und QuickInfos zu aktivieren. Ausführliche Informationen zu diesen Aufrufen finden Sie im Artikel Andocken und Unverankerte Symbolleisten.

Hinweis

Das MFC General Sample DOCKTOOL enthält Abbildungen von alten und neuen MFC-Symbolleisten. Die Symbolleisten, die verwenden, COldToolbar erfordern Aufrufe in Schritt 2 für LoadBitmap (anstelle LoadToolBar von ) und für SetButtons . Die neuen Symbolleisten erfordern Aufrufe von LoadToolBar .

Die Andock-, Unveranker- und QuickInfo-Aufrufe sind optional. Sie können diese Zeilen aus OnCreate entfernen, wenn Sie möchten. Das Ergebnis ist eine Symbolleiste, die fixiert bleibt, nicht float oder redocken kann und keine QuickInfos anzeigen kann.

Bearbeiten der Symbolleistenressource

Die Standardsymbolleiste, die Sie mit dem Anwendungs-Assistenten erhalten, basiert auf einer RT_TOOLBAR benutzerdefinierten Ressource, die in MFC Version 4.0 eingeführt wurde. Sie können diese Ressource mit dem Symbolleisten-Editorbearbeiten. Mit dem Editor können Sie Ganz einfach Schaltflächen hinzufügen, löschen und neu anordnen. Sie enthält einen grafischen Editor für die Schaltflächen, der dem allgemeinen Grafik-Editor in Visual C++ sehr ähnlich ist. Wenn Sie Symbolleisten in früheren Versionen von Visual C++ bearbeitet haben, ist die Aufgabe jetzt viel einfacher.

Um eine Symbolleistenschaltfläche mit einem Befehl zu verbinden, geben Sie der Schaltfläche eine Befehls-ID, z. ID_MYCOMMAND B. . Geben Sie die Befehls-ID auf der Eigenschaftenseite der Schaltfläche im Symbolleisten-Editor an. Erstellen Sie dann eine Handlerfunktion für den Befehl (weitere Informationen finden Sie unter Zuordnen von Nachrichten zu Funktionen).

Neue CToolBar-Memberfunktionen funktionieren mit der RT_TOOLBAR Ressource. LoadToolBar übernimmt nun loadBitmap, um die Bitmap der Symbolleisten-Schaltflächenbilder zu laden, und SetButtons, um die Schaltflächenstile festzulegen und Schaltflächen mit Bitmapbildern zu verbinden.

Ausführliche Informationen zur Verwendung des Symbolleisten-Editors finden Sie unter Symbolleisten-Editor.

Mehrere Symbolleisten

Der Anwendungs-Assistent stellt ihnen eine Standardsymbolleiste zur Verfügung. Wenn Sie in Ihrer Anwendung mehrere Symbolleisten benötigen, können Sie Ihren Code basierend auf dem vom Assistenten generierten Code für die Standardsymbolleiste nach zusätzlichen Symbolleisten modellieren.

Wenn Sie eine Symbolleiste als Ergebnis eines Befehls anzeigen möchten, müssen Sie Folgendes ausführen:

  • Erstellen Sie eine neue Symbolleistenressource mit dem Symbolleisten-Editor, und laden Sie sie OnCreate mit der OnCreate ein.

  • Betten Sie ein neues CToolBar-Objekt in ihre Hauptrahmenfensterklasse ein.

  • Nehmen Sie die entsprechenden Funktionsaufrufe in OnCreate vor, um die Symbolleiste anzudocken oder zu gleiten, ihre Stile festzulegen usw.

Worüber möchten Sie mehr wissen?

Weitere Informationen

MFC-Symbolleistenimplementierungen