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
オブジェクトを作成した場合、または親ダイアログ オブジェクトに埋め込まれている場合は、自動的に破棄されます。
CButton
ヘッダー: afxwin.h
CButton
オブジェクトを構築します。
CButton();
// Declare a button object.
CButton myButton;
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);
所有者が描画したボタンの視覚的な側面が変更されたときにフレームワークによって呼び出されます。
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);
}
このメンバー関数を呼び出して、以前にボタンに関連付けられている 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)));
ボタン コントロール スタイルに関する情報を取得します。
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);
ラジオ ボタンまたはチェック ボックスのチェック状態を取得します。
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));
このメンバー関数を呼び出して、以前にボタンに関連付けられている 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));
このメンバー関数を呼び出して、以前にボタンに関連付けられている 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));
ボタン コントロールの理想的なサイズを取得します。
BOOL GetIdealSize(SIZE* psize);
psize
ボタンの現在のサイズへのポインター。
正常終了した場合は 0 以外を返します。それ以外の場合は 0 を返します。
このメンバー関数は、Windows SDK の Buttons セクションで説明されているように、BCM_GETIDEALSIZE メッセージの機能をエミュレートします。
ボタン コントロールからイメージ リストを取得するには、このメソッドを呼び出します。
BOOL GetImageList(PBUTTON_IMAGELIST pbuttonImagelist);
pbuttonImagelist
CButton
オブジェクトのイメージ リストへのポインター。
正常終了した場合は 0 以外を返します。それ以外の場合は 0 を返します。
このメンバー関数は、Windows SDK の Buttons セクションで説明されているように、BCM_GETIMAGELIST メッセージの機能をエミュレートします。
現在のコマンド リンク コントロールに関連付けられているメモ テキストを取得します。
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 メッセージを送信します。
現在のコマンド リンク コントロールのノート テキストの長さを取得します。
UINT GetNoteLength() const;
現在のコマンド リンク コントロールのノート テキストの長さ (16 ビット Unicode 文字)。
このメソッドは、ボタン スタイルがBS_COMMANDLINKまたはBS_DEFCOMMANDLINKコントロールでのみ使用します。
このメソッドは、Windows SDK で説明されている BCM_GETNOTELENGTH メッセージを送信します。
現在の分割ボタン コントロールに関連付けられているグリフを取得します。
TCHAR GetSplitGlyph() const;
現在の分割ボタン コントロールに関連付けられているグリフ文字。
グリフは、特定のフォントでの文字の物理的な表現です。 たとえば、分割ボタン コントロールは、Unicode チェック マーク文字 (U+2713) のグリフで修飾できます。
このメソッドは、ボタン スタイルがBS_SPLITBUTTONまたはBS_DEFSPLITBUTTONのコントロールでのみ使用します。
このメソッドは、BCSIF_GLYPH フラグを使用してBUTTON_SPLITINFO構造体のmask
メンバーを初期化し、Windows SDK で説明されているBCM_GETSPLITINFO メッセージでその構造体を送信します。 メッセージ関数が返されると、このメソッドは構造体の himlGlyph
メンバーからグリフを取得します。
現在の分割ボタン コントロールの イメージ リスト を取得します。
CImageList* GetSplitImageList() const;
CImageList オブジェクトへのポインター。
このメソッドは、ボタン スタイルがBS_SPLITBUTTONまたはBS_DEFSPLITBUTTONのコントロールでのみ使用します。
このメソッドは、BCSIF_IMAGE フラグを使用してBUTTON_SPLITINFO構造体のmask
メンバーを初期化し、Windows SDK で説明されているBCM_GETSPLITINFO メッセージでその構造体を送信します。 メッセージ関数が戻るときに、このメソッドは、構造体の himlGlyph
メンバーからイメージ リストを取得します。
Windows が現在の分割ボタン コントロールを描画する方法を決定するパラメーターを取得します。
BOOL GetSplitInfo(PBUTTON_SPLITINFO pInfo) const;
pInfo
[out]現在の分割ボタン コントロールに関する情報を受け取る BUTTON_SPLITINFO 構造体へのポインター。 呼び出し元は、構造体の割り当てを担当します。
このメソッドが成功した場合は TRUE。それ以外の場合は FALSE。
このメソッドは、ボタン スタイルがBS_SPLITBUTTONまたはBS_DEFSPLITBUTTONのコントロールでのみ使用します。
このメソッドは、Windows SDK で説明されている BCM_GETSPLITINFO メッセージを送信します。
現在の分割ボタン コントロールのドロップダウン コンポーネントの外接する四角形を取得します。
BOOL GetSplitSize(LPSIZE pSize) const;
pSize
[out]四角形の説明を受け取る SIZE 構造体へのポインター。
このメソッドが成功した場合は TRUE。それ以外の場合は FALSE。
このメソッドは、ボタン スタイルがBS_SPLITBUTTONまたはBS_DEFSPLITBUTTONのコントロールでのみ使用します。
分割ボタン コントロールを展開すると、リスト コントロールやポケットベル コントロールなどのドロップダウン コンポーネントを表示できます。 このメソッドは、ドロップダウン コンポーネントを含む外接する四角形を取得します。
このメソッドは、BCSIF_SIZE フラグを使用してBUTTON_SPLITINFO構造体のmask
メンバーを初期化し、Windows SDK で説明されているBCM_GETSPLITINFO メッセージでその構造体を送信します。 メッセージ関数が返されると、このメソッドは構造体の size
メンバーから外接する四角形を取得します。
現在の分割ボタン コントロールを定義する分割ボタン スタイルを取得します。
UINT GetSplitStyle() const;
分割ボタン スタイルのビットごとの組み合わせ。 詳細については、BUTTON_SPLITINFO構造体のuSplitStyle
メンバーを参照してください。
このメソッドは、ボタン スタイルがBS_SPLITBUTTONまたはBS_DEFSPLITBUTTONのコントロールでのみ使用します。
分割ボタンのスタイルでは、配置、縦横比、および Windows が分割ボタン アイコンを描画するグラフィカルな形式を指定します。
このメソッドは、BCSIF_STYLE フラグを使用してBUTTON_SPLITINFO構造体のmask
メンバーを初期化し、Windows SDK で説明されているBCM_GETSPLITINFO メッセージでその構造体を送信します。 メッセージ関数が戻るときに、このメソッドは、構造体の uSplitStyle
メンバーから分割ボタンのスタイルを取得します。
ボタン コントロールの状態を取得します。
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
オブジェクトのテキスト余白を取得します。
BOOL GetTextMargin(RECT* pmargin);
pmargin
CButton
オブジェクトのテキスト余白へのポインター。
テキストの余白を返します。 正常終了した場合は 0 以外を返します。それ以外の場合は 0 を返します。
このメンバー関数は、Windows SDK の Buttons セクションで説明されているように、BCM_GETTEXTMARGIN メッセージの機能をエミュレートします。
このメンバー関数を呼び出して、新しいビットマップをボタンに関連付けます。
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)));
ボタンのスタイルを変更します。
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);
ラジオ ボタンまたはチェック ボックスのチェック状態を設定またはリセットします。
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));
このメンバー関数を呼び出して、新しいカーソルをボタンに関連付けます。
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));
現在の分割ボタン コントロールのドロップダウン状態を設定します。
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);
現在のボタン コントロールの状態を elevation required
に設定します。これは、コントロールが管理者特権のセキュリティ アイコンを表示するために必要です。
BOOL SetElevationRequired(BOOL fElevationRequired);
fElevationRequired
[in] elevation required
状態を設定する場合は TRUE。それ以外の場合は FALSE。
このメソッドが成功した場合は TRUE。それ以外の場合は FALSE。
ボタンまたはコマンド リンク コントロールでアクションを実行するために管理者特権のセキュリティアクセス許可が必要な場合は、コントロールを elevation required
状態に設定します。 その後、Windows はコントロールにユーザー アカウント制御 (UAC) シールド アイコンを表示します。 詳細については、「ユーザー アカウント制御」を参照してください。
このメソッドは、Windows SDK で説明されている BCM_SETSHIELD メッセージを送信します。
このメンバー関数を呼び出して、新しいアイコンをボタンに関連付けます。
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
オブジェクトのイメージ リストを設定します。
BOOL SetImageList(PBUTTON_IMAGELIST pbuttonImagelist);
pbuttonImagelist
新しいイメージ リストへのポインター。
成功した場合は TRUE を返し、失敗した場合は FALSE を返します。
このメンバー関数は、Windows SDK の Buttons セクションで説明されているように、BCM_SETIMAGELIST メッセージの機能をエミュレートします。
現在のコマンド リンク コントロールのメモ テキストを設定します。
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."));
指定したグリフを現在の分割ボタン コントロールに関連付けます。
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 メッセージでその構造体を送信します。
イメージ リスト現在の分割ボタン コントロールに関連付けます。
BOOL SetSplitImageList(CImageList* pSplitImageList);
pSplitImageList
[in]現在の分割ボタン コントロールに割り当てる CImageList オブジェクトへのポインター。
このメソッドが成功した場合は TRUE。それ以外の場合は FALSE。
このメソッドは、ボタン スタイルがBS_SPLITBUTTONまたはBS_DEFSPLITBUTTONのコントロールでのみ使用します。
このメソッドは、BCSIF_IMAGE フラグを使用してBUTTON_SPLITINFO構造体のmask
メンバーを初期化し、himlGlyph
メンバーを pSplitImageList パラメーターで初期化し、Windows SDK で説明されているBCM_GETSPLITINFO メッセージでその構造体を送信します。
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);
現在の分割ボタン コントロールのドロップダウン コンポーネントの外接する四角形を設定します。
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);
現在の分割ボタン コントロールのスタイルを設定します。
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);
ボタン コントロールを強調表示するかどうかを設定します。
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
オブジェクトのテキスト余白を設定します。
BOOL SetTextMargin(RECT* pmargin);
pmargin
新しいテキスト余白へのポインター。
成功した場合は TRUE を返し、失敗した場合は FALSE を返します。
このメンバー関数は、Windows SDK の Buttons セクションで説明されているように、BCM_SETTEXTMARGIN メッセージの機能をエミュレートします。
CWnd クラス
階層図
CWnd クラス
CComboBox クラス
CEdit クラス
CListBox クラス
CScrollBar クラス
CStatic クラス
CBitmapButton クラス
CDialog クラス