Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Die Microsoft Foundation-Klassenbibliothek unterstützt dockbare Symbolleisten. Eine andockbare Symbolleiste kann an jeder Seite ihres übergeordneten Fensters befestigt bzw. angedockt werden, oder sie kann abgetrennt bzw. schwebend in ihrem eigenen Minirahmenfenster angezeigt 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:
Im MFC-General-Beispiel DOCKTOOL finden Sie Beispiele.
Aktivieren des Andockens in einem Framefenster
Um Symbolleisten an ein Rahmenfenster anzudocken, muss das Rahmenfenster (oder Ziel) aktiviert sein, um das Andocken zu ermöglichen. Dazu wird die CFrameWnd::EnableDocking-Funktion verwendet, die einen DWORD-Parameter entgegennimmt, der eine Reihe von Stilbits angibt, welche Seite des Rahmenfensters das Andocken erlaubt. Wenn eine Symbolleiste angedockt werden soll und es mehrere Seiten gibt, an die sie angedockt werden könnte, werden die Seiten, die im EnableDocking
Parameter angegeben sind, 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 übereinstimmen, die für das Andocken im Rahmenfenster aktiviert sind, kann die Symbolleiste nicht angedockt werden – sie wird dann schweben. Sobald sie schwebend wird, bleibt sie eine schwebende Symbolleiste, die nicht am Rahmenfenster angedockt werden kann.
Wenn der gewünschte Effekt eine dauerhaft schwebende Symbolleiste ist, rufen Sie EnableDocking
mit einem Parameter von 0 auf. Rufen Sie dann CFrameWnd::FloatControlBar auf. Die Symbolleiste bleibt schwebend und kann nirgendwo dauerhaft angedockt werden.
Andocken der Symbolleiste
Das Framework ruft CFrameWnd::DockControlBar auf, wenn der Benutzer versucht, die Symbolleiste auf einer Seite des Framefensters abzulegen, die 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.
Schwebende Symbolleiste
Das Trennen einer dockbaren Symbolleiste vom Rahmenfenster wird als Freischwebendmachen der Symbolleiste bezeichnet. Rufen Sie CFrameWnd::FloatControlBar auf, um dies zu tun. Geben Sie die Symbolleiste an, die floatend sein soll, den Punkt, an dem sie platziert werden soll, und einen Ausrichtungsstil, der bestimmt, ob die schwebende Symbolleiste horizontal oder vertikal ist.
Das Framework ruft diese Funktion auf, wenn ein Benutzer eine Symbolleiste von ihrer angedockten Position wegzieht 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 DockControlBar
können Sie diese Funktion auch während der Initialisierung 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 von unverankerten 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 haben folgende Möglichkeiten:
Geben Sie die dynamische Größenanpassung als Symbolleistenmerkmal an.
Geben Sie feste Größe als Merkmal der Symbolleiste an.
Um diese Unterstützung bereitzustellen, gibt es zwei neue Symbolleistenstile zur Verwendung in Ihren Aufrufen der CToolBar::Create-Mitgliedsfunktion. Sie lauten wie folgt:
CBRS_SIZE_DYNAMIC Die Steuerleiste ist dynamisch.
CBRS_SIZE_FIXED Die Steuerleiste ist fest.
Mit dem dynamischen Größenstil können Benutzer die Größe der Werkzeugleiste anpassen, während sie schwebend ist, aber nicht, während sie angedockt ist. Die Symbolleiste wird bei Bedarf umgebrochen, um ihre Form zu ändern, während der Benutzer die Ränder zieht.
Die feste Formatvorlage behält die Umbruchzustände einer Symbolleiste bei und legt die Position der Schaltflächen in jeder Spalte fest. Der Benutzer Ihrer Anwendung kann die Form der Symbolleiste nicht ändern. Die Symbolleiste wird an bestimmten Stellen umbrochen, z. B. an den Positionen der Trennzeichen zwischen den Schaltflächen. Sie behält diese Form bei, unabhängig davon, ob die Symbolleiste angedockt oder schwebend 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. Der Stil 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 umgebrochenen Zustand befindet.
Festlegen von Umbruchpositionen für eine Symbolleiste mit festem Stil
Legen Sie für eine Symbolleiste mit fester Größe Indizes für Symbolleistenschaltflächen fest, an denen die Symbolleiste umbrochen wird. Der folgende Code zeigt, wie Sie dies in der Überschreibung des Hauptframefensters 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.