Freigeben über


CSplitButton-Klasse

Die CSplitButton Klasse stellt ein Steuerelement für geteilte Schaltflächen dar. Das Steuerelement mit einer unterteilten Schaltfläche führt ein Standardverhalten aus, wenn ein Benutzer auf den Hauptteil der Schaltfläche klickt, und zeigt ein Dropdownmenü an, wenn ein Benutzer auf den Dropdownpfeil der Schaltfläche klickt.

Syntax

class CSplitButton : public CButton

Member

Öffentliche Konstruktoren

Name Beschreibung
CSplitButton::CSplitButton Erstellt ein CSplitButton-Objekt.

Öffentliche Methoden

Name Beschreibung
CSplitButton::Create Erstellt ein Steuerelement für geteilte Schaltflächen mit angegebenen Formatvorlagen und fügt es an das aktuelle CSplitButton Objekt an.
CSplitButton::SetDropDownMenu Legt das Dropdownmenü fest, das angezeigt wird, wenn ein Benutzer auf den Dropdownpfeil des aktuellen Steuerelements für geteilte Schaltflächen klickt.

Geschützte Methoden

Name Beschreibung
CSplitButton::OnDropDown Behandelt die BCN_DROPDOWN Benachrichtigung, die das System sendet, wenn ein Benutzer auf den Dropdownpfeil des aktuellen Steuerelements für geteilte Schaltflächen klickt.

Hinweise

Die CSplitButton Klasse wird von der CButton-Klasse abgeleitet. Das Steuerelement für geteilte Schaltflächen ist ein Schaltflächensteuerelement, dessen Format BS_SPLITBUTTON ist. Es zeigt ein benutzerdefiniertes Menü an, wenn ein Benutzer auf den Dropdownpfeil klickt. Weitere Informationen finden Sie unter BS_SPLITBUTTON und BS_DEFSPLITBUTTON Formatvorlagen in Schaltflächenformatvorlagen.

Die folgende Abbildung zeigt ein Dialogfeld, das ein Pager-Steuerelement und ein (1) geteiltes Schaltflächen-Steuerelement enthält. Auf den Dropdownpfeil (2) wurde bereits geklickt, und das Untermenü (3) wird angezeigt.

Dialog with a splitbutton and pager control.

Vererbungshierarchie

CObject

CCmdTarget

CWnd

CButton

CSplitButton

Anforderungen

Header: afxcmn.h

Diese Klasse wird in Windows Vista und höher unterstützt.

Weitere Anforderungen für diese Klasse werden in build requirements for Windows Vista Common Controls beschrieben.

CSplitButton::Create

Erstellt ein Steuerelement für geteilte Schaltflächen mit angegebenen Formatvorlagen und fügt es an das aktuelle CSplitButton Objekt an.

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

Parameter

dwStyle
[in] Eine bitweise Kombination (OR) von Formatvorlagen, die auf das Steuerelement angewendet werden sollen. Weitere Informationen finden Sie unter Schaltflächenformatvorlagen.

Rect
[in] Ein Verweis auf eine RECT-Struktur , die die Position und Größe des Steuerelements enthält.

pParentWnd
[in] Ein Nicht-Null-Zeiger auf ein CWnd-Objekt , das das übergeordnete Fenster des Steuerelements ist.

Nid
[in] Die ID des Steuerelements.

Rückgabewert

TRUE, wenn diese Methode erfolgreich ist; andernfalls FALSE.

CSplitButton::CSplitButton

Erstellt ein CSplitButton-Objekt. Die Parameter des Konstruktors geben ein Untermenü an, das angezeigt wird, wenn ein Benutzer auf den Dropdownpfeil des Steuerelements für geteilte Schaltflächen klickt.

CSplitButton();

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

Parameter

nMenuId
[in] Die Ressourcen-ID der Menüleiste.

nSubMenuId
[in] Die Ressourcen-ID eines Untermenüs.

pMenu
[in] Ein Zeiger auf ein CMenu -Objekt, das ein Untermenü angibt. Das CSplitButton Objekt löscht das CMenu Objekt und dessen zugehörige HMENU, wenn das CSplitButton Objekt außerhalb des Gültigkeitsbereichs ist.

Hinweise

Verwenden Sie die CSplitButton::Create-Methode , um ein Steuerelement für geteilte Schaltflächen zu erstellen und an das CSplitButton Objekt anzufügen.

CSplitButton::OnDropDown

Behandelt die BCN_DROPDOWN Benachrichtigung, die das System sendet, wenn ein Benutzer auf den Dropdownpfeil des aktuellen Steuerelements für geteilte Schaltflächen klickt.

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

Parameter

pNMHDR
[in] Zeiger auf eine NMHDR-Struktur , die Informationen zur BCN_DROPDOWN-Benachrichtigung enthält.

pResult
[out] (Nicht verwendet; kein Wert wird zurückgegeben.) Rückgabewert der BCN_DROPDOWN-Benachrichtigung .

Hinweise

Wenn der Benutzer auf den Dropdownpfeil eines Steuerelements für geteilte Schaltflächen klickt, sendet das System eine BCN_DROPDOWN Benachrichtigung, die die OnDropDown Methode verarbeitet. Das Objekt leitet jedoch CSplitButton die BCN_DROPDOWN-Benachrichtigung nicht an das Steuerelement weiter, das das Steuerelement für geteilte Schaltflächen enthält. Folglich kann das enthaltende Steuerelement keine benutzerdefinierte Aktion als Reaktion auf die Benachrichtigung unterstützen.

Verwenden Sie zum Implementieren einer benutzerdefinierten Aktion, die das enthaltende Steuerelement unterstützt, ein CButton-Objekt mit einem Stil von BS_SPLITBUTTON anstelle eines CSplitButton Objekts. Implementieren Sie dann einen Handler für die BCN_DROPDOWN Benachrichtigung im CButton Objekt. Weitere Informationen finden Sie unter Schaltflächenformatvorlagen.

Um eine benutzerdefinierte Aktion zu implementieren, die das Steuerelement für geteilte Schaltflächen selbst unterstützt, verwenden Sie die Nachrichtenreflektion. Leiten Sie Ihre eigene Klasse von der CSplitButton Klasse ab, und nennen Sie sie, z. B. CMySplitButton. Fügen Sie dann der Anwendung die folgende Meldungszuordnung hinzu, um die BCN_DROPDOWN-Benachrichtigung zu behandeln:

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

CSplitButton::SetDropDownMenu

Legt das Dropdownmenü fest, das angezeigt wird, wenn ein Benutzer auf den Dropdownpfeil des aktuellen Steuerelements für geteilte Schaltflächen klickt.

void SetDropDownMenu(
    UINT nMenuId,
    UINT nSubMenuId);

void SetDropDownMenu(CMenu* pMenu);

Parameter

nMenuId
[in] Die Ressourcen-ID der Menüleiste.

nSubMenuId
[in] Die Ressourcen-ID eines Untermenüs.

pMenu
[in] Zeiger auf ein CMenu -Objekt, das ein Untermenü angibt. Das CSplitButton Objekt löscht das CMenu Objekt und dessen zugehörige HMENU, wenn das CSplitButton Objekt außerhalb des Gültigkeitsbereichs ist.

Hinweise

Der nMenuId-Parameter identifiziert eine Menüleiste, bei der es sich um eine horizontale Liste von Menüleistenelementen handelt. Der nSubMenuId-Parameter ist eine nullbasierte Indexnummer, die ein Untermenü identifiziert, bei dem es sich um die Dropdownliste der Menüleistenelemente handelt, die jedem Menüleistenelement zugeordnet sind. Beispielsweise verfügt eine typische Anwendung über ein Menü, das die Menüleistenelemente "Datei", "Bearbeiten" und "Hilfe" enthält. Das Menüleistenelement "Datei" weist ein Untermenü auf, das die Menüelemente "Öffnen", "Schließen" und "Beenden" enthält. Wenn auf den Dropdownpfeil des Steuerelements für geteilte Schaltflächen geklickt wird, zeigt das Steuerelement das angegebene Untermenü und nicht die Menüleiste an.

Die folgende Abbildung zeigt ein Dialogfeld, das ein Pager-Steuerelement und ein (1) geteiltes Schaltflächen-Steuerelement enthält. Auf den Dropdownpfeil (2) wurde bereits geklickt, und das Untermenü (3) wird angezeigt.

Dialog with a splitbutton and pager control.

Beispiel

Die erste Anweisung im folgenden Codebeispiel veranschaulicht die CSplitButton::SetDropDownMenu-Methode . Wir haben das Menü mit dem Visual Studio-Ressourcen-Editor erstellt, der automatisch die Menüleisten-ID IDR_MENU1 benannt hat. Der nSubMenuId-Parameter , der null ist, bezieht sich auf das einzige Untermenü der Menüleiste.

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

Siehe auch

CSplitButton-Klasse
Hierarchiediagramm
CButton-Klasse