CBitmapButton クラス
ラベルがテキストではなくビットマップ イメージのプッシュ ボタン コントロールを作成します。
構文
class CBitmapButton : public CButton
メンバー
パブリック コンストラクター
名前 | 説明 |
---|---|
CBitmapButton::CBitmapButton | CBitmapButton オブジェクトを構築します。 |
パブリック メソッド
名前 | 説明 |
---|---|
CBitmapButton::AutoLoad | ダイアログ ボックス内のボタンを CBitmapButton クラスのオブジェクトに関連付け、名前でビットマップを読み込み、ビットマップに合わせてボタンのサイズを設定します。 |
CBitmapButton::LoadBitmaps | アプリケーションのリソース ファイルから 1 つ以上の名前付きビットマップ リソースを読み込み、ビットマップをオブジェクトにアタッチして、オブジェクトを初期化します。 |
CBitmapButton::SizeToContent | ビットマップに合わせてボタンのサイズを設定します。 |
解説
CBitmapButton
オブジェクトには最大 4 つのビットマップが含まれます。このビットマップには、ボタンが想定できるさまざまな状態の画像が含まれます。上 (または標準)、下 (または選択)、フォーカスあり、無効です。 最初のビットマップのみが必要です。その他は省略可能です。
ビットマップ ボタンイメージには、イメージの周囲の境界線とイメージ自体が含まれます。 通常、境界線はボタンの状態を表示する一部を果たします。 たとえば、フォーカスされた状態のビットマップは、通常、上の状態のビットマップに似ていますが、境界線から破線の四角形がインセットされているか、境界線に太い実線が表示されます。 無効な状態のビットマップは、通常、アップ状態のビットマップに似ていますが、コントラストが低くなります (淡色表示または灰色表示のメニュー選択など)。
これらのビットマップは任意のサイズにすることができますが、すべてアップ状態のビットマップと同じサイズであるかのように扱われます。
さまざまなアプリケーションでは、ビットマップ イメージのさまざまな組み合わせが必要です。
上へ | [下へ] | フォーカスがある | 無効 | アプリケーション |
---|---|---|---|---|
× | Bitmap | |||
× | × | WS_TABSTOPスタイルのないボタン | ||
× | × | × | × | すべての状態を含むダイアログ ボタン |
× | × | × | WS_TABSTOP スタイルのダイアログ ボタン |
ビットマップ ボタン コントロールを作成するときに、ボタンが所有者描画されることを指定するようにBS_OWNERDRAW スタイルを設定します。 これにより、Windows はボタンのWM_MEASUREITEMとWM_DRAWITEMメッセージを送信します。フレームワークはこれらのメッセージを処理し、ボタンの外観を管理します。
ウィンドウのクライアント領域にビットマップ ボタン コントロールを作成するには
ボタン用に 1 ~ 4 個のビットマップ イメージを作成します。
CBitmapButton オブジェクトを構築します。
Create 関数を呼び出して Windows ボタン コントロールを作成し、
CBitmapButton
オブジェクトにアタッチします。LoadBitmaps メンバー関数を呼び出して、ビットマップ ボタンの構築後にビットマップ リソースを読み込みます。
ダイアログ ボックスにビットマップ ボタン コントロールを含めるには
ボタン用に 1 ~ 4 個のビットマップ イメージを作成します。
ビットマップ ボタンが必要な位置に所有者描画ボタンが配置されたダイアログ テンプレートを作成します。 テンプレート内のボタンのサイズは関係ありません。
ボタンのキャプションを "MYIMAGE" などの値に設定し、IDC_MYIMAGEなどのボタンのシンボルを定義します。
アプリケーションのリソース スクリプトで、ボタン用に作成された各イメージに、手順 3 のボタン キャプションに使用される文字列に文字 "U、"D"、"F"、または "X" (上、下、フォーカス、無効化) のいずれかを追加して構築された ID を指定します。 たとえば、ボタン キャプション "MYIMAGE" の場合、ID は "MYIMAGEU"、"MYIMAGED"、"MYIMAGEF"、"MYIMAGEX" になります。 must 二重引用符で囲んでビットマップの ID を指定します。 そうしないと、リソース エディターによってリソースに整数が割り当てられ、イメージの読み込み時に MFC が失敗します。
アプリケーションのダイアログ クラス (
CDialog
から派生) で、CBitmapButton
メンバー オブジェクトを追加します。CDialog
オブジェクトの OnInitDialog ルーチンで、ボタンのコントロール ID とCDialog
オブジェクトのthis
ポインターをパラメーターとして使用して、CBitmapButton
オブジェクトの AutoLoad 関数を呼び出します。
ビットマップ ボタン コントロールによって親 (通常は CDialog
から派生したクラス) に送信される、BN_CLICKEDなどの Windows 通知メッセージを処理する場合は、 CDialog
派生オブジェクトにメッセージ マップ エントリとメッセージ ハンドラー メンバー関数を各メッセージに追加します。 CBitmapButton
オブジェクトによって送信される通知は、CButton オブジェクトによって送信される通知と同じです。
クラス CToolBar は、ビットマップ ボタンに対して異なるアプローチを取ります。
CBitmapButton
の詳細については、「Controls」を参照してください。
継承階層
CBitmapButton
要件
Header: afxext.h
CBitmapButton::AutoLoad
ダイアログ ボックス内のボタンを CBitmapButton
クラスのオブジェクトに関連付け、名前でビットマップを読み込み、ビットマップに合わせてボタンのサイズを設定します。
BOOL AutoLoad(
UINT nID,
CWnd* pParent);
パラメーター
nID
ボタンのコントロール ID。
pParent
ボタンを所有するオブジェクトへのポインター。
戻り値
正常終了した場合は 0 以外を返します。それ以外の場合は 0 を返します。
解説
AutoLoad
関数を使用して、ダイアログ ボックスの所有者描画ボタンをビットマップ ボタンとして初期化します。 この関数を使用する手順は、 CBitmapButton
クラスの解説にあります。
例
CBitmapButton myButton;
// Initialize the owner-drawn button with the id IDC_MYBUTTON as a bitmap
// button. This code is used in the OnInitDialog handler of my dialog.
myButton.AutoLoad(IDC_MYBUTTON, this);
CBitmapButton::CBitmapButton
CBitmapButton
オブジェクトを作成します。
CBitmapButton();
解説
C++ CBitmapButton
オブジェクトを作成した後、 CButton::Create を呼び出して Windows ボタン コントロールを作成し、 CBitmapButton
オブジェクトにアタッチします。
例
// Declare a bitmap button object on the stack.
CBitmapButton myButton;
// Declare a bitmap button object on the heap.
CBitmapButton *pmyButton = new CBitmapButton;
CBitmapButton::LoadBitmaps
この関数は、リソース名または ID 番号で識別されたビットマップ イメージを読み込む場合、または AutoLoad
関数を使用できない場合に使用します。たとえば、ダイアログ ボックスに含まれていないビットマップ ボタンを作成するためです。
BOOL LoadBitmaps(
LPCTSTR lpszBitmapResource,
LPCTSTR lpszBitmapResourceSel = NULL,
LPCTSTR lpszBitmapResourceFocus = NULL,
LPCTSTR lpszBitmapResourceDisabled = NULL);
BOOL LoadBitmaps(
UINT nIDBitmapResource,
UINT nIDBitmapResourceSel = 0,
UINT nIDBitmapResourceFocus = 0,
UINT nIDBitmapResourceDisabled = 0);
パラメーター
lpszBitmapResource
ビットマップ ボタンの通常または "アップ" 状態のビットマップの名前を含む null で終わる文字列を指します。 必須。
lpszBitmapResourceSel
ビットマップ ボタンの選択または "ダウン" 状態のビットマップの名前を含む null で終わる文字列を指します。 NULL である可能性があります。
lpszBitmapResourceFocus
ビットマップ ボタンのフォーカス状態のビットマップの名前を含む null で終わる文字列を指します。 NULL である可能性があります。
lpszBitmapResourceDisabled
ビットマップ ボタンの無効な状態のビットマップの名前を含む null で終わる文字列を指します。 NULL である可能性があります。
nIDBitmapResource
ビットマップ ボタンの通常または "アップ" 状態のビットマップ リソースのリソース ID 番号を指定します。 必須。
nIDBitmapResourceSel
ビットマップ ボタンの選択状態または "ダウン" 状態のビットマップ リソースのリソース ID 番号を指定します。 0 を指定できます。
nIDBitmapResourceFocus
ビットマップ ボタンのフォーカス状態のビットマップ リソースのリソース ID 番号を指定します。 0 を指定できます。
nIDBitmapResourceDisabled
ビットマップ ボタンの無効状態のビットマップ リソースのリソース ID 番号を指定します。 0 を指定できます。
戻り値
正常終了した場合は 0 以外を返します。それ以外の場合は 0 を返します。
例
// Create the bitmap button (must include the BS_OWNERDRAW style).
pmyButton->Create(NULL, WS_CHILD | WS_VISIBLE | BS_OWNERDRAW,
CRect(10, 10, 100, 100), pParentWnd, 1);
// Load the bitmaps for this button.
pmyButton->LoadBitmaps(IDB_UP, IDB_DOWN, IDB_FOCUS, IDB_DISABLE);
CBitmapButton::SizeToContent
ビットマップ ボタンのサイズをビットマップのサイズに変更するには、この関数を呼び出します。
void SizeToContent();
例
CBitmapButton *pmyButton = new CBitmapButton();
// Create the bitmap button (must include the BS_OWNERDRAW style).
pmyButton->Create(NULL, WS_CHILD | WS_VISIBLE | BS_OWNERDRAW,
CRect(10, 10, 100, 100), pParentWnd, 1);
// Load the bitmaps for this button.
pmyButton->LoadBitmaps(IDB_UP, IDB_DOWN, IDB_FOCUS, IDB_DISABLE);
// Resize the button to be the size of the bitmaps.
pmyButton->SizeToContent();