Sdílet prostřednictvím


CSplitButton – třída

Třída CSplitButton představuje ovládací prvek rozděleného tlačítka. Ovládací prvek rozdělit tlačítko provádí výchozí chování, když uživatel klikne na hlavní část tlačítka a zobrazí rozevírací nabídku, když uživatel klikne na šipku rozevíracího seznamu tlačítka.

Syntaxe

class CSplitButton : public CButton

Členové

Veřejné konstruktory

Název Popis
CSplitButton::CSplitButton CSplitButton Vytvoří objekt.

Veřejné metody

Název Popis
CSplitButton::Create Vytvoří ovládací prvek rozděleného tlačítka se zadanými styly a připojí ho k aktuálnímu CSplitButton objektu.
CSplitButton::SetDropDownMenu Nastaví rozevírací nabídku, která se zobrazí, když uživatel klikne na šipku rozevíracího seznamu aktuálního ovládacího prvku rozděleného tlačítka.

Chráněné metody

Název Popis
CSplitButton::OnDropDown Zpracovává BCN_DROPDOWN oznámení, že systém odesílá, když uživatel klikne na šipku rozevíracího seznamu aktuálního ovládacího prvku rozděleného tlačítka.

Poznámky

Třída CSplitButton je odvozena z CButton třídy. Ovládací prvek split button je ovládací prvek tlačítka, jehož styl je BS_SPLITBUTTON. Když uživatel klikne na šipku rozevíracího seznamu, zobrazí se vlastní nabídka. Další informace najdete v části BS_SPLITBUTTON a styly BS_DEFSPLITBUTTON v části Styly tlačítek.

Následující obrázek znázorňuje dialogové okno, které obsahuje ovládací prvek pager a ovládací prvek rozděleného tlačítka (1). Na šipku rozevíracího seznamu (2) už jste klikli a zobrazí se podnabídka (3).

Dialogové okno s ovládacím prvku splitbutton a pager

Hierarchie dědičnosti

Objekt CObject

CCmdTarget

CWnd

Tlačítko tlačítka

CSplitButton

Požadavky

Hlavička: afxcmn.h

Tato třída je podporována v systému Windows Vista a novějších verzích.

Další požadavky pro tuto třídu jsou popsány v části Požadavky na sestavení pro běžné ovládací prvky systému Windows Vista.

CSplitButton::Create

Vytvoří ovládací prvek rozděleného tlačítka se zadanými styly a připojí ho k aktuálnímu CSplitButton objektu.

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

Parametry

dwStyle
[v] Bitové kombinace (OR) stylů, které se mají použít u ovládacího prvku. Další informace naleznete v tématu Styly tlačítek.

Rect
[v] Odkaz na strukturu RECT , která obsahuje pozici a velikost ovládacího prvku.

pParentWnd
[v] Nenulový ukazatel na objekt CWnd , který je nadřazeným oknem ovládacího prvku.

Nid
[v] ID ovládacího prvku.

Návratová hodnota

TRUE, pokud tato metoda je úspěšná; jinak NEPRAVDA.

CSplitButton::CSplitButton

CSplitButton Vytvoří objekt. Parametry konstruktoru určují podnabídku, která se zobrazí, když uživatel klikne na šipku rozevíracího seznamu ovládacího prvku rozděleného tlačítka.

CSplitButton();

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

Parametry

nNabídka
[v] ID prostředku řádku nabídek.

nSubMenuId
[v] ID prostředku podnabídky

pMenu
[v] Ukazatel na objekt CMenu , který určuje podnabídku. Objekt CSplitButton odstraní CMenu objekt a jeho přidružené HMENU, když CSplitButton objekt zmizí z oboru.

Poznámky

Pomocí CSplitButton::Create metoda vytvořit rozdělené tlačítko ovládací prvek a připojit ho k objektuCSplitButton.

CSplitButton::OnDropDown

Zpracovává BCN_DROPDOWN oznámení, že systém odesílá, když uživatel klikne na šipku rozevíracího seznamu aktuálního ovládacího prvku rozděleného tlačítka.

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

Parametry

pNMHDR
[v] Ukazatel na strukturu NMHDR , která obsahuje informace o oznámení BCN_DROPDOWN .

pResult
[ven] (Nepoužívá se; není vrácena žádná hodnota.) Návratová hodnota oznámení BCN_DROPDOWN .

Poznámky

Když uživatel klikne na šipku rozevíracího seznamu ovládacího prvku rozděleného tlačítka, systém odešle BCN_DROPDOWN zprávu s oznámením, kterou OnDropDown metoda zpracovává. CSplitButton Objekt však nepředá oznámení BCN_DROPDOWN ovládacímu prvku, který obsahuje ovládací prvek rozděleného tlačítka. V důsledku toho ovládací prvek obsahující nemůže podporovat vlastní akci v reakci na oznámení.

Chcete-li implementovat vlastní akci, která obsahuje ovládací prvek podporuje, použijte objekt CButton se stylem BS_SPLITBUTTON místo objektu CSplitButton . Pak implementujte obslužnou rutinu pro oznámení BCN_DROPDOWN v objektu CButton . Další informace naleznete v tématu Styly tlačítek.

Pokud chcete implementovat vlastní akci, kterou samotný ovládací prvek rozděleného tlačítka podporuje, použijte reflexi zprávy. Odvozujte vlastní třídu z CSplitButton třídy a pojmenujte ji, například CMySplitButton. Pak do aplikace přidejte následující mapu zpráv pro zpracování BCN_DROPDOWN oznámení:

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

CSplitButton::SetDropDownMenu

Nastaví rozevírací nabídku, která se zobrazí, když uživatel klikne na šipku rozevíracího seznamu aktuálního ovládacího prvku rozděleného tlačítka.

void SetDropDownMenu(
    UINT nMenuId,
    UINT nSubMenuId);

void SetDropDownMenu(CMenu* pMenu);

Parametry

nNabídka
[v] ID prostředku řádku nabídek.

nSubMenuId
[v] ID prostředku podnabídky

pMenu
[v] Ukazatel na objekt CMenu , který určuje podnabídku. Objekt CSplitButton odstraní CMenu objekt a jeho přidružené HMENU, když CSplitButton objekt zmizí z oboru.

Poznámky

Parametr nMenuId identifikuje řádek nabídek, což je vodorovný seznam položek řádku nabídek. Parametr nSubMenuId je číslo indexu založené na nule, které identifikuje podnabídku, což je rozevírací seznam položek nabídky přidružených ke každé položce řádku nabídek. Typická aplikace má například nabídku, která obsahuje položky řádku nabídek, Soubor, Úpravy a Nápověda. Položka řádku nabídek "Soubor" obsahuje podnabídku, která obsahuje položky nabídky" "Otevřít", "Zavřít" a "Ukončit". Když kliknete na šipku rozevíracího seznamu ovládacího prvku split-button, ovládací prvek zobrazí zadanou podnabídku, nikoli řádek nabídek.

Následující obrázek znázorňuje dialogové okno, které obsahuje ovládací prvek pager a ovládací prvek rozděleného tlačítka (1). Na šipku rozevíracího seznamu (2) už jste klikli a zobrazí se podnabídka (3).

Dialogové okno s ovládacím prvku splitbutton a pager

Příklad

První příkaz v následujícím příkladu kódu ukazuje CSplitButton::SetDropDownMenu metoda. Vytvořili jsme nabídku pomocí editoru prostředků sady Visual Studio, který automaticky pojmenoval ID řádku nabídek IDR_MENU1. Parametr nSubMenuId , který je nula, odkazuje na jediný podnabídku řádku nabídek.

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

Viz také

CSplitButton – třída
Graf hierarchie
CButton – třída