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).
Gerarchia di ereditarietà
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).
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);