Share via


CSplitButton クラス

このクラスは CSplitButton 、分割ボタン コントロールを表します。 分割ボタン コントロールは、ユーザーがボタンのメイン領域をクリックすると既定の動作を実行し、ユーザーがボタンのドロップダウン矢印をクリックするとドロップダウン メニューを表示します。

構文

class CSplitButton : public CButton

メンバー

パブリック コンストラクター

名前 説明
CSplitButton::CSplitButton CSplitButton オブジェクトを構築します。

パブリック メソッド

名前 説明
CSplitButton::Create 指定したスタイルを持つ分割ボタン コントロールを作成し、現在 CSplitButton のオブジェクトにアタッチします。
CSplitButton::SetDropDownMenu ユーザーが現在の分割ボタン コントロールのドロップダウン矢印をクリックしたときに表示されるドロップダウン メニューを設定します。

保護メソッド

名前 説明
CSplitButton::OnDropDown ユーザーが現在の分割ボタン コントロールのドロップダウン矢印をクリックしたときにシステムが送信するBCN_DROPDOWN通知を処理します。

解説

クラスは CSplitButton CButton クラスから派生します。 分割ボタン コントロールは、スタイルが BS_SPLITB (テラバイト)UTTON であるボタン コントロールです。 ユーザーがドロップダウン矢印をクリックすると、カスタム メニューが表示されます。 詳細については、「ボタン スタイル」の「BS_SPLITB (テラバイト)UTTON および BS_DEFSPLITB (テラバイト)UTTON スタイル」を参照してください

次の図は、ポケットベル コントロールと (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)。 詳しくは、「ボタンのスタイル」をご覧ください。

rect
[in]コントロールの 位置とサイズを含む RECT 構造体への参照。

pParentWnd
[in]コントロールの親ウィンドウである CWnd オブジェクトへの null 以外のポインター。

nID
[in]コントロールの ID。

戻り値

このメソッドが成功した場合は TRUE。それ以外の場合は FAL Standard Edition。

CSplitButton::CSplitButton

CSplitButton オブジェクトを構築します。 コンストラクターのパラメーターは、ユーザーが分割ボタン コントロールのドロップダウン矢印をクリックしたときに表示されるサブメニューを指定します。

CSplitButton();

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

パラメーター

nMenuId
[in]メニュー バーのリソース ID。

nSubMenuId
[in]サブメニューのリソース ID。

pMenu
[in]サブメニューを 指定する CMenu オブジェクトへのポインター。 オブジェクトがCSplitButtonスコープ外になると、オブジェクトとそれに関連付けられている HMENU がCSplitButton削除CMenuされます。

解説

CSplitButton::Create メソッドを使用して分割ボタン コントロールを作成し、オブジェクトにCSplitButtonアタッチします。

CSplitButton::OnDropDown

ユーザーが現在の分割ボタン コントロールのドロップダウン矢印をクリックしたときにシステムが送信するBCN_DROPDOWN通知を処理します。

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

パラメーター

pNMHDR
[in]BCN_DROPDOWN通知に関する情報を含む NMHDR 構造体へのポインター。

pResult
[out](使用されません。値は返されません)。BCN_DROPDOWN通知の 戻り 値。

解説

ユーザーが分割ボタン コントロールのドロップダウン矢印をクリックすると、システムはメソッドが処理するBCN_DROPDOWN通知メッセージを OnDropDown 送信します。 ただし、オブジェクトは CSplitButton 、分割ボタン コントロールを含むコントロールにBCN_DROPDOWN通知を転送しません。 そのため、含まれているコントロールは、通知に応答するカスタム アクションをサポートできません。

含むコントロールがサポートするカスタム アクションを実装するには、オブジェクトではなく、BS_SPLITB (テラバイト)UTTON のスタイルを持つ 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]メニュー バーのリソース ID。

nSubMenuId
[in]サブメニューのリソース ID。

pMenu
[in]サブメニューを 指定する CMenu オブジェクトへのポインター。 オブジェクトがCSplitButtonスコープ外になると、オブジェクトとそれに関連付けられている HMENU がCSplitButton削除CMenuされます。

解説

nMenuId パラメーターは、メニュー バー項目の水平リストであるメニュー バーを識別します。 nSubMenuId パラメーターは、サブメニューを識別する 0 から始まるインデックス番号です。これは、各メニュー バー項目に関連付けられているメニュー項目のドロップダウン リストです。 たとえば、一般的なアプリケーションには、メニュー バー項目 "ファイル"、"編集"、"ヘルプ" が含まれるメニューがあります。"ファイル" メニュー バー項目には、メニュー項目 "開く"、"閉じる"、"終了" を含むサブメニューがあります。分割ボタン コントロールのドロップダウン矢印をクリックすると、コントロールにはメニュー バーではなく、指定したサブメニューが表示されます。

次の図は、ポケットベル コントロールと (1) 分割ボタン コントロールを含むダイアログ ボックスを示しています。 (2) ドロップダウン矢印は既にクリックされており、(3) サブメニューが表示されます。

Dialog with a splitbutton and pager control.

次のコード例の最初のステートメントは、CSplitButton::SetDropDownMenu メソッドを示しています。 Visual Studio リソース エディターを使用してメニューを作成し、メニュー バー ID に自動的に名前を付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 クラス