Share via


CControlBar Class

Classe de base pour les classes de barre de contrôle CStatusBar, CToolBar, CDialogBar, CReBar et COleResizeBar.

Syntaxe

class CControlBar : public CWnd

Membres

Constructeurs protégés

Nom Description
CControlBar ::CControlBar Construit un objet CControlBar.

Méthodes publiques

Nom Description
CControlBar ::CalcDynamicLayout Retourne la taille d’une barre de contrôle dynamique en tant qu’objet CSize .
CControlBar ::CalcFixedLayout Retourne la taille de la barre de contrôle en tant qu’objet CSize .
CControlBar ::CalcInsideRect Retourne les dimensions actuelles de la zone de barre de contrôle ; y compris les bordures.
CControlBar ::D oPaint Affiche les bordures et le pincement de la barre de contrôle.
CControlBar ::D rawBorders Affiche les bordures de la barre de contrôle.
CControlBar ::D rawGripper Affiche le grippeur de la barre de contrôle.
CControlBar ::EnableDocking Permet à une barre de contrôle d’être ancrée ou flottante.
CControlBar ::GetBarStyle Récupère les paramètres de style de barre de contrôle.
CControlBar ::GetBorders Récupère les valeurs de bordure de la barre de contrôle.
CControlBar ::GetCount Retourne le nombre d’éléments non HWND dans la barre de contrôle.
CControlBar ::GetDockingFrame Retourne un pointeur vers le cadre vers lequel une barre de contrôle est ancrée.
CControlBar ::IsFloating Retourne une valeur différente de zéro si la barre de contrôle en question est une barre de contrôle flottante.
CControlBar ::OnUpdateCmdUI Appelle les gestionnaires d’interface utilisateur de commande.
CControlBar ::SetBarStyle Modifie les paramètres de style de barre de contrôle.
CControlBar ::SetBorders Définit les valeurs de bordure de la barre de contrôle.
CControlBar ::SetInPlaceOwner Modifie le propriétaire sur place d’une barre de contrôle.

Membres de données publics

Nom Description
CControlBar ::m_bAutoDelete Si ce n’est pas différent de zéro, l’objet CControlBar est supprimé lorsque la barre de contrôle Windows est détruite.
CControlBar ::m_pInPlaceOwner Propriétaire sur place de la barre de contrôle.

Notes

Une barre de contrôle est une fenêtre généralement alignée à gauche ou à droite d’une fenêtre frame. Il peut contenir des éléments enfants qui sont soit des contrôles basés sur HWND, qui sont des fenêtres qui génèrent et répondent aux messages Windows, soit des éléments non basés sur HWND, qui ne sont pas des fenêtres et qui sont gérés par du code d’application ou du code framework. Les zones de liste et les contrôles de modification sont des exemples de contrôles basés sur HWND ; Les volets de barre d’état et les boutons bitmap sont des exemples de contrôles non basés sur HWND.

Les fenêtres de barre de contrôle sont généralement des fenêtres enfants d’une fenêtre frame parente et sont généralement frères dans l’affichage client ou le client MDI de la fenêtre frame. Un CControlBar objet utilise des informations sur le rectangle client de la fenêtre parente pour se positionner. Il informe ensuite la fenêtre parente de la quantité d’espace restant non allouée dans la zone cliente de la fenêtre parente.

Pour plus d’informations sur CControlBar, consultez :

Hiérarchie d'héritage

CObject

CCmdTarget

CWnd

CControlBar

Spécifications

En-tête : afxext.h

CControlBar ::CalcDynamicLayout

L’infrastructure appelle cette fonction membre pour calculer les dimensions d’une barre d’outils dynamique.

virtual CSize CalcDynamicLayout(
    int nLength,
    DWORD nMode);

Paramètres

nLength
Dimension demandée de la barre de contrôle, horizontale ou verticale, selon dwMode.

nMode
Les indicateurs prédéfinis suivants sont utilisés pour déterminer la hauteur et la largeur de la barre de contrôle dynamique. Utilisez l’opérateur OR (|) au niveau du bit pour combiner les indicateurs.

Indicateurs de mode disposition Signification
LM_STRETCH Indique si la barre de contrôle doit être étirée à la taille du cadre. Définissez si la barre n’est pas une barre d’ancrage (non disponible pour l’ancrage). Non défini lorsque la barre est ancrée ou flottante (disponible pour l’ancrage). Si elle est définie, LM_STRETCH ignore nLength et retourne des dimensions en fonction de l’état LM_HORZ. LM_STRETCH fonctionne de la même façon que le paramètre bStretch utilisé dans CalcFixedLayout. Consultez cette fonction membre pour plus d’informations sur la relation entre étirement et orientation.
LM_HORZ Indique que la barre est orientée horizontalement ou verticalement. Définissez si la barre est orientée horizontalement et si elle est orientée verticalement, elle n’est pas définie. LM_HORZ fonctionne de la même façon que le paramètre bHorz utilisé dans CalcFixedLayout ; consultez cette fonction membre pour plus d’informations sur la relation entre étirement et orientation.
LM_MRUWIDTH Largeur dynamique la plus récente utilisée. Ignore le paramètre nLength et utilise la largeur la plus récente utilisée.
LM_HORZDOCK Dimensions ancrées horizontales. Ignore le paramètre nLength et retourne la taille dynamique avec la plus grande largeur.
LM_VERTDOCK Dimensions ancrées verticales. Ignore le paramètre nLength et retourne la taille dynamique avec la plus grande hauteur.
LM_LENGTHY Définissez si nLength indique la hauteur (direction Y) au lieu de la largeur.
LM_COMMIT Réinitialise LM_MRUWIDTH à la largeur actuelle de la barre de contrôle flottante.

Valeur de retour

Taille de la barre de contrôle, en pixels, d’un objet CSize .

Notes

Remplacez cette fonction membre pour fournir votre propre disposition dynamique dans les classes que CControlBarvous dérivez de . Les classes MFC dérivées CControlBarde , telles que CToolbar, remplacent cette fonction membre et fournissent leur propre implémentation.

CControlBar ::CalcFixedLayout

Appelez cette fonction membre pour calculer la taille horizontale d’une barre de contrôle.

virtual CSize CalcFixedLayout(
    BOOL bStretch,
    BOOL bHorz);

Paramètres

bStretch
Indique si la barre doit être étirée à la taille du cadre. Le paramètre bStretch n’est pas différent de zéro lorsque la barre n’est pas une barre d’ancrage (non disponible pour l’ancrage) et est 0 lorsqu’elle est ancrée ou flottante (disponible pour l’ancrage).

bHorz
Indique que la barre est orientée horizontalement ou verticalement. Le paramètre bHorz est différent de zéro si la barre est orientée horizontalement et est 0 si elle est orientée verticalement.

Valeur de retour

Taille de la barre de contrôle, en pixels, d’un CSize objet.

Notes

Les barres de contrôle telles que les barres d’outils peuvent s’étirer horizontalement ou verticalement pour prendre en charge les boutons contenus dans la barre de contrôle.

Si bStretch a la valeur TRUE, étirez la dimension le long de l’orientation fournie par bHorz. En d’autres termes, si bHorz a la valeur FALSE, la barre de contrôle est étirée verticalement. Si bStretch a la valeur FALSE, aucune étirement n’a lieu. Le tableau suivant présente les permutations possibles, ainsi que les styles de barre de contrôle résultants, de bStretch et bHorz.

bStretch bHorz Étirement Orientation Docking/Not docking
VRAI VRAI Étirement horizontal Orienté horizontalement Ne pas ancrer
VRAI FAUX Étirement vertical Orienté verticalement Ne pas ancrer
FAUX VRAI Pas d’étirement disponible Orienté horizontalement Ancrage
FAUX FAUX Pas d’étirement disponible Orienté verticalement Ancrage

CControlBar ::CalcInsideRect

L’infrastructure appelle cette fonction pour calculer la zone cliente de la barre de contrôle.

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

Paramètres

Rect
Contient les dimensions actuelles de la barre de contrôle ; y compris les bordures.

bHorz
Indique que la barre est orientée horizontalement ou verticalement. Le paramètre bHorz est différent de zéro si la barre est orientée horizontalement et est 0 si elle est orientée verticalement.

Notes

Cette fonction est appelée avant la peinture de la barre de contrôle.

Remplacez cette fonction pour personnaliser le rendu des bordures et de la barre de saisie de la barre de contrôle.

CControlBar ::CControlBar

Construit un objet CControlBar.

CControlBar();

CControlBar ::D oPaint

Appelé par l’infrastructure pour afficher les bordures et la barre de grippe de la barre de contrôle.

virtual void DoPaint(CDC* pDC);

Paramètres

pDC
Pointe vers le contexte de l’appareil à utiliser pour restituer les bordures et le pincement de la barre de contrôle.

Notes

Remplacez cette fonction pour personnaliser le comportement de dessin de la barre de contrôle.

Une autre méthode de personnalisation consiste à remplacer les DrawBorders fonctions et DrawGripper à ajouter du code de dessin personnalisé pour les bordures et le gripper. Étant donné que ces méthodes sont appelées par la méthode par défaut DoPaint , une substitution n’est DoPaint pas nécessaire.

CControlBar ::D rawBorders

Appelé par l’infrastructure pour afficher les bordures de la barre de contrôle.

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

Paramètres

pDC
Pointe vers le contexte de l’appareil à utiliser pour afficher les bordures de la barre de contrôle.

Rect
Objet CRect contenant les dimensions de la barre de contrôle.

Notes

Remplacez cette fonction pour personnaliser l’apparence des bordures de la barre de contrôle.

CControlBar ::D rawGripper

Appelé par l’infrastructure pour restituer le gripper de la barre de contrôle.

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

Paramètres

pDC
Pointe vers le contexte de l’appareil à utiliser pour le rendu du grippeur de barre de contrôle.

Rect
Objet CRect contenant les dimensions du grippeur de barre de contrôle.

Notes

Remplacez cette fonction pour personnaliser l’apparence du grippeur de barre de contrôle.

CControlBar ::EnableDocking

Appelez cette fonction pour permettre à une barre de contrôle d’être ancrée.

void EnableDocking(DWORD dwDockStyle);

Paramètres

dwDockStyle
Spécifie si la barre de contrôle prend en charge l’ancrage et les côtés de sa fenêtre parente à laquelle la barre de contrôle peut être ancrée, si elle est prise en charge. Il peut s’agir d’un ou de plusieurs des éléments suivants :

  • CBRS_ALIGN_TOP Autorise l’ancrage en haut de la zone cliente.

  • CBRS_ALIGN_BOTTOM Autorise l’ancrage en bas de la zone cliente.

  • CBRS_ALIGN_LEFT Autorise l’ancrage sur le côté gauche de la zone cliente.

  • CBRS_ALIGN_RIGHT Autorise l’ancrage sur le côté droit de la zone cliente.

  • CBRS_ALIGN_ANY Autorise l’ancrage sur n’importe quel côté de la zone cliente.

  • CBRS_FLOAT_MULTI Permet à plusieurs barres de contrôle d’être flottantes dans une seule fenêtre mini-frame.

Si 0 (autrement dit, indiquant aucun indicateur), la barre de contrôle ne s’ancre pas.

Notes

Les côtés spécifiés doivent correspondre à l’un des côtés activés pour l’ancrage dans la fenêtre cadre de destination, ou la barre de contrôle ne peut pas être ancrée dans cette fenêtre de cadre.

CControlBar ::GetBarStyle

Appelez cette fonction pour déterminer quels paramètres CBRS_ (styles de barre de contrôle) sont actuellement définis pour la barre de contrôle.

DWORD GetBarStyle();

Valeur de retour

Paramètres de CBRS_ (styles de barre de contrôle) actuels pour la barre de contrôle. Consultez CControlBar ::SetBarStyle pour obtenir la liste complète des styles disponibles.

Notes

Ne gère pas les styles WS_ (style de fenêtre).

CControlBar ::GetBorders

Retourne les valeurs de bordure actuelles de la barre de contrôle.

CRect GetBorders() const;

Valeur de retour

Objet CRect qui contient la largeur actuelle (en pixels) de chaque côté de l’objet de barre de contrôle. Par exemple, la valeur du membre gauche , de l’objet CRect , est la largeur de la bordure de la main gauche.

CControlBar ::GetCount

Retourne le nombre d’éléments non HWND sur l’objet CControlBar .

int GetCount() const;

Valeur de retour

Nombre d’éléments non HWND sur l’objet CControlBar . Cette fonction retourne 0 pour un objet CDialogBar .

Notes

Le type de l’élément dépend de l’objet dérivé : volets pour les objets CStatusBar , boutons et séparateurs pour les objets CToolBar .

CControlBar ::GetDockingFrame

Appelez cette fonction membre pour obtenir un pointeur vers la fenêtre frame actuelle vers laquelle votre barre de contrôle est ancrée.

CFrameWnd* GetDockingFrame() const;

Valeur de retour

Pointeur vers une fenêtre frame si elle réussit ; sinon NULL.

Si la barre de contrôle n’est pas ancrée dans une fenêtre frame (autrement dit, si la barre de contrôle est flottante), cette fonction retourne un pointeur vers son CMiniFrameWnd parent.

Notes

Pour plus d’informations sur les barres de contrôle ancreables, consultez CControlBar ::EnableDocking et CFrameWnd ::D ockControlBar.

CControlBar ::IsFloating

Appelez cette fonction membre pour déterminer si la barre de contrôle est flottante ou ancrée.

BOOL IsFloating() const;

Valeur de retour

Différent de zéro si la barre de contrôle est flottante ; sinon 0.

Notes

Pour changer l’état d’une barre de contrôle ancrée en flottante, appelez CFrameWnd ::FloatControlBar.

CControlBar ::m_bAutoDelete

Si ce n’est pas différent de zéro, l’objet CControlBar est supprimé lorsque la barre de contrôle Windows est détruite.

BOOL m_bAutoDelete;

Notes

m_bAutoDelete est une variable publique de type BOOL.

Un objet de barre de contrôle est généralement incorporé dans un objet frame-window. Dans ce cas, m_bAutoDelete est 0, car l’objet de barre de contrôle incorporé est détruit lorsque la fenêtre frame est détruite.

Définissez cette variable sur une valeur différente de zéro si vous allouez un CControlBar objet sur le tas et que vous ne prévoyez pas d’appeler delete.

CControlBar ::m_pInPlaceOwner

Propriétaire sur place de la barre de contrôle.

CWnd* m_pInPlaceOwner;

CControlBar ::OnUpdateCmdUI

Cette fonction membre est appelée par l’infrastructure pour mettre à jour l’état de la barre d’outils ou de la barre d’état.

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

Paramètres

pTarget
Pointe vers la fenêtre de trame principale de l’application. Ce pointeur est utilisé pour le routage des messages de mise à jour.

bDisableIfNoHndler
Indicateur qui indique si un contrôle qui n’a pas de gestionnaire de mise à jour doit être affiché automatiquement comme désactivé.

Notes

Pour mettre à jour un bouton ou un volet individuel, utilisez la macro ON_UPDATE_COMMAND_UI dans votre mappage de messages pour définir correctement un gestionnaire de mises à jour. Pour plus d’informations sur l’utilisation de cette macro, consultez ON_UPDATE_COMMAND_UI .

OnUpdateCmdUI est appelé par l’infrastructure lorsque l’application est inactive. La fenêtre frame à mettre à jour doit être une fenêtre enfant, au moins indirectement, d’une fenêtre de cadre visible. OnUpdateCmdUI est un élément substituable avancé.

CControlBar ::SetBarStyle

Appelez cette fonction pour définir les styles de CBRS_ souhaités pour la barre de contrôle.

void SetBarStyle(DWORD dwStyle);

Paramètres

dwStyle
Styles souhaités pour la barre de contrôle. Il peut s’agir d’un ou de plusieurs des éléments suivants :

  • CBRS_ALIGN_TOP Permet à la barre de contrôle d’être ancrée en haut de la zone cliente d’une fenêtre frame.

  • CBRS_ALIGN_BOTTOM Permet à la barre de contrôle d’être ancrée en bas de la zone cliente d’une fenêtre frame.

  • CBRS_ALIGN_LEFT Permet à la barre de contrôle d’être ancrée à gauche de la zone cliente d’une fenêtre frame.

  • CBRS_ALIGN_RIGHT Permet à la barre de contrôle d’être ancrée à droite de la zone cliente d’une fenêtre frame.

  • CBRS_ALIGN_ANY Permet à la barre de contrôle d’être ancrée à n’importe quel côté de la zone cliente d’une fenêtre frame.

  • CBRS_BORDER_TOP Provoque le dessin d’une bordure sur le bord supérieur de la barre de contrôle lorsqu’elle serait visible.

  • CBRS_BORDER_BOTTOM Provoque le dessin d’une bordure sur le bord inférieur de la barre de contrôle lorsqu’elle serait visible.

  • CBRS_BORDER_LEFT Provoque le dessin d’une bordure sur le bord gauche de la barre de contrôle lorsqu’elle serait visible.

  • CBRS_BORDER_RIGHT Provoque le dessin d’une bordure sur le bord droit de la barre de contrôle lorsqu’elle serait visible.

  • CBRS_FLOAT_MULTI Permet à plusieurs barres de contrôle d’être flottantes dans une seule fenêtre mini-frame.

  • CBRS_TOOLTIPS Causes de l’affichage des info-bulles pour la barre de contrôle.

  • CBRS_FLYBY Provoque la mise à jour du texte du message en même temps que des conseils sur les outils.

  • CBRS_GRIPPER Provoque un gripper, similaire à celui utilisé sur les bandes d’un CReBar objet, à dessiner pour n’importe quelle CControlBarclasse dérivée.

Notes

N’affecte pas les paramètres WS_ (style de fenêtre).

CControlBar ::SetBorders

Appelez cette fonction pour définir la taille des bordures de la barre de contrôle.

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

void SetBorders(LPCRECT lpRect);

Paramètres

cxLeft
Largeur (en pixels) de la bordure gauche de la barre de contrôle.

cyTop
Hauteur (en pixels) de la bordure supérieure de la barre de contrôle.

cxRight
Largeur (en pixels) de la bordure droite de la barre de contrôle.

cyBottom
Hauteur (en pixels) de la bordure inférieure de la barre de contrôle.

lpRect
Pointeur vers un objet CRect qui contient la largeur actuelle (en pixels) de chaque bordure de l’objet de barre de contrôle.

Exemple

L’exemple de code suivant définit les bordures supérieure et inférieure de la barre de contrôle sur 5 pixels, et les bordures gauche et droite sur 2 pixels :

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

CControlBar ::SetInPlaceOwner

Modifie le propriétaire sur place d’une barre de contrôle.

void SetInPlaceOwner(CWnd* pWnd);

Paramètres

Pwnd
Pointeur vers un objet CWnd.

Notes

Voir aussi

Exemple MFC CTRLBARS
CWnd, classe
Graphique hiérarchique
CToolBar, classe
CDialogBar, classe
CStatusBar, classe
CReBar, classe