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.
Hinweis
Der folgende technische Hinweis wurde seit der ersten Aufnahme in die Onlinedokumentation nicht aktualisiert. Daher sind einige Prozeduren und Themen möglicherweise veraltet oder falsch. Für die neuesten Informationen empfiehlt es sich, nach dem interessanten Thema im Onlinedokumentationsindex zu suchen.
In diesem Hinweis werden die Steuerelementleistenklassen in MFC beschrieben: die allgemeine CControlBar, CStatusBar, CToolBar, CDialogBar und CDockBar.
CControlBar
A ControlBar ist eine CWndabgeleitete Klasse, die:
Wird am oberen oder unteren Rand eines Rahmenfensters ausgerichtet.
Kann untergeordnete Elemente enthalten,
CDialogBardie entweder HWND-basierte Steuerelemente sind (z. B. ) oder nichtHWNDbasierende Elemente (zCToolBar. B. ,CStatusBar).
Steuerleisten unterstützen die zusätzlichen Stile:
CBRS_TOP (Standardeinstellung) heften Sie die Steuerleiste an den oberen Rand an.
CBRS_BOTTOM Heften Sie die Steuerleiste an den unteren Rand an.
CBRS_NOALIGN Ändern Sie die Position der Steuerleiste nicht, wenn die Größe des übergeordneten Elements geändert wird.
Von ihnen abgeleitete CControlBar Klassen bieten interessantere Implementierungen:
CStatusBarEine Statusleiste, Elemente sind Statusleistenbereiche, die Text enthalten.CToolBarEine Symbolleiste, Elemente sind Bitmapschaltflächen, die in einer Zeile ausgerichtet sind.CDialogBarEin symbolleistenähnlicher Frame mit Standardfenstersteuerelementen (erstellt aus einer Dialogvorlagenressource).CDockBarEin generalisierter Andockbereich für andereCControlBarabgeleitete Objekte. Die in dieser Klasse verfügbaren spezifischen Memberfunktionen und Variablen ändern sich wahrscheinlich in zukünftigen Versionen.
Alle Steuerelementleistenobjekte/Fenster sind untergeordnete Fenster eines übergeordneten Rahmenfensters. Sie werden in der Regel als gleichgeordnetes Element zum Clientbereich des Frames hinzugefügt (z. B. ein MDI-Client oder eine Ansicht). Die untergeordnete Fenster-ID einer Steuerelementleiste ist wichtig. Das Standardlayout der Steuerelementleiste funktioniert nur für Steuerleisten mit IDs im Bereich von AFX_IDW_CONTROLBAR_FIRST bis AFX_IDW_CONTROLBAR_LAST. Beachten Sie, dass die ersten 32 dieser Steuerleisten-IDs speziell sind, obwohl es eine Reihe von 256 Steuerelementleisten-IDs gibt, da sie direkt von der Druckvorschauarchitektur unterstützt werden.
Die CControlBar Klasse bietet eine Standardimplementierung für:
Ausrichten der Steuerleiste an der oberen, unteren oder einer seite des Rahmens.
Zuordnen von Steuerelementelementarrays.
Unterstützung der Implementierung abgeleiteter Klassen.
C++-Steuerelementleistenobjekte werden in der Regel als Member einer CFrameWnd abgeleiteten Klasse eingebettet und werden bereinigt, wenn das übergeordnete Objekt und das Objekt HWND zerstört werden. Wenn Sie ein Steuerelementleistenobjekt auf dem Heap zuweisen müssen, können Sie einfach das m_bAutoDestruct Element auf TRUE festlegen, damit die Steuerleiste aufgerufen wird delete this; , wenn die HWND Vernichtung erfolgt.
Hinweis
Wenn Sie eine eigene CControlBarabgeleitete Klasse erstellen, anstatt eine der abgeleiteten MFC-Klassen zu verwenden, zCStatusBar. B. , CToolBaroder CDialogBar, müssen Sie das m_dwStyle-Datenmemm festlegen. Dies kann in der Außerkraftsetzung von Create:
// CMyControlBar is derived from CControlBar
BOOL CMyControlBar::Create(CWnd* pParentWnd,
DWORD dwStyle,
UINT nID)
{
m_dwStyle = dwStyle;
.
.
.
}
Steuerelementleistenlayoutalgorithmus
Der Layoutalgorithmus der Steuerelementleiste ist sehr einfach. Das Rahmenfenster sendet eine Nachricht WM_SIZEPARENT an alle untergeordneten Elemente im Bereich der Steuerleiste. Zusammen mit dieser Meldung wird ein Zeiger auf das Clientrechteck des übergeordneten Elements übergeben. Diese Nachricht wird an Kinder in Z-Reihenfolge gesendet. Die untergeordneten Steuerelementleisten verwenden diese Informationen, um sich selbst zu positionieren und die Größe des Clientbereichs des übergeordneten Elements zu verringern. Das endgültige Rechteck, das für den normalen Clientbereich (weniger Steuerleisten) übrig bleibt, wird verwendet, um das Hauptclientfenster (in der Regel ein MDI-Client, ansichts- oder Teilerfenster) zu positionieren.
Weitere Informationen finden Sie unterCWnd::RepositionBars.CFrameWnd::RecalcLayout
Private Windows-Nachrichten von MFC, einschließlich WM_SIZEPARENT, sind in Technical Note 24 dokumentiert.
CStatusBar
Eine Statusleiste ist eine Steuerelementleiste mit einer Zeile mit Textausgabebereichen. Es gibt zwei gängige Methoden zum Verwenden von Textausgabebereichen:
Als Nachrichtenzeile
(z. B. die Standardmenü-Hilfetextzeile). Auf diese werden in der Regel von einer 0-basierten indizierten
Als Statusindikatoren
(z. B. die CAP-, NUM- und SCRL-Indikatoren). Auf diese werden in der Regel über die Zeichenfolge/Befehls-ID zugegriffen.
Die Schriftart für die Statusleiste ist 10 Punkt MS Sans Serif (diktieren durch den Windows Interface Application Design Guide oder die Schriftartzuordnungen, die am besten mit einer Schweizer Proportionalschriftart von 10 Punkt übereinstimmen). Bei bestimmten Versionen von Windows, z. B. der japanischen Edition, unterscheiden sich die ausgewählten Schriftarten.
Die farben, die in der Statusleiste verwendet werden, entsprechen auch der Empfehlung des Windows Interface Application Design Guide. Diese Farben sind nicht hartcodiert und werden dynamisch als Reaktion auf die Benutzeranpassung in der Systemsteuerung geändert.
| Gegenstand | Windows COLOR-Wert | Standard-RGB |
|---|---|---|
| Statusleistenhintergrund | COLOR_BTNFACE | RGB(192, 192, 192) |
| Statusleistentext | COLOR_BTNTEXT | RGB(000, 000, 000) |
| Statusleiste oben/links | COLOR_BTNHIGHLIGHT | RGB(255, 255, 255) |
| Statusleisten-Bot/rechte Ränder | COLOR_BTNSHADOW | RGB(128, 128, 128) |
CCmdUI-Unterstützung für CStatusBar
Die Art und Weise, wie Indikatoren in der Regel aktualisiert werden, erfolgt über den ON_UPDATE_COMMAND_UI Mechanismus. Während der Leerlaufzeit ruft die Statusleiste den ON_UPDATE_COMMAND_UI-Handler mit der Zeichenfolgen-ID des Indikatorbereichs auf.
Der ON_UPDATE_COMMAND_UI handler kann Folgendes aufrufen:
Enable: So aktivieren oder deaktivieren Sie den Bereich. Ein deaktivierter Bereich sieht genau wie ein aktivierter Bereich aus, aber der Text ist unsichtbar (d. a. deaktiviert die Textanzeige).SetText: So ändern Sie den Text. Achten Sie darauf, wenn Sie dies verwenden, da die Größe des Bereichs nicht automatisch geändert wird.
Weitere Informationen zu CStatusBar Erstellungs- und Anpassungs-APIs finden Sie in der Klassenbibliotheksreferenz unter "CStatusBar". Die meisten Anpassungen von Statusleisten sollten ausgeführt werden, bevor die Statusleiste anfänglich sichtbar gemacht wird.
Die Statusleiste unterstützt nur einen gestreckten Bereich, in der Regel der erste Bereich. Die Größe dieses Bereichs ist wirklich eine Mindestgröße. Wenn die Statusleiste größer als die Mindestgröße aller Bereiche ist, wird dem gestreckten Bereich eine zusätzliche Breite zugewiesen. Die Standardanwendung mit einer Statusleiste weist rechtsbündige Indikatoren für CAP, NUM und SCRL auf, da der erste Bereich gestreckt ist.
CToolBar
Eine Symbolleiste ist eine Steuerelementleiste mit einer Reihe von Bitmapschaltflächen, die Trennzeichen enthalten können. Zwei Arten von Schaltflächen werden unterstützt: Pushbuttons und Kontrollkästchenschaltflächen. Optionsfeldfunktionen können mit Kontrollkästchenschaltflächen und ON_UPDATE_COMMAND_UI erstellt werden.
Alle Bitmapschaltflächen in der Symbolleiste stammen aus einer Bitmap. Diese Bitmap muss ein Bild oder eine Glyphe für jede Schaltfläche enthalten. In der Regel ist die Reihenfolge der Bilder/Glyphen in der Bitmap die gleiche Reihenfolge, in der sie auf dem Bildschirm gezeichnet werden. (Dies kann mithilfe der Anpassungs-APIs geändert werden.)
Jede Schaltfläche muss dieselbe Größe aufweisen. Die Standardeinstellung ist die Standard 24 x 22 Pixel. Jedes Bild/jede Glyphe muss die gleiche Größe aufweisen und in der Bitmap nebeneinander sein. Die Standardgröße für Bild/Glyphe beträgt 16 x 15 Pixel. Daher benötigen Sie für eine Symbolleiste mit 10 Schaltflächen (mit Standardgrößen) eine Bitmap mit einer Breite von 160 Pixeln und einer Höhe von 15 Pixeln.
Jede Schaltfläche verfügt über ein und nur ein Bild/eine Glyphe. Die verschiedenen Schaltflächenzustände und -stile (z. B. gedrückt, nach oben, unten, deaktiviert, deaktiviert, unbestimmt) werden von diesem Bild/Glyphenalgorithmus generiert. Jede Farbbitmap oder DIB kann theoretisch verwendet werden. Der Algorithmus zum Generieren der verschiedenen Schaltflächenzustände funktioniert am besten, wenn das ursprüngliche Bild grau schattiert ist. Sehen Sie sich die standardsymbolleistenschaltflächen und das ClipArt-ClipArt-Symbol der Symbolleiste an, das in MFC General clipART bereitgestellt wird, um Beispiele zu erhalten.
Die farben, die in der Symbolleiste verwendet werden, entsprechen auch der Empfehlung des Entwurfshandbuchs für Windows-Schnittstellenanwendungen. Diese Farben sind nicht hartcodiert und werden dynamisch als Reaktion auf die Benutzeranpassung in der Systemsteuerung geändert.
| Gegenstand | Windows COLOR-Wert | Standard-RGB |
|---|---|---|
| Symbolleistenhintergrund | COLOR_BTNFACE | RGB(192,192,192) |
| Symbolleistenschaltflächen oben/links | COLOR_BTNHIGHLIGHT | RGB(255,255,255) |
| Symbolleistenschaltflächen Bot/rechte Ränder | COLOR_BTNSHADOW | RGB(128,128,128) |
Darüber hinaus werden die Bitmapschaltflächen der Symbolleiste neu eingefärbt, als wären sie standardmäßige Windows-Schaltflächensteuerelemente. Diese Neufarbe tritt auf, wenn die Bitmap aus der Ressource geladen wird, und als Reaktion auf eine Änderung der Systemfarben als Reaktion auf die Benutzeranpassung in der Systemsteuerung. Die folgenden Farben in einer Symbolleistenbitmap werden automatisch neu eingefärbt, sodass sie mit Vorsicht verwendet werden sollten. Wenn Sie keinen Teil Der Bitmap neu einfärben möchten, verwenden Sie eine Farbe, die einen der zugeordneten RGB-Werte genau annähert. Die Zuordnung erfolgt basierend auf exakten RGB-Werten.
| RGB-Wert | Dynamisch zugeordneter COLOR-Wert |
|---|---|
| RGB(000, 000, 000) | COLOR_BTNTEXT |
| RGB(128, 128, 128) | COLOR_BTNSHADOW |
| RGB(192, 192, 192) | COLOR_BTNFACE |
| RGB(255, 255, 255) | COLOR_BTNHIGHLIGHT |
Weitere Informationen zu den Erstellungs- und Anpassungs-APIs CToolBar finden Sie in der Klassenbibliotheksreferenz für CToolBar. Die meisten Anpassungen von Symbolleisten sollten durchgeführt werden, bevor die Symbolleiste anfänglich sichtbar gemacht wird.
Die Anpassungs-APIs können verwendet werden, um die Schaltflächen-IDs, Formatvorlagen, Leerzeichenbreite und das Bild/die Glyphe für welche Schaltfläche anzupassen. Standardmäßig müssen Sie diese APIs nicht verwenden.
CCmdUI-Unterstützung für CToolBar
Die Art und Weise, wie Symbolleistenschaltflächen immer aktualisiert werden, erfolgt über den ON_UPDATE_COMMAND_UI Mechanismus. Während der Leerlaufzeit ruft die Symbolleiste den ON_UPDATE_COMMAND_UI-Handler mit der Befehls-ID dieser Schaltfläche auf. ON_UPDATE_COMMAND_UI wird nicht für Trennzeichen aufgerufen, sondern wird für Schaltflächen und Kontrollkästchen aufgerufen.
Der ON_UPDATE_COMMAND_UI handler kann Folgendes aufrufen:
Enable: So aktivieren oder deaktivieren Sie die Schaltfläche. Dies funktioniert gleichermaßen für Schaltflächen und Kontrollkästchen.SetCheck: So legen Sie den Überprüfungsstatus einer Schaltfläche fest. Wenn Sie dies für eine Symbolleistenschaltfläche aufrufen, wird sie in eine Kontrollkästchenschaltfläche umgewandelt.SetCheckverwendet einen Parameter, der 0 (nicht aktiviert), 1 (aktiviert) oder 2 (unbestimmt) sein kann.SetRadio: Kurzschrift fürSetCheck.
Kontrollkästchenschaltflächen sind "AUTO"- Kontrollkästchenschaltflächen; d. h., wenn der Benutzer sie drückt, ändert er den Zustand sofort. Aktiviert ist der zustand unten oder deprimiert. Es gibt keine integrierte Benutzeroberfläche, um eine Schaltfläche in den "unbestimmten" Zustand zu ändern; dies muss über Code erfolgen.
Mit den Anpassungs-APIs können Sie den Status einer bestimmten Symbolleistenschaltfläche ändern, vorzugsweise sollten Sie diese Zustände im ON_UPDATE_COMMAND_UI-Handler für den Befehl ändern, den die Symbolleistenschaltfläche darstellt. Denken Sie daran, dass die Leerlaufverarbeitung den Status von Symbolleistenschaltflächen mit dem ON_UPDATE_COMMAND_UI-Handler ändert, sodass alle Änderungen an diesen Zuständen, die über SetButtonStyle vorgenommen wurden, nach dem nächsten Leerlauf verloren gehen können.
Symbolleistenschaltflächen senden WM_COMMAND Nachrichten wie normale Schaltflächen 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 Symbolleistenschaltflächenarten (TBBS_ Werte), die für Anzeigezustände verwendet werden:
TBBS_CHECKED: Das Kontrollkästchen ist zurzeit aktiviert (nach unten).
TBBS_INDETERMINATE: Das Kontrollkästchen ist derzeit unbestimmt.
TBBS_DISABLED: Schaltfläche ist zurzeit deaktiviert.
TBBS_PRESSED: Schaltfläche wird zurzeit gedrückt.
Die sechs offiziellen Designanleitungen für Windows-Schnittstellen werden durch die folgenden TBBS-Werte dargestellt:
Up = 0
Mouse Down = TBBS_PRESSED (| beliebige andere Formatvorlage)
Deaktiviert = TBBS_DISABLED
Down = TBBS_CHECKED
Down Disabled = TBBS_CHECKED | TBBS_DISABLED
Unbestimmt = TBBS_INDETERMINATE
CDialogBar
Eine Dialogfeldleiste ist eine Steuerelementleiste, die Standardmäßige Windows-Steuerelemente enthält. Es verhält sich wie ein Dialogfeld, in dem es die Steuerelemente enthält und das Tabulatoren zwischen ihnen unterstützt. Es fungiert auch wie ein Dialogfeld, in dem es eine Dialogvorlage verwendet, um die Leiste darzustellen.
A CDialogBar wird für die Druckvorschausymbolleiste verwendet, die Standard-Pushbutton-Steuerelemente enthält.
Die Verwendung einer CDialogBar Datei ähnelt der Verwendung eines CFormView. Sie müssen eine Dialogfeldvorlage für die Dialogfeldleiste definieren und alle Formatvorlagen außer WS_CHILD entfernen. Beachten Sie, dass das Dialogfeld nicht sichtbar sein darf.
Die Steuerelementbenachrichtigungen für eine CDialogBar werden an das übergeordnete Element der Steuerelementleiste (genau wie Symbolleistenschaltflächen) gesendet.
CCmdUI-Unterstützung für CDialogBar
Dialogfeldleistenschaltflächen sollten über den ON_UPDATE_COMMAND_UI-Handlermechanismus aktualisiert werden. Zur Leerlaufzeit ruft die Dialogfeldleiste den ON_UPDATE_COMMAND_UI-Handler mit der Befehls-ID aller Schaltflächen mit einer ID >= 0x8000 auf (d. h. im Bereich der Befehls-IDs).
Der ON_UPDATE_COMMAND_UI handler kann Folgendes aufrufen:
Enable: to enable or disable the button.
SetText: So ändern Sie den Text der Schaltfläche.
Anpassungen können über Standardfenster-Manager-APIs erfolgen.
Siehe auch
Technische Hinweise nach Nummer
Technische Hinweise nach Kategorie