Classe CSplitButton

La CSplitButton classe rappresenta un controllo pulsante di divisione. Il controllo pulsante di menu combinato segue un comportamento predefinito quando un utente fa clic sulla parte principale del pulsante e visualizza un menu a discesa quando l'utente fa clic sulla freccia a discesa del pulsante.

Sintassi

class CSplitButton : public CButton

Membri

Costruttori pubblici

Nome Descrizione
CSplitButton::CSplitButton Costruisce un oggetto CSplitButton.

Metodi pubblici

Nome Descrizione
CSplitButton::Create Crea un controllo pulsante di divisione con gli stili specificati e lo associa all'oggetto corrente CSplitButton .
CSplitButton::SetDropDownMenu Imposta il menu a discesa visualizzato quando un utente fa clic sulla freccia a discesa del controllo pulsante di divisione corrente.

Metodi protetti

Nome Descrizione
CSplitButton::OnDropDown Gestisce la notifica BCN_DROPDOWN inviata dal sistema quando un utente fa clic sulla freccia a discesa del controllo pulsante di divisione corrente.

Osservazioni:

La CSplitButton classe è derivata dalla classe CButton . Il controllo pulsante di divisione è un controllo pulsante il cui stile è BS_SPLITBUTTON. Visualizza un menu personalizzato quando un utente fa clic sulla freccia a discesa. Per altre informazioni, vedere gli stili BS_SPLITBUTTON e BS_DEFSPLITBUTTON in Stili pulsante.

La figura seguente illustra una finestra di dialogo che contiene un controllo cercapersone e un controllo pulsante di divisione (1). La freccia a discesa (2) è già stata selezionata e viene visualizzato il sottomenu (3).

Finestra di dialogo con un controllo splitbutton e pager.

Gerarchia di ereditarietà

CObject

CCmdTarget

CWnd

CButton

CSplitButton

Requisiti

Intestazione: afxcmn.h

Questa classe è supportata in Windows Vista e versioni successive.

I requisiti aggiuntivi per questa classe sono descritti in Requisiti di compilazione per i controlli comuni di Windows Vista.

CSplitButton::Create

Crea un controllo pulsante di divisione con gli stili specificati e lo associa all'oggetto corrente CSplitButton .

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

Parametri

dwStyle
[in] Combinazione bit per bit (OR) di stili da applicare al controllo. Per altre informazioni, vedere Stili pulsante.

rect
[in] Riferimento a una struttura RECT che contiene la posizione e le dimensioni del controllo.

pParentWnd
[in] Puntatore non Null a un oggetto CWnd che rappresenta la finestra padre del controllo.

nID
[in] ID del controllo.

Valore restituito

TRUE se questo metodo ha esito positivo; in caso contrario, FALSE.

CSplitButton::CSplitButton

Costruisce un oggetto CSplitButton. I parametri del costruttore specificano un sottomenu visualizzato quando un utente fa clic sulla freccia a discesa del controllo pulsante di divisione.

CSplitButton();

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

Parametri

nMenuId
[in] ID risorsa della barra dei menu.

nSubMenuId
[in] ID risorsa di un sottomenu.

pMenu
[in] Puntatore a un oggetto CMenu che specifica un sottomenu. L'oggetto CSplitButton elimina l'oggetto CMenu e l'oggetto HMENU associato quando l'oggetto esce dall'ambito CSplitButton .

Osservazioni:

Usare il metodo CSplitButton::Create per creare un controllo pulsante di divisione e collegarlo all'oggetto CSplitButton .

CSplitButton::OnDropDown

Gestisce la notifica BCN_DROPDOWN inviata dal sistema quando un utente fa clic sulla freccia a discesa del controllo pulsante di divisione corrente.

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

Parametri

pNMHDR
[in] Puntatore a una struttura NMHDR che contiene informazioni sulla notifica di BCN_DROPDOWN .

pResult
[out] Non utilizzato. Non viene restituito alcun valore. Valore restituito della notifica di BCN_DROPDOWN .

Osservazioni:

Quando l'utente fa clic sulla freccia a discesa su un controllo pulsante di divisione, il sistema invia un messaggio di notifica BCN_DROPDOWN, gestito dal OnDropDown metodo. Tuttavia, l'oggetto CSplitButton non inoltra la notifica BCN_DROPDOWN al controllo che contiene il controllo pulsante di divisione. Di conseguenza, il controllo contenitore non può supportare un'azione personalizzata in risposta alla notifica.

Per implementare un'azione personalizzata supportata dal controllo contenitore, utilizzare un oggetto CButton con uno stile di BS_SPLITBUTTON anziché un CSplitButton oggetto . Implementare quindi un gestore per la notifica di BCN_DROPDOWN nell'oggetto CButton . Per altre informazioni, vedere Stili pulsante.

Per implementare un'azione personalizzata supportata dal controllo pulsante di divisione stesso, usare la reflection dei messaggi. Derivare la propria classe dalla CSplitButton classe e denominarla, ad esempio CMySplitButton. Aggiungere quindi il mapping dei messaggi seguente all'applicazione per gestire la notifica di BCN_DROPDOWN:

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

CSplitButton::SetDropDownMenu

Imposta il menu a discesa visualizzato quando un utente fa clic sulla freccia a discesa del controllo pulsante di divisione corrente.

void SetDropDownMenu(
    UINT nMenuId,
    UINT nSubMenuId);

void SetDropDownMenu(CMenu* pMenu);

Parametri

nMenuId
[in] ID risorsa della barra dei menu.

nSubMenuId
[in] ID risorsa di un sottomenu.

pMenu
[in] Puntatore a un oggetto CMenu che specifica un sottomenu. L'oggetto CSplitButton elimina l'oggetto CMenu e l'oggetto HMENU associato quando l'oggetto esce dall'ambito CSplitButton .

Osservazioni:

Il parametro nMenuId identifica una barra dei menu, ovvero un elenco orizzontale di voci della barra dei menu. Il parametro nSubMenuId è un numero di indice in base zero che identifica un sottomenu, ovvero l'elenco a discesa delle voci di menu associate a ogni voce della barra dei menu. Ad esempio, un'applicazione tipica include un menu che contiene le voci della barra dei menu, "File", "Modifica" e "Guida". La voce della barra dei menu "File" include un sottomenu che contiene le voci di menu, "Apri", "Chiudi" e "Esci". Quando si fa clic sulla freccia a discesa del controllo pulsante di divisione, il controllo visualizza il sottomenu specificato, non la barra dei menu.

La figura seguente illustra una finestra di dialogo che contiene un controllo cercapersone e un controllo pulsante di divisione (1). La freccia a discesa (2) è già stata selezionata e viene visualizzato il sottomenu (3).

Finestra di dialogo con un controllo splitbutton e pager.

Esempio

La prima istruzione nell'esempio di codice seguente illustra il metodo CSplitButton::SetDropDownMenu . È stato creato il menu con l'editor di risorse di Visual Studio, denominato automaticamente l'ID della barra dei menu, IDR_MENU1. Il parametro nSubMenuId , che è zero, fa riferimento all'unico sottomenu della barra dei menu.

// 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);

Vedi anche

Classe CSplitButton
Grafico della gerarchia
Classe CButton