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.
Vererbungshierarchie
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.
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);