Udostępnij za pośrednictwem


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

Okno dialogowe z kontrolką splitbutton i pager.

Hierarchia dziedziczenia

Obiekt CObject

CCmdTarget

CWnd

CButton

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

Okno dialogowe z kontrolką splitbutton i pager.

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

Zobacz też

Klasa CSplitButton
Wykres hierarchii
Klasa CButton