Klasa CSplitButton
Klasa CSplitButton
reprezentuje kontrolkę przycisku podziału. Kontrolka przycisku podziału wykonuje domyślne zachowanie, gdy użytkownik kliknie główną część przycisku i wyświetli menu rozwijane, gdy użytkownik kliknie strzałkę listy rozwijanej przycisku.
Składnia
class CSplitButton : public CButton
Elementy członkowskie
Konstruktory publiczne
Nazwa/nazwisko | opis |
---|---|
CSplitButton::CSplitButton | CSplitButton Tworzy obiekt. |
Metody publiczne
Nazwa/nazwisko | opis |
---|---|
CSplitButton::Create | Tworzy kontrolkę przycisku podziału z określonymi stylami i dołącza ją do bieżącego CSplitButton obiektu. |
CSplitButton::SetDropDownMenu | Ustawia menu rozwijane wyświetlane, gdy użytkownik kliknie strzałkę listy rozwijanej bieżącego formantu przycisku podziału. |
Metody chronione
Nazwa/nazwisko | opis |
---|---|
CSplitButton::OnDropDown | Obsługuje powiadomienie BCN_DROPDOWN wysyłane przez system, gdy użytkownik kliknie strzałkę listy rozwijanej bieżącego kontrolki przycisku podziału. |
Uwagi
Klasa CSplitButton
pochodzi z klasy CButton . Kontrolka przycisku podziału to kontrolka przycisku, której styl jest BS_SPLITBUTTON. Spowoduje to wyświetlenie menu niestandardowego, gdy użytkownik kliknie strzałkę listy rozwijanej. Aby uzyskać więcej informacji, zobacz style BS_SPLITBUTTON i BS_DEFSPLITBUTTON w stylach przycisków.
Na poniższej ilustracji przedstawiono okno dialogowe zawierające kontrolkę pager i kontrolkę przycisku podzielonego (1). Strzałka listy rozwijanej (2) została już kliknięta i zostanie wyświetlona podmenu (3).
Hierarchia dziedziczenia
CSplitButton
Wymagania
Nagłówek: afxcmn.h
Ta klasa jest obsługiwana w systemie Windows Vista i nowszych wersjach.
Dodatkowe wymagania dotyczące tej klasy opisano w temacie Build Requirements for Windows Vista Common Controls (Wymagania dotyczące kompilacji dla typowych kontrolek systemu Windows Vista).
CSplitButton::Create
Tworzy kontrolkę przycisku podziału z określonymi stylami i dołącza ją do bieżącego CSplitButton
obiektu.
virtual BOOL Create(
DWORD dwStyle,
const RECT& rect,
CWnd* pParentWnd,
UINT nID);
Parametry
dwStyle
[in] Kombinacja bitowa (OR) stylów, która ma być stosowana do kontrolki. Aby uzyskać więcej informacji, zobacz Style przycisków.
Rect
[in] Odwołanie do struktury RECT zawierającej położenie i rozmiar kontrolki.
pParentWnd
[in] Wskaźnik o wartości innej niż null do obiektu CWnd , który jest oknem nadrzędnym kontrolki.
Nid
[in] Identyfikator kontrolki.
Wartość zwracana
Wartość TRUE, jeśli ta metoda zakończyła się pomyślnie; w przeciwnym razie, FAŁSZ.
CSplitButton::CSplitButton
CSplitButton
Tworzy obiekt. Parametry konstruktora określają podmenu, który jest wyświetlany, gdy użytkownik kliknie strzałkę listy rozwijanej kontrolki przycisku podziału.
CSplitButton();
CSplitButton(
UINT nMenuId,
UINT nSubMenuId)
CSplitButton(CMenu* pMenu)
Parametry
nMenuId
[in] Identyfikator zasobu paska menu.
nSubMenuId
[in] Identyfikator zasobu podmenu.
pMenu
[in] Wskaźnik do obiektu CMenu , który określa podmenu. Obiekt CSplitButton
usuwa CMenu
obiekt i skojarzone z nim jednostki HMENU, gdy CSplitButton
obiekt wykracza poza zakres.
Uwagi
Użyj metody CSplitButton::Create, aby utworzyć kontrolkę przycisku podziału i dołączyć ją do CSplitButton
obiektu.
CSplitButton::OnDropDown
Obsługuje powiadomienie BCN_DROPDOWN wysyłane przez system, gdy użytkownik kliknie strzałkę listy rozwijanej bieżącego kontrolki przycisku podziału.
afx_msg void OnDropDown(
NMHDR* pNMHDR,
LRESULT* pResult);
Parametry
pNMHDR
[in] Wskaźnik do struktury NMHDR zawierającej informacje o powiadomieniu BCN_DROPDOWN .
pResult
[out] (Nieużywana; żadna wartość nie jest zwracana). Wartość zwracana powiadomienia BCN_DROPDOWN .
Uwagi
Gdy użytkownik kliknie strzałkę listy rozwijanej w kontrolce przycisku podziału, system wysyła komunikat powiadomienia BCN_DROPDOWN, który OnDropDown
obsługuje metoda. CSplitButton
Jednak obiekt nie przekazuje powiadomienia BCN_DROPDOWN do kontrolki zawierającej kontrolkę przycisku podziału. W związku z tym kontrolka zawierająca nie może obsługiwać akcji niestandardowej w odpowiedzi na powiadomienie.
Aby zaimplementować akcję niestandardową obsługiwaną przez kontrolkę zawierającą, należy użyć obiektu CButton ze stylem CSplitButton
BS_SPLITBUTTON zamiast obiektu. Następnie zaimplementuj procedurę obsługi dla powiadomienia BCN_DROPDOWN w CButton
obiekcie . Aby uzyskać więcej informacji, zobacz Style przycisków.
Aby zaimplementować akcję niestandardową obsługiwaną przez samą kontrolkę przycisku podziału, użyj odbicia komunikatu. Utwórz własną klasę z klasy i nadaj CSplitButton
jej nazwę, na przykład CMySplitButton. Następnie dodaj następującą mapę komunikatów do aplikacji, aby obsłużyć powiadomienie BCN_DROPDOWN:
BEGIN_MESSAGE_MAP(CMySplitButton,
CSplitButton)
ON_NOTIFY_REFLECT(BCN_DROPDOWN, &CMySplitButton::OnDropDown)
END_MESSAGE_MAP()
CSplitButton::SetDropDownMenu
Ustawia menu rozwijane wyświetlane, gdy użytkownik kliknie strzałkę listy rozwijanej bieżącego formantu przycisku podziału.
void SetDropDownMenu(
UINT nMenuId,
UINT nSubMenuId);
void SetDropDownMenu(CMenu* pMenu);
Parametry
nMenuId
[in] Identyfikator zasobu paska menu.
nSubMenuId
[in] Identyfikator zasobu podmenu.
pMenu
[in] Wskaźnik do obiektu CMenu , który określa podmenu. Obiekt CSplitButton
usuwa CMenu
obiekt i skojarzone z nim jednostki HMENU, gdy CSplitButton
obiekt wykracza poza zakres.
Uwagi
Parametr nMenuId identyfikuje pasek menu, który jest poziomą listą elementów paska menu. Parametr nSubMenuId jest numerem indeksu zero, który identyfikuje podmenu, który jest listą rozwijaną elementów menu skojarzonych z każdym elementem paska menu. Na przykład typowa aplikacja zawiera menu zawierające elementy paska menu, "Plik", "Edytuj" i "Pomoc". Element paska menu "Plik" zawiera podmenu zawierający elementy menu "Otwórz", "Zamknij" i "Zakończ". Po kliknięciu strzałki listy rozwijanej kontrolki split-button kontrolka wyświetla określony podmenu, a nie pasek menu.
Na poniższej ilustracji przedstawiono okno dialogowe zawierające kontrolkę pager i kontrolkę przycisku podzielonego (1). Strzałka listy rozwijanej (2) została już kliknięta i zostanie wyświetlona podmenu (3).
Przykład
Pierwsza instrukcja w poniższym przykładzie kodu pokazuje metodę CSplitButton::SetDropDownMenu . Utworzyliśmy menu za pomocą edytora zasobów programu Visual Studio, który automatycznie nazwał identyfikator paska menu IDR_MENU1. Parametr nSubMenuId , czyli zero, odnosi się do jedynego podmenu paska 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);