andockbare Symbolleisten und unverankerte
Microsoft Foundation Class Library unterstützt andockbare Symbolleisten.Eine andockbare Symbolleiste kann angefügt werden, oder angedockt wurde, auf jeder Seite des übergeordneten Fensters oder zu ihr kann, in ein eigenes Fenster Minirahmen getrennt werden oder geschwommen werden.In diesem Artikel wird beschrieben, wie andockbare Symbolleisten in Anwendungen verwendet werden.
Wenn Sie im Anwendungs-Assistenten verwenden, um das Skelett der Anwendung zu generieren, werden Sie gefragt, ob Sie auswählen, andockbare Symbolleisten soll.Standardmäßig generiert der Anwendungs-Assistent den Code, der die drei Aktionen ausführt, die erforderlich sind, um eine andockbare Symbolleiste in der Anwendung zu platzieren:
Aktivieren Sie das Andocken in einem Rahmenfenster.
Aktivieren Sie das Andocken für eine Symbolleiste.
Docken Sie auf der Symbolleiste angezeigt (das Rahmenfenster).
Wenn alle Schritte fehlen, zeigt die Anwendung eine Standardsymbolleiste an.Die letzten beiden Schritte müssen für jede einzelne andockbare Symbolleiste in der Anwendung ausgeführt werden.
Andere Themen behandelt in diesem Artikel gehören:
Die Symbolleiste schwimmen
Die Symbolleiste dynamisch angepasst
Erstellt einen Wrapper für Positionen für eine Symbolleiste Format einheitlich dargestellte festlegen
Zeigen Sie das allgemeine Beispiel DOCKTOOL Beispiele für MFC.
Das Andocken in einem Rahmenfenster aktivieren
Für Symbolleisten in einem Rahmenfenster anzudocken, müssen das Rahmenfenster (oder Ziel) - Funktionen aktiviert sind, um das Andocken zu ermöglichen.Dies ist mit den CFrameWnd::EnableDocking-Funktion, die einen DWORD-Parameter akzeptiert, der einen Satz von Stilbit angebens ist, dem Seite des Rahmenfensters das Andocken angenommen.Wenn eine Symbolleiste im Begriff ist angedockt werden soll, und mehrere Seiten besteht, dass es angedockt werden konnte, werden die Seiten, die im Parameter übergebenen zu EnableDocking angegeben werden, in der folgenden Reihenfolge: Oben, Unten, Links, Rechts.Wenn Sie in der Lage sein möchten, wo Steuerleisten anzudocken, führen Sie CBRS_ALIGN_ANY zu EnableDocking.
Durch das Andocken für eine Symbolleiste aktivieren
Nachdem Sie bereitet das Ziel für das Andocken haben, müssen Sie die Symbolleiste (Quelle) oder auf eine ähnliche Weise vorbereiten.CControlBar::EnableDocking Aufruf für jede Symbolleiste, die Sie andocken möchten, die auf Seiten angibt, zu denen die Symbolleiste angedockt werden soll.Wenn keine der Seiten, die im Aufruf von CControlBar::EnableDocking Übereinstimmung die Seiten aktiviert sind für das Andocken in das Rahmenfenster, die Symbolleiste nicht angegeben werden, schwimmt — Es können andocken.Eine nicht angedockte Symbolleiste bleibt unverankert und kann im Rahmenfenster nicht wieder angedockt werden.
Wenn der den gewünschten Effekt, um eine permanent unverankerte Symbolleiste EnableDocking aufrufen, mit dem Parameter 0 ist.Dann rufen Sie CFrameWnd::FloatControlBar.Die Symbolleiste bleibt unverankert, nicht dauerhaft einer beliebigen Position anzudocken.
Die Symbolleiste andocken
Das Framework ruft CFrameWnd::DockControlBar auf, wenn der Benutzer versucht, Symbolleiste auf einer Seite des Rahmenfensters abzulegen, das Andocken zulässig.
Darüber hinaus können Sie diese Funktion jedoch jederzeit aufrufen, um das Rahmenfenster Steuerleisten andocken.Dies ist normalerweise während der Initialisierung erfolgen.Mehr als eine Symbolleiste kann zu einer bestimmten Seite des Rahmenfensters angedockt werden.
Die Symbolleiste schwimmen
Eine andockbare Symbolleiste vom Rahmenfenster trennend, wird Schwimmen der Symbolleiste aufgerufen.Rufen Sie zum CFrameWnd::FloatControlBar.Geben Sie die geschwommen Symbolleiste angezeigt werden soll, die den Punkt, an dem das Objekt eingefügt werden soll, sowie ein Ausrichtungsart, das bestimmt, ob die unverankerte Symbolleiste horizontal oder vertikal ist.
Das Framework ruft diese Funktion auf, wenn ein Benutzer eine Symbolleiste aus einem angedockten Position zieht und diese in einem Verzeichnis ablegt, in dem das Andocken nicht aktiviert ist.Dies kann überall innerhalb oder außerhalb des Rahmenfensters sein.Wie bei DockControlBar, können Sie diese Funktion bei der Initialisierung aufrufen.
Die MFC-Implementierung von andockbaren Symbolleisten bietet keine einige der erweiterten Features, die in mehreren Anwendungen vorhanden sind, die andockbare Symbolleisten unterstützen.Funktionen wie anpassbare Symbolleisten werden nicht bereitgestellt.
Die Symbolleiste dynamisch angepasst
Ab Visual C++, Version 4.0, können Sie es Benutzern ermöglichen, unverankerte Symbolleisten Ihrer Anwendung dynamisch angepasst werden.In der Regel enthält eine Symbolleiste, eine lange lineare Form, horizontal angezeigt.Sie können jedoch die Ausrichtung und die seine Form Symbolleiste ändern.Wenn der Benutzer beispielsweise eine Symbolleiste anhand einer der vertikalen Seiten des Rahmenfensters andockt, wird die Form zu einem vertikalen Layout.Es ist auch möglich, dass die Symbolleiste in ein Rechteck mit mehreren Zeilen von Schaltflächen umzugestalten.
Sie haben folgende Möglichkeiten:
Geben Sie dynamische Größenanpassung als Symbolleistenmerkmal an.
Geben Sie als Größenanpassung korrigierte Symbolleisten merkmal.
Um diese Unterstützung, gibt es zwei neue Symbolleisten Spaltenformate für die Verwendung in Ihren Aufrufe an die CToolBar::Create-Memberfunktion.Dies sind:
CBRS_SIZE_DYNAMIC Steuerleiste ist dynamisch.
CBRS_SIZE_FIXED Steuerleiste wurde korrigiert.
Das dynamische Format der Größe kann den Benutzer die Symbolleiste Größe ändern, während sich unverankert ist, aber nicht während er angedockt wird.Die Symbolleiste "wird von" wo erforderlich sind, um sich als Benutzer zieh zu verformen der Ränder.
Die Größe korrigierte Format behält die Erstellt einen Wrapper für Bedingungen bei einer Symbolleiste und korrigiert die Position der Schaltflächen in jeder Spalte.Der Benutzer der Anwendung kann die Form der Symbolleiste nicht ändern.Die Symbolleisten umbrüche an, z. B. Stellen Sie den Speicherorten von Trennzeichen zwischen den Schaltflächen.Sie verwaltet diese Form an, ob die Symbolleiste oder Schwimmen angedockt wird.Der Effekt ist eine feste Palette mit mehreren Spalten von Schaltflächen.
Sie können CToolBar::GetButtonStyle auch verwenden, um einen Zustand und ein Format für den Schaltflächen auf der Symbolleiste zurückzugeben.Das Format einer Schaltfläche bestimmt, wie die Schaltfläche angezeigt wird und wie sie auf Benutzereingaben reagiert. Der Status gibt an, ob die Schaltfläche in einem umschlossenen Zustand befindet.
Umbruchs-Positionen für eine Korrigierte-Format Symbolleiste festlegen
Bei einer festen Größe der Symbolleiste Format auf die vorgesehene Symbolleisten-Schaltflächen Indizes die Symbolleiste umbrochen werden.Der folgende Code zeigt, wie Sie dies in OnCreate Überschreibung des Hauptrahmenfensters Aktionen ausführen:
// 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 allgemeine Beispiel DOCKTOOL MFC wird gezeigt, wie CControlBar-Memberfunktionen von Klassen und CToolBar verwendet, um dynamisches Layout einer Symbolleiste zu verwalten.Weitere Informationen finden Sie in der Datei EDITBAR.CPP DOCKTOOL.