TN031: Steuerleisten
Hinweis |
---|
Im Folgenden technischen Hinweis ist nicht aktualisiert wurde, seitdem er erstmals in der Onlinedokumentation enthalten waren.Folglich können mehrere Prozeduren und Themen veraltet oder falsch.Die aktuellsten Informationen wird empfohlen, zum Thema Onlinedokumentations im Index finden. |
Dieser Hinweis wird die Steuerleistenklassen in MFC: Allgemein CControlBar, CStatusBar, der CToolBar, CDialogBar und CDockBar.
CControlBar
ControlBar ist CWnd abgeleiteten Klasse das:
Ist der oberen bzw. unteren Rand eines Rahmenfensters ausgerichtet.
Die untergeordnete Elemente enthalten, die entweder HWND-basierte Steuerelemente (z. B. CDialogBar) oder Nicht- Grundgrössen HWND sind (z. B. CToolBar, CStatusBar).
Steuerleisten unterstützen zusätzliche Formate:
fixieren CBRS_TOP (Standard), die Steuerleiste bis zur oberen Kante.
CBRS_BOTTOM Pin die Steuerleiste unten.
CBRS_NOALIGN nicht neu anordnen die Steuerleiste angezeigt, wenn das übergeordnete Element angepasst wird.
Klassen, die von CControlBar abgeleitet sind, stellen interessantere Implementierungen:
Statusleiste CStatusBar A Elemente sind die Statusleiste Bereiche, die Text enthalten.
Symbolleiste CToolBar A Elemente sind die Bitmapdatei Schaltflächen an, die in einer Zeile ausgerichtet sind.
Symbolleiste vergleichbare Rahmen CDialogBar A, welche die Steuerelemente im Fenster enthalten (erstellt aus einer Dialogfeldvorlagen-Ressource).
CDockBar A allgemeine Andocken Bereich für andere abgeleitete Objekte CControlBar.Die speziellen Memberfunktionen und Variablen, die in dieser Klasse verfügbar sind, sind wahrscheinlich in zukünftigen Versionen geändert werden.
Alle Steuerleisten Objekte/- Fenster sind untergeordnete Elemente eines Fensters Rahmenfensters.Sie werden in der Regel als gleichgeordnetes Element zum Clientbereich des Frames hinzugefügt (z. B. ein MDI-Client oder Ansicht).Die ID des untergeordneten Fensters einer Steuerleiste ist wichtig.Im Standardlayout der Steuerleiste funktioniert nur für Steuerleisten im Bereich mit der ID AFX_IDW_CONTROLBAR_FIRST zu AFX_IDW_CONTROLBAR_LAST.Beachten Sie, dass, obwohl es einen Bereich von 256 Steuerleiste ID vorhanden ist, die ersten 32 dieser Steuerleiste wie sie sind, ausdrücklich ID direkt über die Architektur der Seitenansicht unterstützt werden.
Die Standardimplementierung gibt CControlBar-Klasse für:
Die Steuerleiste an den oberen, unteren Rand jeder Seite oder - rahmens ausrichten.
Zuordnen von Arrays Steuerelement.
Die Implementierung von abgeleiteten Klassen unterstützen.
C++-Steuerleisten Objekte werden in der Regel als Member einer CFrameWnd abgeleiteten Klasse enthalten und werden in bereinigt, wenn Elemente HWND und das Objekt zerstört werden.Wenn Sie ein Steuerleisten Objekt auf dem Heap zugeordnet werden müssen, können Sie den m_bAutoDestruct-Member TRUE einfach festlegen, um die Steuerleiste "delete this" auszuführen, wenn HWND zerstört wird.
Hinweis |
---|
Wenn Sie ein eigenes CControlBar abgeleitete Klasse, anstatt mit einer der abgeleiteten Klassen von MFC, wie CStatusBar, CToolBar oder CDialogBar erstellen, müssen Sie den m_dwStyle Datenmember festlegen.Dies kann in der Überschreibung von Create ausgeführt werden: |
// CMyControlBar is derived from CControlBar
BOOL CMyControlBar::Create( CWnd* pParentWnd, DWORD dwStyle, UINT nID )
{
m_dwStyle = dwStyle;
.
.
.
}
Steuerleisten-Layout-Algorithmus
Den Steuerleisten Layout Algorithmus ist sehr einfach.Das Rahmenfenster sendet eine Nachricht WM_SIZEPARENT allen untergeordneten Elementen im Bereich Steuerleisten.Zusammen mit dieser Meldung wird ein Zeiger auf den Client rechteck des übergeordneten Elements übergeben.Diese Meldung wird an untergeordnete Elemente in der Z-Reihenfolge gesendet.Die Steuerleisten untergeordneten Elemente verwenden diese Informationen, um sich selbst zu positionieren und die Größe des Clientbereichs des übergeordneten Elements zu verringern.Das letzte Rechteck, das für den normalen linken Clientbereich (weniger Steuerleisten) wird verwendet, um das zentrale Clientfenster (normalerweise ein MDI-Client, Ansicht oder einem Splitterfenster) zu positionieren.
Weitere Informationen finden Sie unter CWnd::RepositionBars und CFrameWnd::RecalcLayout.
Private Windows-Meldungen MFC, einschließlich WM_SIZEPARENT, werden in Technischer Hinweis 24 dokumentiert.
CStatusBar
Eine Statusleiste ist eine Steuerleiste, die eine Zeile der Textausgabe Bereichen verfügt.Es gibt zwei allgemeine Arten der Textausgabe Bereiche zu verwenden:
Als Meldungszeile
(z. B. die hilfe-Meldungs Standardmenüs Zeile).Diese werden i. d. R. durch ein indiziertes basiertes 0 zugegriffen
Statusanzeigen Als
(z. B. die ABDECKUNGS-, NUM- und ROLLEN-Indikatoren).Diese werden i. d. R. durch Zeichenfolge/Befehl zugegriffen.
Die Schriftart für die Statusleiste ist 10 Punkt MS Sans Serif (vorgeschrieben vom Windows-Oberflächen-Anwendungs-Entwurfs-Handbuch oder die beste Übereinstimmung der Schriftartenmapper einer proportionalen Schriftarten mit 10 Punkt Schweizern).Unter bestimmten Versionen von Windows, wie der japanischen Edition, sind die Schriftarten, die ausgewählt werden, anders.
Die Farben in der Statusleiste verwendet werden, sind ebenfalls mit der Empfehlung des Windows-Oberflächen-Anwendungs-Entwurfs-Handbuches konsistent.Diese Farben sind nicht hartcodiert und werden dynamisch als Reaktion auf Anpassung der Benutzer in der Systemsteuerung geändert.
Element |
Windows-Farbwert |
RGB Standard |
---|---|---|
Statusleisten - Hintergrund |
COLOR_BTNFACE |
RGB (192, 192, 192) |
Statusleistentext |
COLOR_BTNTEXT |
RGB (000, 000, 000) |
Die Statusleiste nach oben/Ränder |
COLOR_BTNHIGHLIGHT |
RGB (255, 255, 255) |
Statusleisten bot rechten Kante -/ |
COLOR_BTNSHADOW |
RGB (128, 128, 128) |
CCmdUI-Unterstützung für CStatusBar
Die Methode, die Indikatoren normalerweise aktualisiert werden, ist für den ON_UPDATE_COMMAND_UI Mechanismus.Rechtzeitig Leerlaufzeit ruft die Statusleiste den ON_UPDATE_COMMAND_UI-Handler mit den Gültigkeitsbereich von Zeichenfolgen-ID des Indikators an.
Der Handler kann ON_UPDATE_COMMAND_UI aufrufen:
Aktivieren: Um den Bereich aktivieren oder deaktivieren.Ein deaktivierter Bereich scheint genau wie einen aktiven Bereichs, aber der Text nicht sichtbar ist (das heißt, Indikator für den Text ab.)
SetText: So fügen Sie den Text ändern.Seien Sie vorsichtig, wenn Sie dieses verwenden, da der Bereich nicht seine Größe automatisch selbst ändert.
Siehe Klasse Klassenbibliotheks-Verweis im CStatusBar Einzelheiten über CStatusBar Erstellung und Anpassung API.Die meisten Anpassung der Statusleiste muss ausgeführt werden, bevor die Statusleiste anfangs sichtbar gemacht wird.
Die Statusleiste unterstützt nur einen dehnbaren Bereich, normalerweise den ersten Bereich.Die Größe dieses Bereichs ist eigentlich eine minimale Größe.Wenn die Statusleiste größer als die Mindestgröße aller Bereiche ist, ist jede zusätzliche Breite auf den dehnbaren Bereich angegeben.Die standardmäßige Anwendung mit einer Statusleiste besitzt rechtsbündige Indikatoren für ABDECKUNG, NUM und die ROLLEN-TASTE, da der erste Bereich dehnbar ist.
CToolBar
Eine Symbolleiste ist eine Steuerleiste mit einer Zeile der Bitmap Schaltflächen an, die ggf. Trennzeichen enthalten.Zwei Stile von Schaltflächen werden unterstützt: Pushbuttone Kontrollkästchen und Schaltflächen.Radio Gruppen können Funktionen mit Kontrollkästchen und Schaltflächen ON_UPDATE_COMMAND_UI erstellt werden.
Alle Schaltflächen in der Symbolleiste Bitmapdatei aus einer Bitmap abgerufen werden.Diese Bitmap muss ein Bild oder Symbol für jede Schaltfläche enthalten.In der Regel ist die Reihenfolge der Bilder/Symbolen in der Bitmap dieselbe Reihenfolge, in der sie auf dem Bildschirm gezeichnet werden.(Dies kann mithilfe der Anpassung API geändert werden.)
Jede Schaltfläche muss die gleiche Größe aufweisen.Der Standardwert ist die Pixel des Standardwerts 24x22.Jedes Bild/Symbol müssen die gleiche Größe aufweisen, und sie müssen in der Bitmap parallel kompatibel sein.Das Standardbild/die Größe des Symbols 16x15 ist Pixel.Aus diesem Grund für eine Symbolleiste mit Schaltflächen 10 (mithilfe der standardmäßigen Haupt-), benötigen Sie eine Bitmap mit 160 Pixel breit und 15 Pixel hoch ist.
Jede Schaltfläche besitzt eine und nur ein Bild/Symbol.Die unterschiedliche Formate an und gibt die Schaltfläche (z. B. nach unten nach oben verschoben, deaktiviert, unten) sind deaktiviert, unbegrenzt algorithmisch dieses einem Bild/aus Symbol generiert.Alle Farben bitmap oder DIB in der Theorie verwendet werden.Der Algorithmus zum Generieren der verschiedenen Schaltflächen Bedingungen funktioniert gut, wenn das Originalbild Grauschattierungen darstellt.Betrachten Sie die standardmäßigen und der Eigenschaftensymbolleiste, die in Symbolleistenschaltflächen-ClipArt allgemeinem Beispiel CLIPART MFC Beispiele bereitgestellt werden.
Die Farben in der Symbolleiste verwendet werden, sind ebenfalls mit der Empfehlung des Windows-Oberflächen-Anwendungs-Entwurfs-Handbuches konsistent.Diese Farben sind nicht hartcodiert und werden dynamisch als Reaktion auf Anpassung der Benutzer in der Systemsteuerung geändert.
Element |
Windows-Farbwert |
RGB Standard |
---|---|---|
Symbolleisten - Hintergrund |
COLOR_BTNFACE |
RGB (192,192,192) |
Die Ränder verließen/Symbolleisten-Schaltflächen obersten |
COLOR_BTNHIGHLIGHT |
RGB (255,255,255) |
Symbolleisten-Schaltflächen bot rechten Kante -/ |
COLOR_BTNSHADOW |
RGB (128,128,128) |
Darüber hinaus werden die Schaltflächen der Symbolleiste einneu bitmap gefärbt, als ob sie Standard-Windows-Schaltflächen-Steuerelemente waren.Dieses Neueinfärben tritt auf, wenn die Bitmap aus der Ressource und als Reaktion auf eine Änderung in den Systemfarben als Reaktion auf die Anpassung der Benutzer in der Systemsteuerung geladen wird.Die folgenden Farben in einer Symbolleisten bitmap werden automatisch einneu gefärbt. Daher sollten diese mit Vorsicht verwendet werden.Wenn kein Teil der einneu gefärbten Bitmaps haben möchten, verwenden Sie eine Farbe, die genau einen der zugeordneten RGB-Werte approximiert.Die Zuordnung basiert auf genaue RGB-Werte durchgeführt.
RGB-Wert |
Dynamisch zugeordneter 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 Klassenbibliotheks-Verweis Einzelheiten über die CToolBar Erstellung und die Anpassung API.Die meisten Anpassung von Symbolleisten muss ausgeführt werden, bevor die Symbolleiste anfangs sichtbar gemacht wird.
Die Anpassung API kann verwendet werden, um die Schaltfläche ID, Stile, Abstandhalter eine breite anzupassen und das Bild/Symbol verwendet wird, für welche Schaltfläche.Standardmäßig ist es nicht erforderlich, um diese APIs verwenden.
CCmdUI-Unterstützung für CToolBar
Die Methode, die Symbolleisten-Schaltflächen stets aktualisiert werden, ist für den ON_UPDATE_COMMAND_UI Mechanismus.Rechtzeitig Leerlaufzeit wird die Symbolleiste ON_UPDATE_COMMAND_UI den Handler mit der Befehls-ID dieser Schaltfläche.ON_UPDATE_COMMAND_UI wird nicht für Trennzeichen aufgerufen, sondern es wird zur Pushbuttone Kontrollkästchen und Schaltflächen aufgerufen.
Der Handler kann ON_UPDATE_COMMAND_UI aufrufen:
Aktivieren: Um die Schaltfläche aktivieren oder deaktivieren.Dies funktioniert für Pushbuttone Kontrollkästchen und Schaltflächen einheitlich.
SetCheck: Um den Aktivierungszustand der Schaltfläche festlegen.Das Aufrufen dieses für eine Symbolleisten-Schaltfläche macht sie an eine Schaltfläche Kontrollkästchen.SetCheck akzeptiert einen Parameter, der nicht 0 (aktiviert), 1 (aktiviert) oder 2 sein kann (unbegrenzt)
SetRadio: Kurznotation für SetCheck.
Schaltflächen sind "AUTOMATISCHE Kontrollkästchen Schaltflächen, Kontrollkästchen" das heißt wenn der Benutzer darauf klickt, ändert sie sofort Zustand.Checked ist der Reihenfolge oder gedrückte Zustand.Es gibt keine integrierte Benutzeroberflächen Methode eine Schaltfläche in "unbestimmten Zustand" zu ändern. das muss über Code erfolgen.
Die Anpassung API können Sie den Zustand einer angegebenen Symbolleisten-Schaltfläche, vorzugsweise Sie ändern sollte dieser Zustände im ON_UPDATE_COMMAND_UI-Handler für den Befehl ändern, den die Symbolleisten-Schaltfläche darstellt.Denken Sie daran, die Leerlaufverarbeitung ändert den Zustand von Symbolleisten-Schaltflächen mit dem ON_UPDATE_COMMAND_UI-Handler möglicherweise erhalten, sodass alle Änderungen an diesen Zuständen, die von SetButtonStyle gemacht werden, verlorenes nach dem nächsten Leerlauf ab.
Symbolleisten-Schaltflächen wie normale Schaltflächen WM_COMMAND Nachrichten senden oder Menüelemente und werden normalerweise von einem ON_COMMAND-Handler in derselben Klasse behandelt, die den ON_UPDATE_COMMAND_UI-Handler bereitstellt.
Es gibt vier Formate Symbolleisten-Schaltflächen (TBBS_-Werte) für Anzeigen Bedingungen:
TBBS_CHECKED: Kontrollkästchen ist derzeit aktiviert (unten).
TBBS_INDETERMINATE: Kontrollkästchens unbestimmt ist.
TBBS_DISABLED: Schaltfläche ist derzeit deaktiviert.
TBBS_PRESSED: Schaltfläche wird gerade gedrückt.
Die sechs Beamter Schaltflächen Windows-Oberflächen-Anwendungs-Entwurfs-Handbuch Formate werden durch die folgenden TBBS-Werte dargestellt:
Herauf = 0
Beim Drücken der Maustaste = (TBBS_PRESSED| ein anderes Format)
TBBS_DISABLED = Deaktiviert
Unten = TBBS_CHECKED
Unten TBBS_CHECKED = deaktiviert | TBBS_DISABLED
Unbestimmt = TBBS_INDETERMINATE
CDialogBar
Eine Dialogleiste ist eine Steuerleiste, die windows-steuerelemente enthält.Sie verhält sich wie ein Dialogfeld darin, dass sie die Steuerelemente enthält und Drücken der TAB-TASTE zwischen ihnen unterstützt.Sie fungiert auch, wie ein Dialogfeld darin, dass sie eine Dialogfeldvorlage verwendet, um die Leiste darstellt.
CDialogBar wird für die Symbolleiste Standard verwendet, die Seitenansicht pushbutton-steuerelemente enthält.
Verwenden CDialogBar ist z. B. die Verwendung von CFormView.Sie müssen eine Dialogfeldvorlage für die Dialogleiste definieren und alle Stile außer WS_CHILD entfernen.Beachten Sie, dass das Dialogfeld nicht sichtbar sein darf.
Die Steuerelementbenachrichtigungen für CDialogBar werden dem übergeordneten Element der Steuerleiste gesendet (ebenso wie Symbolleisten-Schaltflächen).
CCmdUI-Unterstützung für CDialogBar
Schaltflächen Dialogleisten sollten durch den Handler ON_UPDATE_COMMAND_UI Mechanismus zur aktualisiert werden.An der Leerlaufzeit ruft die Dialogleiste den ON_UPDATE_COMMAND_UI-Handler mit der Befehls-ID aller Schaltflächen an, die ein ID >= 0x8000 verfügen (das heißt im Bereich von Befehls-IDs).
Der Handler kann ON_UPDATE_COMMAND_UI aufrufen:
Aktivieren Sie Folgendes: Die Schaltfläche zu aktivieren oder zu deaktivieren.
SetText: Text der Schaltfläche zu ändern.
Anpassung kann durch Standardwert fenster-manager API erfolgen.