Diese Applikationsschrift beschreibt die Steuerleistenklassen in MFC: die allgemeine CControlBar CStatusBar, CToolBar, CDialogBarund CDockBar.
Ein ControlBar ist ein CWnd-abgeleiteten Klasse die:
Steuerleisten unterstützen die zusätzliche Stile:
Klassen von CControlBar abgeleitet bereitstellen interessantere Implementierungen:
Alle Kontrolle Bar Objekte/Fenster werden untergeordnete Fenster einige übergeordnete Rahmenfenster. Sie sind in der Regel auf den Clientbereich des Rahmens (z. B. eine MDI-Client oder Sicht) als nebengeordnetes Element hinzugefügt. Die untergeordnete Fenster ID eine Steuerleiste ist wichtig. Das Standardlayout der Steuerungsleiste funktioniert nur für Steuerleisten mit IDs im Bereich von AFX_IDW_CONTROLBAR_FIRST zu AFX_IDW_CONTROLBAR_LAST. Beachten Sie, dass, obwohl es eine Reihe von 256 Kontrolle gibt bar IDs, die ersten 32 diese Steuerleiste IDs sind besonders da sie direkt von der Seitenansicht-Architektur unterstützt werden.
Die CControlBar -Klasse gibt die Standardimplementierung für
C++ Control Bar-Objekte werden in der Regel eingebettet werden, als eine von CFrameWnd Klasse abgeleitete, und wird bereinigt werden, wenn das übergeordnete HWND und das Objekt zerstört werden. Wenn Sie ein Control Bar-Objekt auf dem Heap zuweisen müssen, können Sie einfach festlegen den M_bAutoDestruct -Member auf TRUE , um die Kontrolle Bar "delete this" machen, wenn das HWND zerstört wird.
Wichtig&Nbsp; Wenn Sie Ihre eigenen CControlBar erstellen-abgeleitete Klasse anstelle eines MFC Klassen, z. B. CStatusBar, CDialogBaroder CToolBarabgeleitet, Sie müssen den M_dwStyle -Datenmember festgelegt. Dies kann in die Überschreibung von Erstellen:
/ / CMyControlBar von CControlBar abgeleitet ist
BOOL CMyControlBar::Create (CWnd * pParentWnd, DWORD DwStyle, UI&NT nID)
{
Nbsp; M_dwStyle = DwStyle;
.
.
.
}
Steuerleiste Layout-Algorithmus
Der Regelalgorithmus Bar Layout ist sehr einfach. Das Frame-Fenster sendet eine Nachricht WM_SIZEPARENT an alle Kinder in der Bar-Regelbereich. Zusammen mit dieser Mitteilung wird ein Zeiger auf das übergeordnete Clientrechteck übergeben. Diese Meldung wird an Kinder in Z-Reihenfolge gesendet. Die Steuerleiste Kinder verwenden diese Informationen, um sich zu positionieren und verringern Sie die Größe des Clientbereichs des übergeordneten Elements. Das endgültige Rechteck, das bleibt für den normalen Clientbereich (weniger Steuerleisten) wird verwendet, um die wichtigsten Client Fensterposition (in der Regel ein MDI-Client, Ansicht oder Splitter Fenster).
Weitere Informationen finden Sie CWnd::RepositionBars und CFrameWnd::RecalcLayout.
MFC private Windows-Meldungen, einschließlich WM_SIZEPARENT, sind in der technischen Anmerkung 24 dokumentiert.
Eine Statusleiste ist eine Steuerleiste hat eine Reihe von Text-Ausgabebereiche. Es gibt zwei typische Wege, Text Ausgabebereiche verwenden:
(z. B. standard-Menü Hilfe Nachricht Linie). Dies erfolgt in der Regel von einer 0-basierten indiziert
(z. B. das CAP, NUM und SCRL Indikatoren). Dies erfolgt in der Regel durch Zeichenfolgenbefehl/ID.
Die Schriftart für die Statusleiste ist 10 Punkt "MS Sans Serif" (diktiert von der Windows Interface Anwendung Design Guide oder die Font Mapper beste Übereinstimmung von einer Schweizer Proportionalschrift 10 Punkt). Auf bestimmte Versionen von Windows, wie z. B. die japanische Edition und Windows 4.0 unterscheiden sich die Schriftarten ausgewählt.
Die Farben in der Statusleiste stehen auch im Einklang mit der Empfehlung von Windows Interface Anwendung Design Guide. Diese Farben sind nicht hart kodiert und dynamisch in Reaktion auf Benutzer-Einstellungen über das Bedienfeld geändert werden.
| Artikel | Windows-Farbwert | Standard RGB |
| Status Bar Hintergrund | COLOR_BTNFACE | RGB (192, 192, 192) |
| Statusleistentext | COLOR_BTNTEXT | RGB (000, 000, 000) |
| Statusleiste oben/links Kanten | COLOR_BTNHIGHLIGHT | RGB (255, 255, 255) |
| Status bar Bot/rechts Kanten | COLOR_BTNSHADOW | RGB (128, 128, 128) |
CCmdUI Unterstützung für CStatusBar
Die Art und Weise Indikatoren, in der Regel aktualisiert werden ist durch die ON_UPDATE_COMMAND_UI -Mechanismus. Für Leerlaufzeit wird die Statusleiste den ON_UPDATE_COMMAND_UI -Handler die Zeichenfolge-ID des Bereichs Indikator aufrufen.
Der ON_UPDATE_COMMAND_UI -Handler aufrufen können:
Bitte finden Sie unter Klasse CStatusBar in der Class Library Reference ausführliche Informationen zu CStatusBar Erstellung und Anpassung APIs. Die meisten Anpassung von Statusleisten sollte erfolgen, bevor die Statusleiste ist zunächst sichtbar gemacht.
Die Statusleiste unterstützt nur eine dehnbare Bereich, normalerweise das erste Fenster. Die Größe von diesem Bereich ist wirklich eine Mindestgröße. Wenn die Statusleiste größer als die minimale Größe der Bereiche ist, wird zusätzliche Breite dehnbar Bereich eingeräumt werden. Die Standardanwendung mit einer Statusleiste hat rechtsbündig Indikatoren für CAP, NUM und SCRL, da der erste Bereich dehnbar ist.
Eine Symbolleiste ist eine Steuerleiste mit einer Reihe von Bitmap-Schaltflächen, die Trennzeichen enthalten können. Zwei Arten von Schaltflächen werden unterstützt: Schaltflächen und Kontrollkästchen Schaltflächen. Radio Gruppenfunktionalität kann mit Kontrollkästchen Schaltflächen und ON_UPDATE_COMMAND_UI gebaut werden.
Alle Bitmap-Schaltflächen in der Symbolleiste stammen aus einer Bitmap. Diese Bitmap muss ein Bild oder Symbol für jede Schaltfläche enthalten. Die Reihenfolge der Bilder/Symbole in der Bitmap ist in der Regel die gleiche Reihenfolge, die sie auf dem Bildschirm gezeichnet werden. (Dies kann geändert werden die Anpassung APIs zu verwenden.)
Jede Schaltfläche muss die gleiche Größe sein. Der Standardwert ist der standard 24 x 22 Pixel. Jedes Bild/Symbol muss die gleiche Größe und müssen Side-by-Side in der Bitmap. Die Bild/Symbol-Standardgröße ist 16 x 15 Pixel. Daher benötigen Sie für eine Symbolleiste mit 10 Tasten (mit standard-Größen), eine Bitmap, die 160 Pixel breit und 15 Pixel hoch ist.
Jede Taste hat nur eine Bild/Symbol. Die andere Schaltfläche heißt und Stile (z. B. gedrückt, herauf, unten, deaktiviert, unten, unbestimmten deaktiviert) werden algorithmisch generiert aus, dass ein Bild/Symbol. Theoretisch kann jede Farbe Bitmap oder DIB-Datei verwendet werden. Der Algorithmus für die Generierung der anderen Taste heißt funktioniert am besten wenn das Originalbild Graustufen ist. Sehen Sie in der Symbolleiste standard-Schaltflächen und die Symbolleiste Schaltfläche Clipart gemäß allgemeinen MFC-Beispiel CLIPART für Beispiele.
In der Symbolleiste verwendeten Farben stehen auch im Einklang mit der Empfehlung von Windows Interface Anwendung Design Guide. Diese Farben sind nicht hart kodiert und dynamisch in Reaktion auf Benutzer-Einstellungen über das Bedienfeld geändert werden.
| Artikel | Windows-Farbwert | Standard RGB |
| Symbolleistenhintergrund | COLOR_BTNFACE | RGB(192,192,192) |
| Symbolleisten-Schaltflächen oben/links Kanten | COLOR_BTNHIGHLIGHT | RGB(255,255,255) |
| Symbolleisten-Schaltflächen Bot/rechts Kanten | COLOR_BTNSHADOW | RGB(128,128,128) |
Darüber hinaus sind Bitmap-Schaltflächen die Symbolleiste umgefärbt, als wären sie Schaltfläche Windows-Standardsteuerelemente. Diese Umfärbung tritt auf, wenn die Bitmap aus der Ressource und als Reaktion auf eine Änderung der Systemfarben in Reaktion auf Benutzer-Einstellungen über die Systemsteuerung geladen wird. Die folgenden Farben in einer Symbolleiste Bitmap werden automatisch umgefärbt werden, so dass sie mit Vorsicht verwendet werden sollten. Wenn Sie keinen Teil der Bitmap umgefärbt haben möchten, dann verwenden Sie eine Farbe, die genau die zugeordneten RGB-Werte angenähert. Die Zuordnung erfolgt anhand von exakten RGB-Werte.
| RGB-Wert | Dynamisch zugeordnete Farbwert |
| RGB (000, 000, 000) | COLOR_BTNTEXT |
| RGB (128, 128, 128) | COLOR_BTNSHADOW |
| RGB (192, 192, 192) | COLOR_BTNFACE |
| RGB (255, 255, 255) | COLOR_BTNHIGHLIGHT |
Siehe Klasse CToolBar der Class Library Reference für Details über die CToolBar Erzeugung und Anpassung APIs. Die meisten Anpassung von Symbolleisten sollte erfolgen, bevor die Symbolleiste ist zunächst sichtbar gemacht.
Die APIs lässt sich die Schaltfläche IDs, Stile, anpassen Anpassung Abstandhalter Breite und welches Bild/Zeichen für welche Schaltfläche verwendet wird. Standardmäßig müssen Sie nicht um diese APIs verwenden.
CCmdUI Unterstützung für CToolBar
Die Art und Weise der Symbolleisten-Schaltflächen werden immer aktualisiert wird durch den ON_UPDATE_COMMAND_UI -Mechanismus. Leerlaufzeit wird den ON_UPDATE_COMMAND_UI -Handler mit der Befehls-ID für die Schaltfläche die Symbolleiste aufrufen. ON_UPDATE_COMMAND_UI ist für Trennzeichen nicht aufgerufen, sondern es heißt für Schaltflächen und Kontrollkästchen Schaltflächen.
Der ON_UPDATE_COMMAND_UI -Handler aufrufen können:
Das Kontrollkästchen Schaltflächen sind "AUTO" das Kontrollkästchen Schaltflächen; Das heißt, wenn der Benutzer ihnen drückt werden sie sofort Zustand ändern. Geprüft ist der Zustand nach unten oder deprimiert. Es gibt keine integrierte Benutzer Schnittstelle Möglichkeit, eine Schaltfläche in der "unbestimmte" Zustand zu ändern; Dies muss durch Code erfolgen.
Die Anpassung APIs ermöglicht Ihnen, den Zustand einer bestimmten Symbolleiste Schaltfläche ändern, vorzugsweise sollten Sie diese Zustände in der ON_UPDATE_COMMAND_UI -Handler für den Befehl, die, den die Symbolleisten-Schaltfläche darstellt. Denken Sie daran, dass der Leerlaufverarbeitung ändert den Zustand der Symbolleisten-Schaltflächen mit dem ON_UPDATE_COMMAND_UI -Handler, so dass Änderungen an diesen Zuständen, die durch SetButtonStyle nach dem nächsten verloren gehen können im Leerlauf.
Symbolleisten-Schaltflächen senden WM_COMMAND -Nachrichten wie normale Schaltflächen oder Menüelemente und werden normalerweise von einem ON_COMMAND -Handler in der gleichen Klasse, die den ON_UPDATE_COMMAND_UI -Handler stellt behandelt.
Es gibt vier Symbolleiste Schaltflächenstile (TBBS_ Werte) verwendet für Darstell-Zustände:
Die sechs offiziellen Windows Interface Anwendung Design Guide Button-Stile werden durch die folgenden TBBS-Werte dargestellt.:
Eine Dialogleiste ist eine Steuerleiste, die standardmäßigen Windows-Steuerelementen enthält. Es wirkt wie ein Dialogfeld enthält die Steuerelemente und tabbing zwischen ihnen unterstützt. Es wirkt auch wie ein Dialog durch eine Dialogfeldvorlage zur Darstellung der Bar wird.
Ein CDialogBar dient für die Seitenansicht Symbolleiste enthält Standardsteuerelemente Drucktaste.
Mit einem CDialogBar ist vergleichbar mit einer CFormView. Definieren Sie eine Dialogfeldvorlage für der Dialogfensterleiste, und entfernen Sie alle Stile außer WS_CHILD. Beachten Sie, dass der Dialog nicht sichtbar sein muss.
Die Steuerelement-Benachrichtigungen für ein CDialogBar werden an das übergeordnete Element der Steuerleiste (genau wie Symbolleisten-Schaltflächen) geschickt.
CCmdUI Unterstützung für CDialogBar
Dialogfeld Schaltflächen sollten durch die ON_UPDATE_COMMAND_UI -Handler Mechanismus aktualisiert werden. Im Leerlauf Zeit, rufen die Dialogleiste den ON_UPDATE_COMMAND_UI -Handler mit der Befehls-ID des alle Schaltflächen, die eine ID-≫ = 0 x 8000 (d. h. im Bereich von Befehls-IDs).
Der ON_UPDATE_COMMAND_UI -Handler aufrufen können:
Anpassung erfolgt über standard-Fenster-Manager-APIs.
Technische Hinweise von &Nummer |nbsp; Technische Hinweise nach Kategorie