CControlBar Class

Die Basisklasse für die Steuerelementleistenklassen CStatusBar, CToolBar, CDialogBar, CReBar und COleResizeBar.

Syntax

class CControlBar : public CWnd

Member

Geschützte Konstruktoren

Name Beschreibung
CControlBar::CControlBar Erstellt ein CControlBar-Objekt.

Öffentliche Methoden

Name Beschreibung
CControlBar::CalcDynamicLayout Gibt die Größe einer dynamischen Steuerelementleiste als CSize-Objekt zurück.
CControlBar::CalcFixedLayout Gibt die Größe der Steuerelementleiste als CSize-Objekt zurück.
CControlBar::CalcInsideRect Gibt die aktuellen Maße des Steuerleistenbereichs, einschließlich der Rahmen, zurück.
CControlBar::D oPaint Rendert die Rahmen und das Ziehelement der Steuerleiste.
CControlBar::D rawBorders Rendert die Rahmen der Steuerleiste.
CControlBar::D rawGripper Rendert das Ziehelement der Steuerleiste.
CControlBar::EnableDocking Ermöglicht das Andocken bzw. eine unverankerte Steuerleiste.
CControlBar::GetBarStyle Ruft die Formatvorlagen der Steuerleiste ab.
CControlBar::GetBorders Ruft die Rahmenwerte der Steuerleiste ab.
CControlBar::GetCount Gibt die Anzahl von Nicht-HWND-Elementen in der Steuerelementleiste zurück.
CControlBar::GetDockingFrame Gibt einen Zeiger auf den Frame zurück, an den eine Steuerleiste angedockt ist.
CControlBar::IsFloating Gibt einen Wert ungleich 0 (null) zurück, wenn die fragliche Steuerleiste unverankert ist.
CControlBar::OnUpdateCmdUI Ruft die Befehlshandler der Benutzeroberfläche ab.
CControlBar::SetBarStyle Ändert die Formatvorlagen der Steuerleiste.
CControlBar::SetBorders Legt die Rahmenwerte der Steuerleiste fest.
CControlBar::SetInPlaceOwner Ändert den direkten Besitzer einer Steuerleiste.

Öffentliche Datenmember

Name Beschreibung
CControlBar::m_bAutoDelete Wenn der Wert ungleich 0 (null) ist, wird das CControlBar-Objekt gelöscht, sobald die Windows-Steuerleiste zerstört wird.
CControlBar::m_pInPlaceOwner Der direkte Besitzer der Steuerleiste.

Hinweise

Eine Steuerleiste ist ein Fenster, das normalerweise am linken oder rechten Rand eines Rahmenfensters ausgerichtet wird. Es kann untergeordnete Elemente enthalten, die entweder HWND-basierte Steuerelemente sind, bei denen es sich um Fenster handelt, die Windows-Nachrichten generieren und darauf reagieren, oder nicht-HWND-basierte Elemente, die keine Fenster sind und von Anwendungscode oder Frameworkcode verwaltet werden. Listenfelder und Bearbeitungssteuerelemente sind Beispiele für HWND-basierte Steuerelemente; Statusleistenbereiche und Bitmapschaltflächen sind Beispiele für nicht-HWND-basierte Steuerelemente.

Bei Steuerleistenfenstern handelt es sich normalerweise um untergeordnete Fenster eines übergeordneten Rahmenfensters, und es sind normalerweise nebengeordnete Elemente der Clientansicht oder des MDI-Clients des Rahmenfensters. Ein CControlBar-Objekt verwendet zum eigenen Positionieren Informationen über das Clientrechteck des übergeordneten Fensters. Dem übergeordneten Fenster wird dann die Menge des Speicherplatzes im Clientbereich des übergeordneten Fensters mitgeteilt, die unzugeordnet bleibt.

Weitere Informationen zu CControlBar finden Sie unter:

Vererbungshierarchie

CObject

CCmdTarget

CWnd

CControlBar

Anforderungen

Header: afxext.h

CControlBar::CalcDynamicLayout

Das Framework ruft diese Memberfunktion auf, um die Dimensionen einer dynamischen Symbolleiste zu berechnen.

virtual CSize CalcDynamicLayout(
    int nLength,
    DWORD nMode);

Parameter

nLength
Die angeforderte Dimension der Steuerleiste, je nach dwMode, horizontal oder vertikal.

nMode
Die folgenden vordefinierten Flags werden verwendet, um die Höhe und Breite der dynamischen Steuerleiste zu bestimmen. Verwenden Sie den Bitweise-OR(|)-Operator, um die Flags zu kombinieren.

Layoutmoduskennzeichnungen Bedeutung
LM_STRETCH Gibt an, ob die Steuerleiste auf die Größe des Frames gestreckt werden soll. Legen Sie fest, ob es sich bei der Leiste nicht um eine Dockingleiste handelt (nicht zum Andocken verfügbar). Wird nicht festgelegt, wenn der Balken angedockt oder unverankert ist (zum Andocken verfügbar). Wenn festgelegt, ignoriert LM_STRETCH nLength und gibt Dimensionen basierend auf dem LM_HORZ Zustand zurück. LM_STRETCH funktioniert ähnlich wie der in CalcFixedLayout verwendete bStretch-Parameter. Weitere Informationen zur Beziehung zwischen Stretch und Ausrichtung finden Sie in dieser Memberfunktion.
LM_HORZ Gibt an, dass der Balken horizontal oder vertikal ausgerichtet ist. Legen Sie fest, ob der Balken horizontal ausgerichtet ist und wenn er vertikal ausgerichtet ist, wird er nicht festgelegt. LM_HORZ funktioniert ähnlich wie der bHorz-Parameter, der in CalcFixedLayout verwendet wird. Weitere Informationen zur Beziehung zwischen Stretch und Ausrichtung finden Sie in dieser Memberfunktion.
LM_MRUWIDTH Zuletzt verwendete dynamische Breite. Ignoriert den nLength-Parameter und verwendet die zuletzt verwendete Breite.
LM_HORZDOCK Horizontal angedockte Dimensionen. Ignoriert den nLength-Parameter und gibt die dynamische Größe mit der größten Breite zurück.
LM_VERTDOCK Vertikale angedockte Abmessungen. Ignoriert den nLength-Parameter und gibt die dynamische Größe mit der größten Höhe zurück.
LM_LENGTHY Legen Sie fest, ob nLength die Höhe (Y-Richtung) anstelle der Breite angibt.
LM_COMMIT Setzt LM_MRUWIDTH auf die aktuelle Breite der unverankerten Steuerleiste zurück.

Rückgabewert

Die Größe der Steuerelementleiste in Pixeln eines CSize-Objekts .

Hinweise

Überschreiben Sie diese Memberfunktion, um Ihr eigenes dynamisches Layout in Klassen bereitzustellen, von CControlBarder Sie abgeleitet sind. MFC-Klassen, die von CControlBar, z . B. CToolbar, abgeleitet sind, überschreiben diese Memberfunktion und stellen ihre eigene Implementierung bereit.

CControlBar::CalcFixedLayout

Rufen Sie diese Memberfunktion auf, um die horizontale Größe einer Steuerelementleiste zu berechnen.

virtual CSize CalcFixedLayout(
    BOOL bStretch,
    BOOL bHorz);

Parameter

bStretch
Gibt an, ob der Balken auf die Größe des Rahmens gestreckt werden soll. Der bStretch-Parameter ist nicht zero, wenn der Balken keine Andockleiste ist (nicht zum Andocken verfügbar) und 0 ist, wenn er angedockt oder unverankert ist (zum Andocken verfügbar).

bHorz
Gibt an, dass der Balken horizontal oder vertikal ausgerichtet ist. Der bHorz-Parameter ist nonzero, wenn der Balken horizontal ausgerichtet ist und 0 ist, wenn er vertikal ausgerichtet ist.

Rückgabewert

Die Größe der Steuerelementleiste in Pixeln eines CSize Objekts.

Hinweise

Steuerleisten wie Symbolleisten können horizontal oder vertikal gestreckt werden, um die in der Steuerelementleiste enthaltenen Schaltflächen aufzunehmen.

Wenn bStretch WAHR ist, strecken Sie die Dimension entlang der von bHorz bereitgestellten Ausrichtung. Anders ausgedrückt: Wenn bHorz FALSCH ist, wird die Steuerleiste vertikal gestreckt. Wenn "bStretch " FALSCH ist, tritt keine Dehnung auf. Die folgende Tabelle zeigt die möglichen Permutationen und resultierende Steuerelementbalkenarten von bStretch und bHorz.

bStretch bHorz Streckung Ausrichtung Andocken/Nicht andocken
TRUE TRUE Horizontales Strecken Horizontal ausgerichtet Nicht andocken
TRUE FALSE Vertikale Dehnen Vertikal ausgerichtet Nicht andocken
FALSE TRUE Keine Streckung verfügbar Horizontal ausgerichtet Andocken
FALSE FALSE Keine Streckung verfügbar Vertikal ausgerichtet Andocken

CControlBar::CalcInsideRect

Das Framework ruft diese Funktion auf, um den Clientbereich der Steuerleiste zu berechnen.

virtual void CalcInsideRect(
    CRect& rect,
    BOOL bHorz) const;

Parameter

rect
Enthält die aktuellen Abmessungen der Steuerleiste; einschließlich der Rahmen.

bHorz
Gibt an, dass der Balken horizontal oder vertikal ausgerichtet ist. Der bHorz-Parameter ist nonzero, wenn der Balken horizontal ausgerichtet ist und 0 ist, wenn er vertikal ausgerichtet ist.

Hinweise

Diese Funktion wird aufgerufen, bevor die Steuerleiste gezeichnet wird.

Überschreiben Sie diese Funktion, um das Rendern der Rahmen und Ziehleiste der Steuerelementleiste anzupassen.

CControlBar::CControlBar

Erstellt ein CControlBar-Objekt.

CControlBar();

CControlBar::D oPaint

Wird vom Framework aufgerufen, um die Rahmen und Ziehleiste der Steuerleiste zu rendern.

virtual void DoPaint(CDC* pDC);

Parameter

pDC
Verweist auf den Gerätekontext, der zum Rendern der Rahmen und Ziehelemente der Steuerleiste verwendet werden soll.

Hinweise

Überschreiben Sie diese Funktion, um das Zeichnungsverhalten der Steuerelementleiste anzupassen.

Eine weitere Anpassungsmethode besteht darin, die DrawBorders Funktionen außer DrawGripper Kraft zu setzen und benutzerdefinierten Zeichencode für die Rahmen und Ziehelemente hinzuzufügen. Da diese Methoden von der Standardmethode DoPaint aufgerufen werden, ist keine Außerkraftsetzung DoPaint erforderlich.

CControlBar::D rawBorders

Vom Framework aufgerufen, um die Rahmen der Steuerelementleiste zu rendern.

virtual void DrawBorders(
    CDC* pDC,
    CRect& rect);

Parameter

pDC
Verweist auf den Gerätekontext, der zum Rendern der Rahmen der Steuerelementleiste verwendet werden soll.

rect
Ein CRect Objekt, das die Abmessungen der Steuerleiste enthält.

Hinweise

Überschreiben Sie diese Funktion, um die Darstellung der Rahmenlinien der Steuerelementleiste anzupassen.

CControlBar::D rawGripper

Vom Framework aufgerufen, um den Ziehelement der Steuerleiste zu rendern.

virtual void DrawGripper(
    CDC* pDC,
    const CRect& rect);

Parameter

pDC
Verweist auf den Gerätekontext, der zum Rendern des Ziehelements der Steuerleiste verwendet werden soll.

rect
Ein CRect Objekt, das die Abmessungen des Steuerbalkenziehelements enthält.

Hinweise

Überschreiben Sie diese Funktion, um die Darstellung des Ziehelements der Steuerleiste anzupassen.

CControlBar::EnableDocking

Rufen Sie diese Funktion auf, um zu aktivieren, dass eine Steuerleiste angedockt wird.

void EnableDocking(DWORD dwDockStyle);

Parameter

dwDockStyle
Gibt an, ob die Steuerleiste das Andocken und die Seiten des übergeordneten Fensters unterstützt, an die die Steuerleiste angedockt werden kann, falls unterstützt. Dies kann eine oder mehrere der folgenden Aktionen sein:

  • CBRS_ALIGN_TOP Ermöglicht das Andocken am oberen Rand des Clientbereichs.

  • CBRS_ALIGN_BOTTOM Ermöglicht das Andocken am unteren Rand des Clientbereichs.

  • CBRS_ALIGN_LEFT Ermöglicht das Andocken auf der linken Seite des Clientbereichs.

  • CBRS_ALIGN_RIGHT Ermöglicht das Andocken auf der rechten Seite des Clientbereichs.

  • CBRS_ALIGN_ANY Ermöglicht das Andocken auf jeder Seite des Clientbereichs.

  • CBRS_FLOAT_MULTI Ermöglicht das Gleiten mehrerer Steuerleisten in einem einzelnen Miniframefenster.

Wenn 0 (d. h. keine Kennzeichnungen) angibt, wird die Steuerleiste nicht angedockt.

Hinweise

Die angegebenen Seiten müssen mit einer der Seiten übereinstimmen, die für das Andocken im Zielrahmenfenster aktiviert sind, oder die Steuerleiste kann nicht an dieses Rahmenfenster angedockt werden.

CControlBar::GetBarStyle

Rufen Sie diese Funktion auf, um zu bestimmen, welche einstellungen für CBRS_ (Steuerelementleistenarten) derzeit für die Steuerelementleiste festgelegt sind.

DWORD GetBarStyle();

Rückgabewert

Die aktuellen CBRS_ -Einstellungen (Steuerelementleistenarten) für die Steuerelementleiste. Eine vollständige Liste der verfügbaren Formatvorlagen finden Sie unter CControlBar::SetBarStyle .

Hinweise

Behandelt WS_ Formatvorlagen (Fensterformatvorlagen) nicht .

CControlBar::GetBorders

Gibt die aktuellen Rahmenwerte für die Steuerelementleiste zurück.

CRect GetBorders() const;

Rückgabewert

Ein CRect Objekt, das die aktuelle Breite (in Pixel) jeder Seite des Steuerelementleistenobjekts enthält. Beispielsweise ist der Wert des linken Elements des CRect-Objekts die Breite des linken Rands.

CControlBar::GetCount

Gibt die Anzahl von Nicht-HWND-Elementen für das CControlBar Objekt zurück.

int GetCount() const;

Rückgabewert

Die Anzahl der Nicht-HWND-Elemente für das CControlBar Objekt. Diese Funktion gibt 0 für ein CDialogBar -Objekt zurück.

Hinweise

Der Typ des Elements hängt vom abgeleiteten Objekt ab: Bereiche für CStatusBar-Objekte sowie Schaltflächen und Trennzeichen für CToolBar-Objekte .

CControlBar::GetDockingFrame

Rufen Sie diese Memberfunktion auf, um einen Zeiger auf das aktuelle Framefenster abzurufen, an das die Steuerleiste angedockt ist.

CFrameWnd* GetDockingFrame() const;

Rückgabewert

Ein Zeiger auf ein Rahmenfenster bei erfolgreicher Ausführung; andernfalls NULL.

Wenn die Steuerleiste nicht an ein Rahmenfenster angedockt ist (d. h. wenn die Steuerleiste unverankert ist), gibt diese Funktion einen Zeiger auf das übergeordnete CMiniFrameWnd zurück.

Hinweise

Weitere Informationen zu dockbaren Steuerleisten finden Sie unter "CControlBar::EnableDocking " und "CFrameWnd::D ockControlBar".

CControlBar::IsFloating

Rufen Sie diese Memberfunktion auf, um zu bestimmen, ob die Steuerleiste unverankert oder angedockt ist.

BOOL IsFloating() const;

Rückgabewert

Nonzero, wenn die Steuerleiste unverankert ist; andernfalls 0.

Hinweise

Rufen Sie CFrameWnd::FloatControlBar auf, um den Status einer Steuerelementleiste von angedockt in unverankert zu ändern.

CControlBar::m_bAutoDelete

Wenn der Wert ungleich 0 (null) ist, wird das CControlBar-Objekt gelöscht, sobald die Windows-Steuerleiste zerstört wird.

BOOL m_bAutoDelete;

Hinweise

m_bAutoDelete ist eine öffentliche Variable vom Typ BOOL.

Ein Steuerelementleistenobjekt wird in der Regel in ein Framefensterobjekt eingebettet. In diesem Fall ist m_bAutoDelete 0, da das eingebettete Steuerelementleistenobjekt zerstört wird, wenn das Rahmenfenster zerstört wird.

Legen Sie diese Variable auf einen Wert ungleich Null fest, wenn Sie ein CControlBar Objekt für den Heap zuweisen und nicht planen, aufzurufen delete.

CControlBar::m_pInPlaceOwner

Der direkte Besitzer der Steuerleiste.

CWnd* m_pInPlaceOwner;

CControlBar::OnUpdateCmdUI

Diese Memberfunktion wird vom Framework aufgerufen, um den Status der Symbolleiste oder Statusleiste zu aktualisieren.

virtual void OnUpdateCmdUI(
    CFrameWnd* pTarget,
    BOOL bDisableIfNoHndler) = 0;

Parameter

pTarget
Zeigt auf das Hauptrahmenfenster der Anwendung. Dieser Zeiger wird zum Weiterleiten von Updatenachrichten verwendet.

bDisableIfNoHndler
Flag, das angibt, ob ein Steuerelement ohne Updatehandler automatisch als deaktiviert angezeigt werden soll.

Hinweise

Um eine einzelne Schaltfläche oder einen einzelnen Bereich zu aktualisieren, verwenden Sie das ON_UPDATE_COMMAND_UI Makro in Ihrer Nachrichtenzuordnung, um einen Updatehandler entsprechend festzulegen. Weitere Informationen zur Verwendung dieses Makros finden Sie unter ON_UPDATE_COMMAND_UI .

OnUpdateCmdUI wird vom Framework aufgerufen, wenn die Anwendung im Leerlauf ist. Das zu aktualisierende Rahmenfenster muss mindestens indirekt ein untergeordnetes Fenster eines sichtbaren Rahmenfensters sein. OnUpdateCmdUI ist ein erweiterter Außerkraftsetzungswert.

CControlBar::SetBarStyle

Rufen Sie diese Funktion auf, um die gewünschten CBRS_ Formatvorlagen für die Steuerelementleiste festzulegen.

void SetBarStyle(DWORD dwStyle);

Parameter

dwStyle
Die gewünschten Formatvorlagen für die Steuerelementleiste. Dies kann eine oder mehrere der folgenden Aktionen sein:

  • CBRS_ALIGN_TOP Ermöglicht, dass die Steuerleiste am oberen Rand des Clientbereichs eines Rahmenfensters angedockt wird.

  • CBRS_ALIGN_BOTTOM Ermöglicht, dass die Steuerleiste am unteren Rand des Clientbereichs eines Rahmenfensters angedockt wird.

  • CBRS_ALIGN_LEFT Ermöglicht das Andocken der Steuerleiste an die linke Seite des Clientbereichs eines Rahmenfensters.

  • CBRS_ALIGN_RIGHT Ermöglicht das Andocken der Steuerleiste an die rechte Seite des Clientbereichs eines Rahmenfensters.

  • CBRS_ALIGN_ANY Ermöglicht, dass die Steuerleiste an eine beliebige Seite des Clientbereichs eines Framefensters angedockt wird.

  • CBRS_BORDER_TOP Bewirkt, dass ein Rahmen am oberen Rand der Steuerelementleiste gezeichnet wird, wenn er sichtbar wäre.

  • CBRS_BORDER_BOTTOM Bewirkt, dass ein Rahmen am unteren Rand der Steuerleiste gezeichnet wird, wenn er sichtbar wäre.

  • CBRS_BORDER_LEFT Bewirkt, dass ein Rahmen am linken Rand der Steuerleiste gezeichnet wird, wenn er sichtbar wäre.

  • CBRS_BORDER_RIGHT Bewirkt, dass ein Rahmen am rechten Rand der Steuerleiste gezeichnet wird, wenn er sichtbar wäre.

  • CBRS_FLOAT_MULTI Ermöglicht das Gleiten mehrerer Steuerleisten in einem einzelnen Miniframefenster.

  • CBRS_TOOLTIPS Bewirkt, dass QuickInfos für die Steuerelementleiste angezeigt werden.

  • CBRS_FLYBY bewirkt, dass Nachrichtentext gleichzeitig mit QuickInfos aktualisiert wird.

  • CBRS_GRIPPER Bewirkt, dass ein Ziehelement, ähnlich wie bei Bändern in einem CReBar Objekt, für jede CControlBarabgeleitete Klasse gezeichnet wird.

Hinweise

Wirkt sich nicht auf die Einstellungen für WS_ (Fensterformatvorlage) aus.

CControlBar::SetBorders

Rufen Sie diese Funktion auf, um die Größe der Rahmenlinien der Steuerelementleiste festzulegen.

void SetBorders(
    int cxLeft = 0,
    int cyTop = 0,
    int cxRight = 0,
    int cyBottom = 0);

void SetBorders(LPCRECT lpRect);

Parameter

cxLeft
Die Breite (in Pixel) des linken Rahmens der Steuerelementleiste.

cyTop
Die Höhe (in Pixel) des oberen Rahmens der Steuerelementleiste.

cxRight
Die Breite (in Pixel) des rechten Rahmens der Steuerelementleiste.

cyBottom
Die Höhe (in Pixel) des unteren Rahmens der Steuerelementleiste.

lpRect
Ein Zeiger auf ein CRect-Objekt , das die aktuelle Breite (in Pixel) jedes Rahmens des Steuerelementleistenobjekts enthält.

Beispiel

Im folgenden Codebeispiel werden die oberen und unteren Rahmen der Steuerelementleiste auf 5 Pixel und die linken und rechten Rahmen auf 2 Pixel festgelegt:

CControlBar &m_myControlBar = m_Rebar;
m_myControlBar.SetBorders(2, 5, 2, 5);

CControlBar::SetInPlaceOwner

Ändert den direkten Besitzer einer Steuerleiste.

void SetInPlaceOwner(CWnd* pWnd);

Parameter

pWnd
Ein Zeiger auf ein CWnd-Objekt.

Hinweise

Siehe auch

MFC-Beispiel STRGBARS
CWnd-Klasse
Hierarchiediagramm
CToolBar-Klasse
CDialogBar-Klasse
CStatusBar-Klasse
CReBar-Klasse