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 :
Note technique 31 : Barres de contrôle.
Hiérarchie d'héritage
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 CControlBar
vous dérivez de . Les classes MFC dérivées CControlBar
de , 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 quelleCControlBar
classe 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