英語で読む

次の方法で共有


CButton クラス

Windows のボタン コントロールの機能が用意されています。

構文

class CButton : public CWnd

メンバー

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

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

パブリック メソッド

名前 説明
CButton::Create Windows ボタン コントロールを作成し、 CButton オブジェクトにアタッチします。
CButton::D rawItem 所有者描画 CButton オブジェクトを描画する場合にオーバーライドします。
CButton::GetBitmap SetBitmap で以前に設定したビットマップのハンドルを取得します。
CButton::GetButtonStyle ボタン コントロール スタイルに関する情報を取得します。
CButton::GetCheck ボタン コントロールのチェック状態を取得します。
CButton::GetCursor SetCursor で以前に設定したカーソル イメージのハンドルを取得します。
CButton::GetIcon 以前に SetIcon で設定したアイコンのハンドルを取得します。
CButton::GetIdealSize ボタン コントロールの理想的なサイズを取得します。
CButton::GetImageList ボタン コントロールのイメージ リストを取得します。
CButton::GetNote 現在のコマンド リンク コントロールのノート コンポーネントを取得します。
CButton::GetNoteLength 現在のコマンド リンク コントロールのノート テキストの長さを取得します。
CButton::GetSplitGlyph 現在の分割ボタン コントロールに関連付けられているグリフを取得します。
CButton::GetSplitImageList 現在の分割ボタン コントロールのイメージ リストを取得します。
CButton::GetSplitInfo 現在の分割ボタン コントロールを定義する情報を取得します。
CButton::GetSplitSize 現在の分割ボタン コントロールのドロップダウン コンポーネントの外接する四角形を取得します。
CButton::GetSplitStyle 現在の分割ボタン コントロールを定義する分割ボタン スタイルを取得します。
CButton::GetState ボタン コントロールのチェック状態、強調表示状態、フォーカス状態を取得します。
CButton::GetTextMargin ボタン コントロールのテキスト余白を取得します。
CButton::SetBitmap ボタンに表示するビットマップを指定します。
CButton::SetButtonStyle ボタンのスタイルを変更します。
CButton::SetCheck ボタン コントロールのチェック状態を設定します。
CButton::SetCursor ボタンに表示するカーソルイメージを指定します。
CButton::SetDropDownState 現在の分割ボタン コントロールのドロップダウン状態を設定します。
CButton::SetIcon ボタンに表示するアイコンを指定します。
CButton::SetImageList ボタン コントロールのイメージ リストを設定します。
CButton::SetNote 現在のコマンド リンク コントロールのメモを設定します。
CButton::SetSplitGlyph 指定したグリフを現在の分割ボタン コントロールに関連付けます。
CButton::SetSplitImageList イメージ リストを現在の分割ボタン コントロールに関連付けます。
CButton::SetSplitInfo 現在の分割ボタン コントロールを定義する情報を指定します。
CButton::SetSplitSize 現在の分割ボタン コントロールのドロップダウン コンポーネントの外接する四角形を設定します。
CButton::SetSplitStyle 現在の分割ボタン コントロールのスタイルを設定します。
CButton::SetState ボタン コントロールの強調表示状態を設定します。
CButton::SetTextMargin ボタン コントロールのテキスト余白を設定します。

解説

ボタン コントロールは、オンとオフを切り替えることができる小さな四角形の子ウィンドウです。 ボタンは単独でもグループでも使用でき、ラベルを付けたり、テキストなしで表示したりできます。 ボタンは通常、ユーザーがクリックしたときに外観を変更します。

一般的なボタンは、チェック ボックス、ラジオ ボタン、およびプッシュ ボタンです。 CButton オブジェクトは、Create メンバー関数によって初期化時に指定button スタイルに従って、これらの任意のオブジェクトにすることができます。

さらに、CButtonから派生した CBitmapButton クラスは、テキストではなくビットマップ イメージでラベル付けされたボタン コントロールの作成をサポートします。 CBitmapButtonには、ボタンの上、下、フォーカス、および無効の状態に対して個別のビットマップを使用できます。

ボタン コントロールは、ダイアログ テンプレートから作成することも、コード内で直接作成することもできます。 どちらの場合も、最初にコンストラクター CButton を呼び出して CButton オブジェクトを構築し、次に Create メンバー関数を呼び出して Windows ボタン コントロールを作成し、 CButton オブジェクトにアタッチします。

構築は、 CButtonから派生したクラス内の 1 ステップ プロセスにすることができます。 派生クラスのコンストラクターを記述し、コンストラクター内から Create を呼び出します。

ボタン コントロールによって親 (通常は CDialog から派生したクラス) に送信された Windows 通知メッセージを処理する場合は、メッセージ マップ エントリとメッセージ ハンドラー メンバー関数を各メッセージの親クラスに追加します。

各メッセージ マップ エントリの形式は次のとおりです。

ON_Notification ( id, memberFxn )

ここで、 id 通知を送信するコントロールの子ウィンドウ ID を指定し、 memberFxn は、通知を処理するために作成した親メンバー関数の名前です。

親の関数プロトタイプは次のとおりです。

afx_msg void memberFxn();

メッセージ マップ エントリの可能性は次のとおりです。

マップ エントリ 親に送信された日時...
ON_BN_CLICKED ユーザーがボタンをクリックします。
ON_BN_DOUBLECLICKED ユーザーがボタンをダブルクリックします。

ダイアログ リソースから CButton オブジェクトを作成すると、ユーザーがダイアログ ボックスを閉じると、 CButton オブジェクトが自動的に破棄されます。

ウィンドウ内に CButton オブジェクトを作成する場合は、オブジェクトの破棄が必要になる場合があります。 new関数を使用してヒープ上にCButton オブジェクトを作成する場合は、ユーザーが Windows ボタン コントロールを閉じたときにオブジェクトを破棄するdeleteを呼び出す必要があります。 スタック上に CButton オブジェクトを作成した場合、または親ダイアログ オブジェクトに埋め込まれている場合は、自動的に破棄されます。

継承階層

CObject

CCmdTarget

CWnd

CButton

要件

ヘッダー: afxwin.h

CButton::CButton

CButton オブジェクトを構築します。

CButton();

// Declare a button object.
CButton myButton;

CButton::Create

Windows ボタン コントロールを作成し、 CButton オブジェクトにアタッチします。

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

パラメーター

lpszCaption
ボタン コントロールのテキストを指定します。

dwStyle
ボタン コントロールのスタイルを指定します。 ボタンにボタン スタイルの任意の組み合わせを適用します。

rect
ボタン コントロールのサイズと位置を指定します。 CRect オブジェクトまたはRECT構造体のいずれかを指定できます。

pParentWnd
ボタン コントロールの親ウィンドウ (通常は CDialog) を指定します。 NULL は指定できません。

nID
ボタン コントロールの ID を指定します。

戻り値

正常終了した場合は 0 以外を返します。それ以外の場合は 0 を返します。

解説

CButton オブジェクトは、2 つの手順で作成します。 まず、コンストラクターを呼び出し、 Createを呼び出します。これにより、Windows ボタン コントロールが作成され、 CButton オブジェクトにアタッチされます。

WS_VISIBLEスタイルが指定されている場合、Windows はボタンコントロールを送信し、ボタンをアクティブ化して表示するために必要なすべてのメッセージを送信します。

ボタン コントロールに次の window スタイル を適用します。

  • WS_CHILD Always

  • 通常WS_VISIBLE

  • ほとんどWS_DISABLEDしない

  • WS_GROUP コントロールをグループ化するには

  • WS_TABSTOP タブの順序にボタンを含めるには

CButton myButton1, myButton2, myButton3, myButton4;

// Create a push button.
myButton1.Create(_T("My button"), WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON,
                 CRect(10, 10, 100, 30), pParentWnd, 1);

// Create a radio button.
myButton2.Create(_T("My button"), WS_CHILD | WS_VISIBLE | BS_RADIOBUTTON,
                 CRect(10, 40, 100, 70), pParentWnd, 2);

// Create an auto 3-state button.
myButton3.Create(_T("My button"), WS_CHILD | WS_VISIBLE | BS_AUTO3STATE,
                 CRect(10, 70, 100, 100), pParentWnd, 3);

// Create an auto check box.
myButton4.Create(_T("My button"), WS_CHILD | WS_VISIBLE | BS_AUTOCHECKBOX,
                 CRect(10, 100, 100, 130), pParentWnd, 4);

CButton::D rawItem

所有者が描画したボタンの視覚的な側面が変更されたときにフレームワークによって呼び出されます。

virtual void DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct);

パラメーター

lpDrawItemStruct
DRAWITEMSTRUCT 構造体への長いポインター。 この構造体には、描画する項目と必要な描画の種類に関する情報が含まれています。

解説

所有者が描画したボタンには、BS_OWNERDRAWスタイルが設定されています。 このメンバー関数をオーバーライドして、所有者描画 CButton オブジェクトの描画を実装します。 アプリケーションは、メンバー関数が終了する前に、 lpDrawItemStruct で指定された表示コンテキスト用に選択されたすべてのグラフィックス デバイス インターフェイス (GDI) オブジェクトを復元する必要があります。

BS_スタイルの値も参照してください。

// NOTE: CMyButton is a class derived from CButton. The CMyButton
// object was created as follows:
//
// CMyButton myButton;
// myButton.Create(_T("My button"),
//      WS_CHILD|WS_VISIBLE|BS_PUSHBUTTON|BS_OWNERDRAW,
//      CRect(10,10,100,30), pParentWnd, 1);
//

// This example implements the DrawItem method for a CButton-derived
// class that draws the button's text using the color red.
void CMyButton::DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct)
{
   UINT uStyle = DFCS_BUTTONPUSH;

   // This code only works with buttons.
   ASSERT(lpDrawItemStruct->CtlType == ODT_BUTTON);

   // If drawing selected, add the pushed style to DrawFrameControl.
   if (lpDrawItemStruct->itemState & ODS_SELECTED)
      uStyle |= DFCS_PUSHED;

   // Draw the button frame.
   ::DrawFrameControl(lpDrawItemStruct->hDC, &lpDrawItemStruct->rcItem,
                      DFC_BUTTON, uStyle);

   // Get the button's text.
   CString strText;
   GetWindowText(strText);

   // Draw the button text using the text color red.
   COLORREF crOldColor = ::SetTextColor(lpDrawItemStruct->hDC, RGB(255, 0, 0));
   ::DrawText(lpDrawItemStruct->hDC, strText, strText.GetLength(),
              &lpDrawItemStruct->rcItem, DT_SINGLELINE | DT_VCENTER | DT_CENTER);
   ::SetTextColor(lpDrawItemStruct->hDC, crOldColor);
}

CButton::GetBitmap

このメンバー関数を呼び出して、以前にボタンに関連付けられている SetBitmap で設定したビットマップのハンドルを取得します。

HBITMAP GetBitmap() const;

戻り値

ビットマップへのハンドル。 ビットマップが以前に指定されていない場合は NULL。

CButton myBitmapButton;

// Create a bitmap button.
myBitmapButton.Create(_T("My button"), WS_CHILD | WS_VISIBLE | BS_BITMAP,
                      CRect(10, 10, 60, 50), pParentWnd, 1);

// If no bitmap is defined for the button, define the bitmap to the
// system close bitmap.
if (myBitmapButton.GetBitmap() == NULL)
   myBitmapButton.SetBitmap(::LoadBitmap(NULL, MAKEINTRESOURCE(OBM_CLOSE)));

CButton::GetButtonStyle

ボタン コントロール スタイルに関する情報を取得します。

UINT GetButtonStyle() const;

戻り値

この CButton オブジェクトのボタン スタイルを返します。 この関数は、他のウィンドウ スタイルではなく、 BS_ スタイル値のみを返します。

CButton myRadioButton;

// Create a radio button.
myRadioButton.Create(_T("My button"), WS_CHILD | WS_VISIBLE | BS_RADIOBUTTON,
                     CRect(10, 10, 100, 30), pParentWnd, 1);

// Change the button style to use one of the "auto" styles; for
// push button, change to def push button.
UINT uStyle = myRadioButton.GetButtonStyle();
if (uStyle == BS_PUSHBUTTON)
   uStyle = BS_DEFPUSHBUTTON;
else if (uStyle == BS_RADIOBUTTON)
   uStyle = BS_AUTORADIOBUTTON;
else if (uStyle == BS_CHECKBOX)
   uStyle = BS_AUTOCHECKBOX;
else if (uStyle == BS_3STATE)
   uStyle = BS_AUTO3STATE;

// Change the button style to the one wanted.
myRadioButton.SetButtonStyle(uStyle);

CButton::GetCheck

ラジオ ボタンまたはチェック ボックスのチェック状態を取得します。

int GetCheck() const;

戻り値

BS_AUTOCHECKBOX、BS_AUTORADIOBUTTON、BS_AUTO3STATE、BS_CHECKBOX、BS_RADIOBUTTON、またはBS_3STATE スタイルで作成されたボタン コントロールからの戻り値は、次のいずれかの値です。

意味
BST_UNCHECKED ボタンの状態がオフになっています。
BST_CHECKED ボタンの状態がチェックされます。
BST_INDETERMINATE ボタンの状態は不確定です (ボタンにBS_3STATEまたはBS_AUTO3STATEスタイルがある場合にのみ適用されます)。

ボタンに他のスタイルがある場合、戻り値はBST_UNCHECKED。

CButton myA3Button;

// Create an auto 3-state button.
myA3Button.Create(_T("My button"), WS_CHILD | WS_VISIBLE | BS_AUTO3STATE,
                  CRect(10, 10, 100, 30), pParentWnd, 1);

// Set the check state to the next state
// (i.e. BST_UNCHECKED changes to BST_CHECKED
// BST_CHECKED changes to BST_INDETERMINATE
// BST_INDETERMINATE changes to BST_UNCHECKED).
myA3Button.SetCheck(((myA3Button.GetCheck() + 1) % 3));

CButton::GetCursor

このメンバー関数を呼び出して、以前にボタンに関連付けられている SetCursor で設定したカーソルのハンドルを取得します。

HCURSOR GetCursor();

戻り値

カーソル イメージへのハンドル。 カーソルが以前に指定されていない場合は NULL。

CButton myIconButton;

// Create an icon button.
myIconButton.Create(_T("My button"), WS_CHILD | WS_VISIBLE | BS_ICON,
                    CRect(10, 10, 60, 50), pParentWnd, 1);

// If no image is defined for the button, define the image to the
// system arrow and question mark cursor.
if (myIconButton.GetCursor() == NULL)
   myIconButton.SetCursor(::LoadCursor(NULL, IDC_HELP));

CButton::GetIcon

このメンバー関数を呼び出して、以前にボタンに関連付けられている SetIcon で設定したアイコンのハンドルを取得します。

HICON GetIcon() const;

戻り値

アイコンにへのハンドル。 アイコンが以前に指定されていない場合は NULL。

CButton myIconButton2;

// Create an icon button.
myIconButton2.Create(_T("My button"), WS_CHILD | WS_VISIBLE | BS_ICON,
                     CRect(10, 10, 60, 50), pParentWnd, 1);

// If no icon is defined for the button, define the icon to the
// system error icon.
if (myIconButton2.GetIcon() == NULL)
   myIconButton2.SetIcon(::LoadIcon(NULL, IDI_ERROR));

CButton::GetIdealSize

ボタン コントロールの理想的なサイズを取得します。

BOOL GetIdealSize(SIZE* psize);

パラメーター

psize
ボタンの現在のサイズへのポインター。

戻り値

正常終了した場合は 0 以外を返します。それ以外の場合は 0 を返します。

解説

このメンバー関数は、Windows SDK の Buttons セクションで説明されているように、BCM_GETIDEALSIZE メッセージの機能をエミュレートします。

CButton::GetImageList

ボタン コントロールからイメージ リストを取得するには、このメソッドを呼び出します。

BOOL GetImageList(PBUTTON_IMAGELIST pbuttonImagelist);

パラメーター

pbuttonImagelist
CButton オブジェクトのイメージ リストへのポインター。

戻り値

正常終了した場合は 0 以外を返します。それ以外の場合は 0 を返します。

解説

このメンバー関数は、Windows SDK の Buttons セクションで説明されているように、BCM_GETIMAGELIST メッセージの機能をエミュレートします。

CButton::GetNote

現在のコマンド リンク コントロールに関連付けられているメモ テキストを取得します。

CString GetNote() const;

BOOL GetNote(
    LPTSTR lpszNote,
    UINT* cchNote) const;

パラメーター

lpszNote
[out]バッファーへのポインター。呼び出し元が割り当てと割り当ての解除を担当します。 戻り値が TRUE の場合、バッファーには、現在のコマンド リンク コントロールに関連付けられているメモ テキストが含まれます。それ以外の場合、バッファーは変更されません。

cchNote
[入力、出力]符号なし整数変数へのポインター。 このメソッドが呼び出されると、変数には、 lpszNote パラメーターで指定されたバッファーのサイズが含まれます。 このメソッドが戻るときに、戻り値が TRUE の場合、変数には現在のコマンド リンク コントロールに関連付けられているメモのサイズが含まれます。 戻り値が FALSE の場合、変数にはメモを格納するために必要なバッファー サイズが含まれます。

戻り値

最初のオーバーロードでは、現在のコマンド リンク コントロールに関連付けられているメモ テキストを含む CString オブジェクト。

または

2 番目のオーバーロードでは、このメソッドが成功した場合は TRUE。それ以外の場合は FALSE。

解説

このメソッドは、ボタン スタイルがBS_COMMANDLINKまたはBS_DEFCOMMANDLINKコントロールでのみ使用します。

このメソッドは、Windows SDK で説明されている BCM_GETNOTE メッセージを送信します。

CButton::GetNoteLength

現在のコマンド リンク コントロールのノート テキストの長さを取得します。

UINT GetNoteLength() const;

戻り値

現在のコマンド リンク コントロールのノート テキストの長さ (16 ビット Unicode 文字)。

解説

このメソッドは、ボタン スタイルがBS_COMMANDLINKまたはBS_DEFCOMMANDLINKコントロールでのみ使用します。

このメソッドは、Windows SDK で説明されている BCM_GETNOTELENGTH メッセージを送信します。

CButton::GetSplitGlyph

現在の分割ボタン コントロールに関連付けられているグリフを取得します。

TCHAR GetSplitGlyph() const;

戻り値

現在の分割ボタン コントロールに関連付けられているグリフ文字。

解説

グリフは、特定のフォントでの文字の物理的な表現です。 たとえば、分割ボタン コントロールは、Unicode チェック マーク文字 (U+2713) のグリフで修飾できます。

このメソッドは、ボタン スタイルがBS_SPLITBUTTONまたはBS_DEFSPLITBUTTONのコントロールでのみ使用します。

このメソッドは、BCSIF_GLYPH フラグを使用してBUTTON_SPLITINFO構造体のmask メンバーを初期化し、Windows SDK で説明されているBCM_GETSPLITINFO メッセージでその構造体を送信します。 メッセージ関数が返されると、このメソッドは構造体の himlGlyph メンバーからグリフを取得します。

CButton::GetSplitImageList

現在の分割ボタン コントロールの イメージ リスト を取得します。

CImageList* GetSplitImageList() const;

戻り値

CImageList オブジェクトへのポインター。

解説

このメソッドは、ボタン スタイルがBS_SPLITBUTTONまたはBS_DEFSPLITBUTTONのコントロールでのみ使用します。

このメソッドは、BCSIF_IMAGE フラグを使用してBUTTON_SPLITINFO構造体のmask メンバーを初期化し、Windows SDK で説明されているBCM_GETSPLITINFO メッセージでその構造体を送信します。 メッセージ関数が戻るときに、このメソッドは、構造体の himlGlyph メンバーからイメージ リストを取得します。

CButton::GetSplitInfo

Windows が現在の分割ボタン コントロールを描画する方法を決定するパラメーターを取得します。

BOOL GetSplitInfo(PBUTTON_SPLITINFO pInfo) const;

パラメーター

pInfo
[out]現在の分割ボタン コントロールに関する情報を受け取る BUTTON_SPLITINFO 構造体へのポインター。 呼び出し元は、構造体の割り当てを担当します。

戻り値

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

解説

このメソッドは、ボタン スタイルがBS_SPLITBUTTONまたはBS_DEFSPLITBUTTONのコントロールでのみ使用します。

このメソッドは、Windows SDK で説明されている BCM_GETSPLITINFO メッセージを送信します。

CButton::GetSplitSize

現在の分割ボタン コントロールのドロップダウン コンポーネントの外接する四角形を取得します。

BOOL GetSplitSize(LPSIZE pSize) const;

パラメーター

pSize
[out]四角形の説明を受け取る SIZE 構造体へのポインター。

戻り値

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

解説

このメソッドは、ボタン スタイルがBS_SPLITBUTTONまたはBS_DEFSPLITBUTTONのコントロールでのみ使用します。

分割ボタン コントロールを展開すると、リスト コントロールやポケットベル コントロールなどのドロップダウン コンポーネントを表示できます。 このメソッドは、ドロップダウン コンポーネントを含む外接する四角形を取得します。

このメソッドは、BCSIF_SIZE フラグを使用してBUTTON_SPLITINFO構造体のmask メンバーを初期化し、Windows SDK で説明されているBCM_GETSPLITINFO メッセージでその構造体を送信します。 メッセージ関数が返されると、このメソッドは構造体の size メンバーから外接する四角形を取得します。

CButton::GetSplitStyle

現在の分割ボタン コントロールを定義する分割ボタン スタイルを取得します。

UINT GetSplitStyle() const;

戻り値

分割ボタン スタイルのビットごとの組み合わせ。 詳細については、BUTTON_SPLITINFO構造体のuSplitStyle メンバーを参照してください。

解説

このメソッドは、ボタン スタイルがBS_SPLITBUTTONまたはBS_DEFSPLITBUTTONのコントロールでのみ使用します。

分割ボタンのスタイルでは、配置、縦横比、および Windows が分割ボタン アイコンを描画するグラフィカルな形式を指定します。

このメソッドは、BCSIF_STYLE フラグを使用してBUTTON_SPLITINFO構造体のmask メンバーを初期化し、Windows SDK で説明されているBCM_GETSPLITINFO メッセージでその構造体を送信します。 メッセージ関数が戻るときに、このメソッドは、構造体の uSplitStyle メンバーから分割ボタンのスタイルを取得します。

CButton::GetState

ボタン コントロールの状態を取得します。

UINT GetState() const;

戻り値

ボタン コントロールの現在の状態を示す値の組み合わせを含むビット フィールド。 次の表は使用できる値をまとめたものです。

ボタンの状態 説明
BST_UNCHECKED 0x0000 初期状態。
BST_CHECKED 0x0001 ボタン コントロールがオンになっています。
BST_INDETERMINATE 0x0002 状態は不確定です (ボタン コントロールに 3 つの状態がある場合にのみ可能)。
BST_PUSHED 0x0004 ボタン コントロールが押されます。
BST_FOCUS 0x0008 ボタン コントロールにフォーカスがあります。

解説

BS_3STATEまたはBS_AUTO3STATEボタン スタイルを持つボタン コントロールは、不確定状態という名前の 3 番目の状態を持つチェック ボックスを作成します。 不確定状態は、チェック ボックスがオンでもオフでもないことを示します。

CButton myPushButton;

// Create a push button.
myPushButton.Create(_T("My button"), WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON,
                    CRect(10, 10, 100, 30), pParentWnd, 1);

// Invert the highlight state of the button.
myPushButton.SetState(!(myPushButton.GetState() & 0x0004));

CButton::GetTextMargin

このメソッドを呼び出して、 CButton オブジェクトのテキスト余白を取得します。

BOOL GetTextMargin(RECT* pmargin);

パラメーター

pmargin
CButton オブジェクトのテキスト余白へのポインター。

戻り値

テキストの余白を返します。 正常終了した場合は 0 以外を返します。それ以外の場合は 0 を返します。

解説

このメンバー関数は、Windows SDK の Buttons セクションで説明されているように、BCM_GETTEXTMARGIN メッセージの機能をエミュレートします。

CButton::SetBitmap

このメンバー関数を呼び出して、新しいビットマップをボタンに関連付けます。

HBITMAP SetBitmap(HBITMAP hBitmap);

パラメーター

hBitmap
ビットマップのハンドル。

戻り値

以前にボタンに関連付けられたビットマップのハンドル。

解説

ビットマップは、既定で中央揃えのボタンの面に自動的に配置されます。 ビットマップがボタンに対して大きすぎる場合は、どちらの側でもクリップされます。 次のような他の配置オプションを選択できます。

  • BS_TOP

  • BS_LEFT

  • BS_RIGHT

  • BS_CENTER

  • BS_BOTTOM

  • BS_VCENTER

ボタンごとに 4 つのビットマップを使用する CBitmapButton とは異なり、 SetBitmap はボタンごとに 1 つのビットマップのみを使用します。 ボタンを押すと、ビットマップが下に移動して右に移動するように見えます。

完了したら、ビットマップを解放する必要があります。

CButton myBitmapButton;

// Create a bitmap button.
myBitmapButton.Create(_T("My button"), WS_CHILD | WS_VISIBLE | BS_BITMAP,
                      CRect(10, 10, 60, 50), pParentWnd, 1);

// If no bitmap is defined for the button, define the bitmap to the
// system close bitmap.
if (myBitmapButton.GetBitmap() == NULL)
   myBitmapButton.SetBitmap(::LoadBitmap(NULL, MAKEINTRESOURCE(OBM_CLOSE)));

CButton::SetButtonStyle

ボタンのスタイルを変更します。

void SetButtonStyle(
    UINT nStyle,
    BOOL bRedraw = TRUE);

パラメーター

nStyle
ボタン のスタイルを指定します。

bRedraw
ボタンを再描画するかどうかを指定します。 0 以外の値を指定すると、ボタンが再描画されます。 0 の値を指定しても、ボタンは再描画されません。 ボタンは既定で再描画されます。

解説

ボタン のスタイルを取得するには、 GetButtonStyle メンバー関数を使用します。 完全なボタン スタイルの下位ワードは、ボタン固有のスタイルです。

CButton myRadioButton;

// Create a radio button.
myRadioButton.Create(_T("My button"), WS_CHILD | WS_VISIBLE | BS_RADIOBUTTON,
                     CRect(10, 10, 100, 30), pParentWnd, 1);

// Change the button style to use one of the "auto" styles; for
// push button, change to def push button.
UINT uStyle = myRadioButton.GetButtonStyle();
if (uStyle == BS_PUSHBUTTON)
   uStyle = BS_DEFPUSHBUTTON;
else if (uStyle == BS_RADIOBUTTON)
   uStyle = BS_AUTORADIOBUTTON;
else if (uStyle == BS_CHECKBOX)
   uStyle = BS_AUTOCHECKBOX;
else if (uStyle == BS_3STATE)
   uStyle = BS_AUTO3STATE;

// Change the button style to the one wanted.
myRadioButton.SetButtonStyle(uStyle);

CButton::SetCheck

ラジオ ボタンまたはチェック ボックスのチェック状態を設定またはリセットします。

void SetCheck(int nCheck);

パラメーター

nCheck
チェック状態を指定します。 このパラメーターには、次のいずれかを指定できます。

意味
BST_UNCHECKED ボタンの状態をオフに設定します。
BST_CHECKED ボタンの状態をオンに設定します。
BST_INDETERMINATE ボタンの状態を不確定に設定します。 この値は、ボタンにBS_3STATEまたはBS_AUTO3STATEスタイルがある場合にのみ使用できます。

解説

このメンバー関数は、押ボタンには影響しません。

CButton myA3Button;

// Create an auto 3-state button.
myA3Button.Create(_T("My button"), WS_CHILD | WS_VISIBLE | BS_AUTO3STATE,
                  CRect(10, 10, 100, 30), pParentWnd, 1);

// Set the check state to the next state
// (i.e. BST_UNCHECKED changes to BST_CHECKED
// BST_CHECKED changes to BST_INDETERMINATE
// BST_INDETERMINATE changes to BST_UNCHECKED).
myA3Button.SetCheck(((myA3Button.GetCheck() + 1) % 3));

CButton::SetCursor

このメンバー関数を呼び出して、新しいカーソルをボタンに関連付けます。

HCURSOR SetCursor(HCURSOR hCursor);

パラメーター

hCursor
カーソルのハンドル。

戻り値

以前にボタンに関連付けられたカーソルのハンドル。

解説

既定では、カーソルはボタンの面の中央に自動的に配置されます。 カーソルがボタンに対して大きすぎる場合は、どちらの側にもクリップされます。 次のような他の配置オプションを選択できます。

  • BS_TOP

  • BS_LEFT

  • BS_RIGHT

  • BS_CENTER

  • BS_BOTTOM

  • BS_VCENTER

ボタンごとに 4 つのビットマップを使用する CBitmapButton とは異なり、 SetCursor はボタンごとに 1 つのカーソルのみを使用します。 ボタンを押すと、カーソルが下に移動して右に移動するように表示されます。

CButton myIconButton;

// Create an icon button.
myIconButton.Create(_T("My button"), WS_CHILD | WS_VISIBLE | BS_ICON,
                    CRect(10, 10, 60, 50), pParentWnd, 1);

// If no image is defined for the button, define the image to the
// system arrow and question mark cursor.
if (myIconButton.GetCursor() == NULL)
   myIconButton.SetCursor(::LoadCursor(NULL, IDC_HELP));

CButton::SetDropDownState

現在の分割ボタン コントロールのドロップダウン状態を設定します。

BOOL SetDropDownState(BOOL fDropDown);

パラメーター

fDropDown
[in]状態BST_DROPDOWNPUSHED設定する場合は TRUE。それ以外の場合は FALSE。

戻り値

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

解説

分割ボタン コントロールには、BS_SPLITBUTTONまたはBS_DEFSPLITBUTTONのスタイルがあり、ボタンと右側のドロップダウン矢印で構成されます。 詳しくは、「ボタンのスタイル」をご覧ください。 通常、ドロップダウン状態は、ユーザーがドロップダウン矢印をクリックしたときに設定されます。 コントロールのドロップダウン状態をプログラムで設定するには、このメソッドを使用します。 ドロップダウン矢印は、状態を示すために網掛けで描画されます。

このメソッドは、Windows SDK で説明されている BCM_SETDROPDOWNSTATE メッセージを送信します。

最初のコード例では、分割ボタン コントロールにプログラムでアクセスするために使用する変数 ( m_splitButton) を定義します。 この変数は、次の例で使用します。

public:
// Variable to access programatically defined command link control.
CButton m_cmdLink;
// Variable to access programatically defined split button control.
CButton m_splitButton;

次のコード例では、分割ボタン コントロールの状態を設定して、ドロップダウン矢印が押されたことを示します。

/* Set the state of the split button control to indicate that 
   the drop-down arrow is pushed. The arrow is drawn shaded to 
   indicate the state.
   */
m_splitButton.SetDropDownState(TRUE);

CButton::SetElevationRequired

現在のボタン コントロールの状態を elevation required に設定します。これは、コントロールが管理者特権のセキュリティ アイコンを表示するために必要です。

BOOL SetElevationRequired(BOOL fElevationRequired);

パラメーター

fElevationRequired
[in] elevation required 状態を設定する場合は TRUE。それ以外の場合は FALSE。

戻り値

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

解説

ボタンまたはコマンド リンク コントロールでアクションを実行するために管理者特権のセキュリティアクセス許可が必要な場合は、コントロールを elevation required 状態に設定します。 その後、Windows はコントロールにユーザー アカウント制御 (UAC) シールド アイコンを表示します。 詳細については、「ユーザー アカウント制御」を参照してください。

このメソッドは、Windows SDK で説明されている BCM_SETSHIELD メッセージを送信します。

CButton::SetIcon

このメンバー関数を呼び出して、新しいアイコンをボタンに関連付けます。

HICON SetIcon(HICON hIcon);

パラメーター

hIcon
アイコンのハンドル。

戻り値

以前にボタンに関連付けられたアイコンのハンドル。

解説

アイコンは、既定で中央揃えのボタンの面に自動的に配置されます。 アイコンがボタンに対して大きすぎる場合は、どちらの側にもクリップされます。 次のような他の配置オプションを選択できます。

  • BS_TOP

  • BS_LEFT

  • BS_RIGHT

  • BS_CENTER

  • BS_BOTTOM

  • BS_VCENTER

ボタンごとに 4 つのビットマップを使用する CBitmapButton とは異なり、 SetIcon はボタンごとに 1 つのアイコンのみを使用します。 ボタンが押されると、アイコンが下に移動して右に移動するように表示されます。

CButton myIconButton2;

// Create an icon button.
myIconButton2.Create(_T("My button"), WS_CHILD | WS_VISIBLE | BS_ICON,
                     CRect(10, 10, 60, 50), pParentWnd, 1);

// If no icon is defined for the button, define the icon to the
// system error icon.
if (myIconButton2.GetIcon() == NULL)
   myIconButton2.SetIcon(::LoadIcon(NULL, IDI_ERROR));

CButton::SetImageList

このメソッドを呼び出して、 CButton オブジェクトのイメージ リストを設定します。

BOOL SetImageList(PBUTTON_IMAGELIST pbuttonImagelist);

パラメーター

pbuttonImagelist
新しいイメージ リストへのポインター。

戻り値

成功した場合は TRUE を返し、失敗した場合は FALSE を返します。

解説

このメンバー関数は、Windows SDK の Buttons セクションで説明されているように、BCM_SETIMAGELIST メッセージの機能をエミュレートします。

CButton::SetNote

現在のコマンド リンク コントロールのメモ テキストを設定します。

BOOL SetNote(LPCTSTR lpszNote);

パラメーター

lpszNote
[in]コマンド リンク コントロールのメモ テキストとして設定されている Unicode 文字列へのポインター。

戻り値

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

解説

このメソッドは、ボタン スタイルがBS_COMMANDLINKまたはBS_DEFCOMMANDLINKコントロールでのみ使用します。

このメソッドは、Windows SDK で説明されている BCM_SETNOTE メッセージを送信します。

最初のコード例では、コマンド リンク コントロールにプログラムでアクセスするために使用される変数 m_cmdLinkを定義します。 この変数は、次の例で使用します。

public:
// Variable to access programatically defined command link control.
CButton m_cmdLink;
// Variable to access programatically defined split button control.
CButton m_splitButton;

次のコード例では、コマンド リンク コントロールのメモ テキストを設定します。

// Set the command link text.
m_cmdLink.SetNote(_T("This is the command link note."));

CButton::SetSplitGlyph

指定したグリフを現在の分割ボタン コントロールに関連付けます。

BOOL SetSplitGlyph(TCHAR chGlyph);

パラメーター

chGlyph
[in]分割ボタンのドロップダウン矢印として使用するグリフを指定する文字。

戻り値

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

解説

このメソッドは、ボタン スタイルがBS_SPLITBUTTONまたはBS_DEFSPLITBUTTONされているコントロールでのみ使用します。

グリフは、特定のフォントでの文字の物理的な表現です。 chGlyph パラメーターはグリフとして使用されませんが、代わりにシステム定義グリフのセットからグリフを選択するために使用されます。 既定のドロップダウン矢印グリフは文字 '6' で指定され、Unicode 文字 BLACK DOWN-POINTING TRIANGLE (U+25BC) に似ています。

このメソッドは、BCSIF_GLYPH フラグを使用してBUTTON_SPLITINFO構造体のmask メンバーを初期化し、chGlyph パラメーターを使用してhimlGlyph メンバーを初期化し、Windows SDK で説明されているBCM_GETSPLITINFO メッセージでその構造体を送信します。

CButton::SetSplitImageList

イメージ リスト現在の分割ボタン コントロールに関連付けます。

BOOL SetSplitImageList(CImageList* pSplitImageList);

パラメーター

pSplitImageList
[in]現在の分割ボタン コントロールに割り当てる CImageList オブジェクトへのポインター。

戻り値

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

解説

このメソッドは、ボタン スタイルがBS_SPLITBUTTONまたはBS_DEFSPLITBUTTONのコントロールでのみ使用します。

このメソッドは、BCSIF_IMAGE フラグを使用してBUTTON_SPLITINFO構造体のmask メンバーを初期化し、himlGlyph メンバーを pSplitImageList パラメーターで初期化し、Windows SDK で説明されているBCM_GETSPLITINFO メッセージでその構造体を送信します。

CButton::SetSplitInfo

Windows が現在の分割ボタン コントロールを描画する方法を決定するパラメーターを指定します。

BOOL SetSplitInfo(PBUTTON_SPLITINFO pInfo);

パラメーター

pInfo
[in]現在の分割ボタン コントロールを定義する BUTTON_SPLITINFO 構造体へのポインター。

戻り値

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

解説

このメソッドは、ボタン スタイルがBS_SPLITBUTTONまたはBS_DEFSPLITBUTTONのコントロールでのみ使用します。

このメソッドは、Windows SDK で説明されている BCM_SETSPLITINFO メッセージを送信します。

最初のコード例では、分割ボタン コントロールにプログラムでアクセスするために使用する変数 ( m_splitButton) を定義します。

public:
// Variable to access programatically defined command link control.
CButton m_cmdLink;
// Variable to access programatically defined split button control.
CButton m_splitButton;

次のコード例では、分割ボタンのドロップダウン矢印に使用されるグリフを変更します。 この例では、上向き三角形グリフを既定の下向き三角形グリフに置き換えます。 表示されるグリフは、BUTTON_SPLITINFO構造体のhimlGlyph メンバーで指定した文字によって異なります。 下向き三角形グリフは文字 '6' で指定され、上向きの三角形グリフは文字 '5' で指定されます。 比較については、便利なメソッド「 CButton::SetSplitGlyphを参照してください。

/* 
   The drop-down arrow glyph is a function of the specified character. 
   The default "down" drop-down arrow glyph is specified by a 
   character '6'. Set the "up" arrow glyph, which is a character '5'.
   See the convenience method, SetSplitGlyph(), for comparison.
   */
BUTTON_SPLITINFO bsInfo = {0};
bsInfo.mask = BCSIF_GLYPH;
TCHAR chGlyph = _T('5'); // "up" arrow glyph
bsInfo.himlGlyph = (HIMAGELIST)chGlyph;
bRC = m_splitButton.SetSplitInfo(&bsInfo);

CButton::SetSplitSize

現在の分割ボタン コントロールのドロップダウン コンポーネントの外接する四角形を設定します。

BOOL SetSplitSize(LPSIZE pSize);

パラメーター

pSize
[in]外接する四角形を記述する SIZE 構造体へのポインター。

戻り値

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

解説

このメソッドは、ボタン スタイルがBS_SPLITBUTTONまたはBS_DEFSPLITBUTTONのコントロールでのみ使用します。

分割ボタン コントロールを展開すると、リスト コントロールやポケットベル コントロールなどのドロップダウン コンポーネントを表示できます。 このメソッドは、ドロップダウン コンポーネントを含む外接する四角形のサイズを指定します。

このメソッドは、BCSIF_SIZE フラグを使用してBUTTON_SPLITINFO構造体のmask メンバーと、pSize パラメーターを使用してsize メンバーを初期化し、Windows SDK で説明されているBCM_GETSPLITINFO メッセージでその構造体を送信します。

最初のコード例では、分割ボタン コントロールにプログラムでアクセスするために使用する変数 ( m_splitButton) を定義します。 この変数は、次の例で使用します。

public:
// Variable to access programatically defined command link control.
CButton m_cmdLink;
// Variable to access programatically defined split button control.
CButton m_splitButton;

次のコード例では、分割ボタンのドロップダウン矢印のサイズを 2 倍にします。

// Double the size of the split button drop-down arrow.
SIZE sz;
bRC = m_splitButton.GetSplitSize(&sz); // current size
sz.cx = sz.cx * 2;
sz.cy = sz.cy * 2;
bRC = m_splitButton.SetSplitSize(&sz);

CButton::SetSplitStyle

現在の分割ボタン コントロールのスタイルを設定します。

BOOL SetSplitStyle(UINT uSplitStyle);

パラメーター

uSplitStyle
[in]分割ボタン スタイルのビットごとの組み合わせ。 詳細については、BUTTON_SPLITINFO構造体のuSplitStyle メンバーを参照してください。

戻り値

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

解説

このメソッドは、ボタン スタイルがBS_SPLITBUTTONまたはBS_DEFSPLITBUTTONのコントロールでのみ使用します。

分割ボタンのスタイルでは、配置、縦横比、および Windows が分割ボタン アイコンを描画するグラフィカルな形式を指定します。 詳細については、BUTTON_SPLITINFO構造体のuSplitStyle メンバーを参照してください。

このメソッドは、BCSIF_STYLE フラグを使用してBUTTON_SPLITINFO構造体のmask メンバーを初期化し、uSplitStyle メンバーを uSplitStyle パラメーターで初期化し、Windows SDK で説明されているBCM_GETSPLITINFO メッセージでその構造体を送信します。

最初のコード例では、分割ボタン コントロールにプログラムでアクセスするために使用する変数 ( m_splitButton) を定義します。

public:
// Variable to access programatically defined command link control.
CButton m_cmdLink;
// Variable to access programatically defined split button control.
CButton m_splitButton;

次のコード例では、分割ボタンのドロップダウン矢印のスタイルを設定します。 BCSS_ALIGNLEFT スタイルはボタンの左側に矢印を表示し、BCSS_STRETCH スタイルは、ボタンのサイズを変更するときにドロップダウン矢印の比率を保持します。

/* 
    Set the style of the split button drop-down arrow: Display the 
    arrow on the left and retain the arrow's proportions when resizing 
    the control.
    */
bRC = m_splitButton.SetSplitStyle(BCSS_ALIGNLEFT | BCSS_STRETCH);

CButton::SetState

ボタン コントロールを強調表示するかどうかを設定します。

void SetState(BOOL bHighlight);

パラメーター

bHighlight
ボタンを強調表示するかどうかを指定します。 0 以外の値を指定すると、ボタンが強調表示されます。0 の値を指定すると、強調表示が削除されます。

解説

強調表示は、ボタン コントロールの外部に影響します。 ラジオ ボタンまたはチェック ボックスのチェック状態には影響しません。

ユーザーがマウスの左ボタンをクリックして押したままにすると、ボタン コントロールが自動的に強調表示されます。 強調表示は、ユーザーがマウス ボタンを離すと削除されます。

CButton myPushButton;

// Create a push button.
myPushButton.Create(_T("My button"), WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON,
                    CRect(10, 10, 100, 30), pParentWnd, 1);

// Invert the highlight state of the button.
myPushButton.SetState(!(myPushButton.GetState() & 0x0004));

CButton::SetTextMargin

このメソッドを呼び出して、 CButton オブジェクトのテキスト余白を設定します。

BOOL SetTextMargin(RECT* pmargin);

パラメーター

pmargin
新しいテキスト余白へのポインター。

戻り値

成功した場合は TRUE を返し、失敗した場合は FALSE を返します。

解説

このメンバー関数は、Windows SDK の Buttons セクションで説明されているように、BCM_SETTEXTMARGIN メッセージの機能をエミュレートします。

関連項目

CWnd クラス
階層図
CWnd クラス
CComboBox クラス
CEdit クラス
CListBox クラス
CScrollBar クラス
CStatic クラス
CBitmapButton クラス
CDialog クラス