共用方式為


CSplitButton 類別

類別 CSplitButton 代表分割按鈕控制項。 當使用者按一下按鈕的主要部分時,分割按鈕控制項會執行預設行為,而當使用者按一下按鈕的下拉箭號時,則顯示下拉式功能表。

語法

class CSplitButton : public CButton

成員

公用建構函式

名稱 描述
CSplitButton::CSplitButton 建構 CSplitButton 物件。

公用方法

名稱 描述
CSplitButton::Create 使用指定的樣式建立分割按鈕控制項,並將它附加至目前的 CSplitButton 物件。
CSplitButton::SetDropDownMenu 設定當使用者按一下目前分割按鈕控制項的下拉式箭號時所顯示的下拉式功能表。

受保護的方法

名稱 描述
CSplitButton::OnDropDown 處理當使用者按一下目前分割按鈕控制項的下拉箭號時,系統傳送的BCN_DROPDOWN通知。

備註

類別 CSplitButton 衍生自 CButton 類別。 分割按鈕控制項是BS_SPLITBUTTON樣式的按鈕控制項。 當使用者按一下下拉式箭號時,它會顯示自訂功能表。 如需詳細資訊,請參閱按鈕樣式中的 BS_SPLITBUTTON和BS_DEFSPLITBUTTON樣式

下圖描述包含呼叫器控制項和 (1) 分割按鈕控制項的對話方塊。 已經按一下 [2] 下拉式箭號,並顯示 [3] 子功能表。

Dialog with a splitbutton and pager control.

繼承階層架構

CObject

CCmdTarget

CWnd

CButton

CSplitButton

需求

標頭: afxcmn.h

Windows Vista 和更新版本中支援此類別。

此類別的其他需求會在 Windows Vista 通用控制項 的組建需求中 說明。

CSplitButton::Create

使用指定的樣式建立分割按鈕控制項,並將它附加至目前的 CSplitButton 物件。

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

參數

dwStyle
[in]要套用至控制項的樣式位元組合 (OR) 。 如需詳細資訊,請參閱 按鈕樣式

矩形
[in]RECT 結構的參考 ,其中包含控制項的位置和大小。

pParentWnd
[in]屬於控制項父視窗之 CWnd 物件的非 Null 指標

nID
[in]控制項的識別碼。

傳回值

如果此方法成功,則為 TRUE;否則為 FALSE。

CSplitButton::CSplitButton

建構 CSplitButton 物件。 建構函式的參數會指定當使用者按一下分割按鈕控制項下拉箭號時所顯示的子功能表。

CSplitButton();

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

參數

nMenuId
[in]功能表列的資源識別碼。

nSubMenuId
[in]子功能表的資源識別碼。

pMenu
[in]指定子功能表之 CMenu 物件的指標 。 物件 CSplitButton 會在物件超出範圍時 CSplitButton ,刪除 CMenu 物件及其相關聯的 HMENU。

備註

使用 CSplitButton::Create 方法來建立分割按鈕控制項,並將它附加至 CSplitButton 物件。

CSplitButton::OnDropDown

處理當使用者按一下目前分割按鈕控制項的下拉箭號時,系統傳送的BCN_DROPDOWN通知。

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

參數

pNMHDR
[in]NMHDR 結構的指標,其中包含BCN_DROPDOWN 通知的相關資訊

pResult
[out](未使用;未傳回任何值。傳回BCN_DROPDOWN 通知的值

備註

當使用者按一下分割按鈕控制項上的下拉式箭號時,系統會傳送BCN_DROPDOWN通知訊息,此方法會 OnDropDown 處理該訊息。 不過,物件不會將 CSplitButton BCN_DROPDOWN通知轉送至包含分割按鈕控制項的控制項。 因此,包含的 控制項無法支援自訂動作來回應通知。

若要實作包含控制項支援的自訂動作,請使用 具有BS_SPLITBUTTON樣式的 CButton 物件,而不是 CSplitButton 物件。 然後實作 物件中BCN_DROPDOWN通知的 CButton 處理常式。 如需詳細資訊,請參閱 按鈕樣式

若要實作分割按鈕控制項本身支援的自訂動作,請使用 訊息反映 。 從 CSplitButton 類別衍生您自己的類別,並將其命名為 CMySplitButton。 然後將下列訊息對應新增至您的應用程式,以處理BCN_DROPDOWN通知:

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

CSplitButton::SetDropDownMenu

設定當使用者按一下目前分割按鈕控制項的下拉式箭號時所顯示的下拉式功能表。

void SetDropDownMenu(
    UINT nMenuId,
    UINT nSubMenuId);

void SetDropDownMenu(CMenu* pMenu);

參數

nMenuId
[in]功能表列的資源識別碼。

nSubMenuId
[in]子功能表的資源識別碼。

pMenu
[in] 指定子功能表之 CMenu 物件的指標。 物件 CSplitButton 會在物件超出範圍時 CSplitButton ,刪除 CMenu 物件及其相關聯的 HMENU。

備註

nMenuId 參數會識別功能表列,這是功能表列專案的水準清單。 nSubMenuId 參數是以零起始的索引編號,可識別子功能表,這是與每個功能表列專案相關聯的功能表項目下拉式清單。 例如,一般應用程式具有包含功能表列專案的功能表、[檔案]、[編輯] 和 [說明]。「File」 功能表列專案有一個子功能表,其中包含功能表項目 「Open」、「Close」 和 「Exit」。按一下分割按鈕控制項的下拉式箭號時,控制項會顯示指定的子功能表,而不是功能表列。

下圖描述包含呼叫器控制項和 (1) 分割按鈕控制項的對話方塊。 已經按一下 [2] 下拉式箭號,並顯示 [3] 子功能表。

Dialog with a splitbutton and pager control.

範例

下列程式碼範例中的第一個語句示範 CSplitButton::SetDropDownMenu 方法。 我們已使用 Visual Studio 資源編輯器建立功能表,該編輯器會自動命名功能表列識別碼,IDR_MENU1。 nSubMenuId 參數,其為零,是指功能表列的唯一子功能表。

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

另請參閱

CSplitButton 類別
階層架構圖表
CButton 類別