Partager via


CSplitButton, classe

La CSplitButton classe représente un contrôle bouton fractionné. Le contrôle bouton partagé exécute un comportement par défaut lorsqu’un utilisateur clique sur la partie principale du bouton et affiche un menu déroulant lorsqu’un utilisateur clique sur la flèche déroulante du bouton.

Syntaxe

class CSplitButton : public CButton

Membres

Constructeurs publics

Nom Description
CSplitButton ::CSplitButton Construit un objet CSplitButton.

Méthodes publiques

Nom Description
CSplitButton ::Create Crée un contrôle de bouton fractionné avec des styles spécifiés et l’attache à l’objet actuel CSplitButton .
CSplitButton ::SetDropDownMenu Définit le menu déroulant qui s’affiche lorsqu’un utilisateur clique sur la flèche déroulante du contrôle de bouton fractionné actuel.

Méthodes protégées

Nom Description
CSplitButton ::OnDropDown Gère la notification BCN_DROPDOWN que le système envoie lorsqu’un utilisateur clique sur la flèche déroulante du contrôle de bouton fractionné actuel.

Notes

La CSplitButton classe est dérivée de la classe CButton . Le contrôle bouton fractionné est un contrôle bouton dont le style est BS_SPLITBUTTON. Il affiche un menu personnalisé lorsqu’un utilisateur clique sur la flèche déroulante. Pour plus d’informations, consultez les styles BS_SPLITBUTTON et BS_DEFSPLITBUTTON dans Styles de bouton.

La figure suivante illustre une boîte de dialogue qui contient un contrôle paginateur et un (1) contrôle bouton fractionné. La flèche déroulante (2) a déjà été cliquée et le sous-menu (3) s’affiche.

Boîte de dialogue avec un contrôle splitbutton et pager.

Hiérarchie d'héritage

CObject

CCmdTarget

CWnd

CButton

CSplitButton

Spécifications

En-tête : afxcmn.h

Cette classe est prise en charge dans Windows Vista et versions ultérieures.

Des exigences supplémentaires pour cette classe sont décrites dans Build Requirements for Windows Vista Common Controls.

CSplitButton ::Create

Crée un contrôle de bouton fractionné avec des styles spécifiés et l’attache à l’objet actuel CSplitButton .

virtual BOOL Create(
    DWORD dwStyle,
    const RECT& rect,
    CWnd* pParentWnd,
    UINT nID);

Paramètres

dwStyle
[in] Combinaison de bits (OR) de styles à appliquer au contrôle. Pour plus d’informations, consultez Styles de bouton.

rect
[in] Référence à une structure RECT qui contient la position et la taille du contrôle.

pParentWnd
[in] Pointeur non null vers un objet CWnd qui est la fenêtre parente du contrôle.

nID
[in] ID du contrôle.

Valeur de retour

TRUE si cette méthode réussit ; sinon, FALSE.

CSplitButton ::CSplitButton

Construit un objet CSplitButton. Les paramètres du constructeur spécifient un sous-menu qui s’affiche lorsqu’un utilisateur clique sur la flèche déroulante du contrôle bouton fractionné.

CSplitButton();

CSplitButton(
    UINT nMenuId,
    UINT nSubMenuId)
CSplitButton(CMenu* pMenu)

Paramètres

nMenuId
[in] ID de ressource de la barre de menus.

nSubMenuId
[in] ID de ressource d’un sous-menu.

pMenu
[in] Pointeur vers un objet CMenu qui spécifie un sous-menu. L’objet CSplitButton supprime l’objet CMenu et son HMENU associé lorsque l’objet CSplitButton sort de l’étendue.

Notes

Utilisez la méthode CSplitButton ::Create pour créer un contrôle de bouton fractionné et l’attacher à l’objet CSplitButton .

CSplitButton ::OnDropDown

Gère la notification BCN_DROPDOWN que le système envoie lorsqu’un utilisateur clique sur la flèche déroulante du contrôle de bouton fractionné actuel.

afx_msg void OnDropDown(
    NMHDR* pNMHDR,
    LRESULT* pResult);

Paramètres

pNMHDR
[in] Pointeur vers une structure NMHDR qui contient des informations sur la notification BCN_DROPDOWN .

pResult
[out] (Non utilisé ; aucune valeur n’est retournée.) Valeur de retour de la notification BCN_DROPDOWN .

Notes

Lorsque l’utilisateur clique sur la flèche déroulante sur un contrôle de bouton fractionné, le système envoie un message de notification BCN_DROPDOWN, que la OnDropDown méthode gère. Toutefois, l’objet CSplitButton ne transfère pas la notification BCN_DROPDOWN au contrôle qui contient le contrôle bouton fractionné. Par conséquent, le contrôle conteneur ne peut pas prendre en charge une action personnalisée en réponse à la notification.

Pour implémenter une action personnalisée prise en charge par le contrôle conteneur, utilisez un objet CButton avec un style de BS_SPLITBUTTON au lieu d’un CSplitButton objet. Implémentez ensuite un gestionnaire pour la notification BCN_DROPDOWN dans l’objet CButton . Pour plus d’informations, consultez Styles de bouton.

Pour implémenter une action personnalisée prise en charge par le contrôle de bouton fractionné lui-même, utilisez la réflexion des messages. Dérivez votre propre classe de la classe et nommez-la CSplitButton , par exemple, CMySplitButton. Ajoutez ensuite le mappage de messages suivant à votre application pour gérer la notification BCN_DROPDOWN :

BEGIN_MESSAGE_MAP(CMySplitButton,
    CSplitButton)
    ON_NOTIFY_REFLECT(BCN_DROPDOWN, &CMySplitButton::OnDropDown)
END_MESSAGE_MAP()

CSplitButton ::SetDropDownMenu

Définit le menu déroulant qui s’affiche lorsqu’un utilisateur clique sur la flèche déroulante du contrôle de bouton fractionné actuel.

void SetDropDownMenu(
    UINT nMenuId,
    UINT nSubMenuId);

void SetDropDownMenu(CMenu* pMenu);

Paramètres

nMenuId
[in] ID de ressource de la barre de menus.

nSubMenuId
[in] ID de ressource d’un sous-menu.

pMenu
[in] Pointeur vers un objet CMenu qui spécifie un sous-menu. L’objet CSplitButton supprime l’objet CMenu et son HMENU associé lorsque l’objet CSplitButton sort de l’étendue.

Notes

Le paramètre nMenuId identifie une barre de menus, qui est une liste horizontale d’éléments de barre de menus. Le paramètre nSubMenuId est un numéro d’index de base zéro qui identifie un sous-menu, qui est la liste déroulante des éléments de menu associés à chaque élément de barre de menus. Par exemple, une application classique a un menu qui contient les éléments de la barre de menus, « Fichier », « Modifier » et « Aide ». L’élément de barre de menus « Fichier » a un sous-menu qui contient les éléments de menu, « Ouvrir », « Fermer » et « Quitter ». Lorsque la flèche déroulante du contrôle split-button est activée, le contrôle affiche le sous-menu spécifié, et non la barre de menus.

La figure suivante illustre une boîte de dialogue qui contient un contrôle paginateur et un (1) contrôle bouton fractionné. La flèche déroulante (2) a déjà été cliquée et le sous-menu (3) s’affiche.

Boîte de dialogue avec un contrôle splitbutton et pager.

Exemple

La première instruction de l’exemple de code suivant illustre la méthode CSplitButton ::SetDropDownMenu . Nous avons créé le menu avec l’éditeur de ressources Visual Studio, qui a automatiquement nommé l’ID de barre de menus, IDR_MENU1. Le paramètre nSubMenuId , qui est égal à zéro, fait référence au seul sous-menu de la barre de menus.

// Initialize the dropdown menu of the splitbutton control.
m_splitButton.SetDropDownMenu(IDR_MENU1, 0);

// Create the pager control.
BOOL nRet;
CRect rect;
GetClientRect(&rect);
nRet = m_pager.Create(
    (WS_VISIBLE | WS_CHILD | PGS_HORZ),
    CRect(rect.Width() / 4, 5, (rect.Width() * 3) / 4, 55),
    this,
    IDC_PAGER1);

m_pager.GetClientRect(&rect);
nRet = m_button.Create(
    _T("This is a very, very long button. 012345678901234567890"),
    (WS_VISIBLE | WS_CHILD), // Do not use CCS_NORESIZE.
    CRect(0, 0, rect.Width(), 30),
    &m_pager, IDC_BUTTON1);

m_pager.SetChild(m_button.m_hWnd);
m_pager.SetButtonSize(20);
m_pager.SetBorder(1);

Voir aussi

CSplitButton, classe
Graphique hiérarchique
CButton, classe