次の方法で共有


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. ボタン用に 1 ~ 4 個のビットマップ イメージを作成します。

  2. CBitmapButton オブジェクトを構築します。

  3. Create 関数を呼び出して Windows ボタン コントロールを作成し、CBitmapButton オブジェクトにアタッチします。

  4. LoadBitmaps メンバー関数を呼び出して、ビットマップ ボタンの構築後にビットマップ リソースを読み込みます。

ダイアログ ボックスにビットマップ ボタン コントロールを含めるには

  1. ボタン用に 1 ~ 4 個のビットマップ イメージを作成します。

  2. ビットマップ ボタンが必要な位置に所有者描画ボタンが配置されたダイアログ テンプレートを作成します。 テンプレート内のボタンのサイズは関係ありません。

  3. ボタンのキャプションを "MYIMAGE" などの値に設定し、IDC_MYIMAGEなどのボタンのシンボルを定義します。

  4. アプリケーションのリソース スクリプトで、ボタン用に作成された各イメージに、手順 3 のボタン キャプションに使用される文字列に文字 "U、"D"、"F"、または "X" (上、下、フォーカス、無効化) のいずれかを追加して構築された ID を指定します。 たとえば、ボタン キャプション "MYIMAGE" の場合、ID は "MYIMAGEU"、"MYIMAGED"、"MYIMAGEF"、"MYIMAGEX" になります。 must 二重引用符で囲んでビットマップの ID を指定します。 そうしないと、リソース エディターによってリソースに整数が割り当てられ、イメージの読み込み時に MFC が失敗します。

  5. アプリケーションのダイアログ クラス ( CDialog から派生) で、 CBitmapButton メンバー オブジェクトを追加します。

  6. CDialog オブジェクトの OnInitDialog ルーチンで、ボタンのコントロール ID とCDialog オブジェクトのthis ポインターをパラメーターとして使用して、CBitmapButton オブジェクトの AutoLoad 関数を呼び出します。

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

クラス CToolBar は、ビットマップ ボタンに対して異なるアプローチを取ります。

CBitmapButtonの詳細については、「Controls」を参照してください。

継承階層

CObject

CCmdTarget

CWnd

CButton

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

関連項目

MFC サンプル CTRLTEST
CButton クラス
階層図