Freigeben über


Andockbare und unverankerte Symbolleisten

Die Microsoft Foundation-Klassenbibliothek unterstützt dockbare Symbolleisten. Eine andockbare Symbolleiste kann an eine beliebige Seite des übergeordneten Fensters angefügt oder angedockt werden, oder sie kann in einem eigenen Miniframefenster getrennt oder schwebt werden. In diesem Artikel wird erläutert, wie Sie dockbare Symbolleisten in Ihren Anwendungen verwenden.

Wenn Sie den Anwendungs-Assistenten verwenden, um das Skelett Ihrer Anwendung zu generieren, werden Sie aufgefordert, auszuwählen, ob andockbare Symbolleisten verwendet werden sollen. Standardmäßig generiert der Anwendungs-Assistent den Code, der die drei erforderlichen Aktionen ausführt, um eine andockbare Symbolleiste in Ihrer Anwendung zu platzieren:

Wenn eines dieser Schritte fehlt, zeigt Ihre Anwendung eine Standardsymbolleiste an. Die letzten beiden Schritte müssen für jede andockbare Symbolleiste in Ihrer Anwendung ausgeführt werden.

Weitere Themen, die in diesem Artikel behandelt werden, sind:

Beispiele finden Sie im MFC General DOCKTOOL.See the MFC General sample DOCKTOOL for examples.

Aktivieren des Andockens in einem Framefenster

Um Symbolleisten an ein Rahmenfenster anzudocken, muss das Framefenster (oder ziel) aktiviert sein, um das Andocken zu ermöglichen. Dazu wird die CFrameWnd::EnableDocking-Funktion verwendet, die einen DWORD-Parameter verwendet, der eine Reihe von Formatvorlagenbits angibt, die angibt, welche Seite des Framefensters andocken kann. Wenn eine Symbolleiste angedockt werden soll und es mehrere Seiten gibt, an die sie angedockt werden könnte, werden die seiten, die in der übergebenen EnableDocking Parameter übergeben werden, in der folgenden Reihenfolge verwendet: oben, unten, links, rechts. Wenn Sie an einer beliebigen Stelle Steuerleisten andocken möchten, übergeben Sie CBRS_ALIGN_ANY an EnableDocking.

Aktivieren des Andockens für eine Symbolleiste

Nachdem Sie das Ziel für das Andocken vorbereitet haben, müssen Sie die Symbolleiste (oder Quelle) auf ähnliche Weise vorbereiten. Rufen Sie CControlBar::EnableDocking für jede Symbolleiste auf, die Sie andocken möchten, und geben Sie die Zielseiten an, an denen die Symbolleiste andocken soll. Wenn keine der im Aufruf CControlBar::EnableDocking angegebenen Seiten mit den Seiten übereinstimmt, die für das Andocken im Rahmenfenster aktiviert sind, kann die Symbolleiste nicht angedockt werden . Nachdem sie eingeflockt wurde, wird eine unverankerte Symbolleiste neu Standard, die nicht an das Rahmenfenster angedockt werden kann.

Wenn der gewünschte Effekt eine dauerhaft unverankerte Symbolleiste ist, rufen Sie EnableDocking mit einem Parameter von 0 auf. Rufen Sie dann CFrameWnd::FloatControlBar auf. Die Symbolleiste wird wieder Standard unverankert, kann nicht an einer beliebigen Stelle angedockt werden.

Andocken der Symbolleiste

Das Framework ruft CFrameWnd::D ockControlBar auf, wenn der Benutzer versucht, die Symbolleiste auf einer Seite des Framefensters abzulegen, das das Andocken zulässt.

Darüber hinaus können Sie diese Funktion jederzeit aufrufen, um Steuerleisten an das Rahmenfenster anzudocken. Dies erfolgt normalerweise während der Initialisierung. Mehrere Symbolleisten können an eine bestimmte Seite des Rahmenfensters angedockt werden.

Unverankerte Symbolleiste

Das Trennen einer dockbaren Symbolleiste aus dem Rahmenfenster wird als unverankerte Symbolleiste bezeichnet. Rufen Sie dazu CFrameWnd::FloatControlBar auf. Geben Sie die zu floatende Symbolleiste, den Punkt an, an dem sie platziert werden soll, und eine Ausrichtungsart, die bestimmt, ob die unverankerte Symbolleiste horizontal oder vertikal ist.

Das Framework ruft diese Funktion auf, wenn ein Benutzer eine Symbolleiste an seine angedockte Position zieht und sie an einer Stelle ablegt, an der das Andocken nicht aktiviert ist. Dies kann sich innerhalb oder außerhalb des Rahmenfensters befinden. Wie bei DockControlBarder Initialisierung können Sie diese Funktion auch aufrufen.

Die MFC-Implementierung von dockbaren Symbolleisten bietet nicht einige der erweiterten Features, die in einigen Anwendungen gefunden werden, die dockbare Symbolleisten unterstützen. Features wie anpassbare Symbolleisten werden nicht bereitgestellt.

Dynamisches Ändern der Größe der Symbolleiste

Ab Visual C++ Version 4.0 können Sie Benutzern Ihrer Anwendung ermöglichen, die Größe unverankerte Symbolleisten dynamisch zu ändern. In der Regel weist eine Symbolleiste eine lange, lineare Form auf, die horizontal angezeigt wird. Sie können jedoch die Ausrichtung der Symbolleiste und deren Form ändern. Wenn der Benutzer beispielsweise eine Symbolleiste an einer der vertikalen Seiten des Rahmenfensters verankert, ändert sich die Form in ein vertikales Layout. Es ist auch möglich, die Symbolleiste in ein Rechteck mit mehreren Schaltflächenzeilen umzugestalten.

Sie können Folgendes ausführen:

  • Geben Sie die dynamische Größenanpassung als Symbolleistenmerkmal an.

  • Geben Sie feste Größenanpassung als Symbolleistenmerkmal an.

Um diese Unterstützung bereitzustellen, gibt es zwei neue Symbolleistenstile für die Verwendung in Ihren Aufrufen der CToolBar::Create member function. Sie lauten wie folgt:

  • CBRS_SIZE_DYNAMIC Steuerleiste ist dynamisch.

  • CBRS_SIZE_FIXED Steuerelementleiste ist fest.

Mit der dynamischen Größe können Benutzer die Größe der Symbolleiste ändern, während sie unverankert ist, aber nicht, während sie angedockt ist. Die Symbolleiste wird bei Bedarf umgebrochen, um die Form zu ändern, während der Benutzer seine Ränder zieht.

Die feste Formatvorlage behält die Umbruchzustände einer Symbolleiste bei und korrigiert die Position der Schaltflächen in jeder Spalte. Der Benutzer Ihrer Anwendung kann die Form der Symbolleiste nicht ändern. Die Symbolleiste wird an bestimmten Stellen umbrochen, z. B. die Positionen von Trennzeichen zwischen den Schaltflächen. Sie Standard diese Form beibehalten, unabhängig davon, ob die Symbolleiste angedockt oder unverankert ist. Der Effekt ist eine feste Palette mit mehreren Spalten von Schaltflächen.

Sie können auch CToolBar::GetButtonStyle verwenden, um einen Zustand und eine Formatvorlage für Schaltflächen auf Ihren Symbolleisten zurückzugeben. Die Formatvorlage einer Schaltfläche bestimmt, wie die Schaltfläche angezeigt wird und wie sie auf Benutzereingaben reagiert. der Zustand gibt an, ob sich die Schaltfläche in einem umbrochenen Zustand befindet.

Festlegen von Umbruchpositionen für eine Symbolleiste mit fester Formatvorlage

Legen Sie für eine Symbolleiste mit fester Formatvorlage Indizes für symbolleistenschaltflächen fest, an denen die Symbolleiste umbrochen wird. Der folgende Code zeigt, wie Sie dies in der Außerkraftsetzung ihres Standard Rahmenfensters OnCreate tun:

// Get the style of the first button separator
UINT nStyle = m_wndToolBar.GetButtonStyle(3);
// Augment the state for wrapping
nStyle |= TBBS_WRAPPED;
m_wndToolBar.SetButtonStyle(3, nStyle);

// Do the same for other wrap locations ...

// Set the bar style to size fixed
m_wndToolBar.SetBarStyle(m_wndToolBar.GetBarStyle() |
   CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_FIXED);

// Call docking/floating functions as needed ...

Das MFC General DOCKTOOL-Beispiel zeigt, wie Memberfunktionen der Klassen CControlBar und CToolBar zum Verwalten des dynamischen Layouts einer Symbolleiste verwendet werden. Siehe die Datei EDITBAR. CPP in DOCKTOOL.

Was möchten Sie mehr über

Siehe auch

Implementieren der MFC-Symbolleiste