CBitmapButton クラスCBitmapButton Class

ラベルがテキストではなくビットマップ イメージのプッシュ ボタン コントロールを作成します。Creates pushbutton controls labeled with bitmapped images instead of text.

構文Syntax

class CBitmapButton : public CButton

メンバーMembers

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

名前Name 説明Description
CBitmapButton:: CBitmapButtonCBitmapButton::CBitmapButton CBitmapButton オブジェクトを構築します。Constructs a CBitmapButton object.

パブリック メソッドPublic Methods

名前Name 説明Description
CBitmapButton:: 自動読み込みCBitmapButton::AutoLoad ダイアログボックスのボタンをクラスのオブジェクトと関連付け CBitmapButton 、ビットマップを名前で読み込み、ビットマップに合わせてボタンのサイズを調整します。Associates a button in a dialog box with an object of the CBitmapButton class, loads the bitmap(s) by name, and sizes the button to fit the bitmap.
CBitmapButton:: LoadBitmapsCBitmapButton::LoadBitmaps アプリケーションのリソースファイルから1つまたは複数の名前付きビットマップリソースを読み込み、オブジェクトにビットマップをアタッチすることによって、オブジェクトを初期化します。Initializes the object by loading one or more named bitmap resources from the application's resource file and attaching the bitmaps to the object.
CBitmapButton:: SizeToContentCBitmapButton::SizeToContent ビットマップに合わせてボタンのサイズを調整します。Sizes the button to accommodate the bitmap.

解説Remarks

CBitmapButtonオブジェクトには、最大4つのビットマップが含まれています。これには、ボタンが想定しているさまざまな状態のイメージが含まれています。たとえば、up (または normal)、down (または selected)、フォーカス、および無効になります。CBitmapButton objects contain up to four bitmaps, which contain images for the different states a button can assume: up (or normal), down (or selected), focused, and disabled. 最初のビットマップのみが必要です。他のオプションは省略可能です。Only the first bitmap is required; the others are optional.

ビットマップボタンのイメージには、イメージの周りとイメージ自体の境界線が含まれます。Bitmap-button images include the border around the image as well as the image itself. 境界線は、通常、ボタンの状態を示す部分を再生します。The border typically plays a part in showing the state of the button. たとえば、フォーカスされた状態のビットマップは、通常、アップ状態のビットマップに似ていますが、境界線または境界線の枠線から破線の四角形が埋め込まれています。For example, the bitmap for the focused state usually is like the one for the up state but with a dashed rectangle inset from the border or a thick solid line at the border. 無効な状態のビットマップは、通常、アップ状態のビットマップに似ていますが、コントラストは低くなります (淡色表示またはグレー表示のメニューの選択など)。The bitmap for the disabled state usually resembles the one for the up state but has lower contrast (like a dimmed or grayed menu selection).

これらのビットマップは任意のサイズにすることができますが、すべてが up 状態のビットマップと同じサイズであるかのように扱われます。These bitmaps can be of any size, but all are treated as if they were the same size as the bitmap for the up state.

さまざまなアプリケーションでは、ビットマップイメージのさまざまな組み合わせが必要になります。Various applications demand different combinations of bitmap images:

上へUp [下へ]Down フォーカスされているFocused 無効Disabled アプリケーションApplication
×× BitmapBitmap
×× ×× WS_TABSTOP スタイルのないボタンButton without WS_TABSTOP style
×× ×× ×× ×× すべての状態のダイアログボタンDialog button with all states
×× ×× ×× WS_TABSTOP スタイルのダイアログボタンDialog button with WS_TABSTOP style

ビットマップボタンコントロールを作成する場合は、BS_OWNERDRAW スタイルを設定して、ボタンがオーナー描画であることを指定します。When creating a bitmap-button control, set the BS_OWNERDRAW style to specify that the button is owner-drawn. これにより、Windows がボタンの WM_MEASUREITEM と WM_DRAWITEM メッセージを送信するようになります。フレームワークは、これらのメッセージを処理し、ボタンの外観を管理します。This causes Windows to send the WM_MEASUREITEM and WM_DRAWITEM messages for the button; the framework handles these messages and manages the appearance of the button for you.

ウィンドウのクライアント領域にビットマップボタンコントロールを作成するにはTo create a bitmap-button control in a window's client area

  1. ボタン用に 1 ~ 4 個のビットマップイメージを作成します。Create one to four bitmap images for the button.

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

  3. Create関数を呼び出して、Windows のボタンコントロールを作成し、それをオブジェクトにアタッチし CBitmapButton ます。Call the Create function to create the Windows button control and attach it to the CBitmapButton object.

  4. Load bitmap メンバー関数を呼び出して、ビットマップボタンの構築後にビットマップリソースを読み込みます。Call the LoadBitmaps member function to load the bitmap resources after the bitmap button is constructed.

ビットマップボタンコントロールをダイアログボックスに追加するにはTo include a bitmap-button control in a dialog box

  1. ボタン用に 1 ~ 4 個のビットマップイメージを作成します。Create one to four bitmap images for the button.

  2. ビットマップボタンを配置するオーナー描画ボタンを持つダイアログテンプレートを作成します。Create a dialog template with an owner-draw button positioned where you want the bitmap button. テンプレート内のボタンのサイズは関係ありません。The size of the button in the template does not matter.

  3. ボタンのキャプションを "MYIMAGE" などの値に設定し、IDC_MYIMAGE などのボタンのシンボルを定義します。Set the button's caption to a value such as " MYIMAGE" and define a symbol for the button such as IDC_MYIMAGE.

  4. アプリケーションのリソーススクリプトで、ボタン用に作成された各イメージを、手順 3. のボタンキャプションに使用する文字列に "U"、"D"、"F"、"X" (up、down、フォーカス、および無効) のいずれかの文字を追加して作成した ID を付けます。In your application's resource script, give each of the images created for the button an ID constructed by appending one of the letters "U," "D," "F," or "X" (for up, down, focused, and disabled) to the string used for the button caption in step 3. たとえば、ボタンのキャプション "MYIMAGE" の場合、Id は "MYIMAGEU"、"MYIMAGE"、"MYIMAGEF"、"MYIMAGE" のようになります。For the button caption " MYIMAGE," for example, the IDs would be " MYIMAGEU," " MYIMAGED," " MYIMAGEF," and " MYIMAGEX." ビットマップの ID を二重引用符で囲んで指定する必要があります。You must specify the ID of your bitmaps within double quotes. そうしないと、リソースエディターによってリソースに整数が割り当てられ、イメージの読み込み時に MFC は失敗します。Otherwise the resource editor will assign an integer to the resource and MFC will fail when loading the image.

  5. アプリケーションのダイアログクラス (から派生) で CDialogCBitmapButton メンバーオブジェクトを追加します。In your application's dialog class (derived from CDialog), add a CBitmapButton member object.

  6. CDialogオブジェクトのOnInitDialogルーチンで、オブジェクトの自動読み込み関数を呼び出し CBitmapButton ます。その際、ボタンのコントロール ID とオブジェクトのポインターをパラメーターとして使用しAutoLoad CDialog this ます。In the CDialog object's OnInitDialog routine, call the CBitmapButton object's AutoLoad function, using as parameters the button's control ID and the CDialog object's this pointer.

ビットマップボタンコントロールによって親 (通常はから派生するクラス) にビットマップボタンコントロールによって送信された BN_CLICKED などの Windows 通知メッセージを処理する場合は CDialogCDialog 各メッセージのメッセージマップエントリとメッセージハンドラーメンバー関数を、派生オブジェクトに追加します。If you want to handle Windows notification messages, such as BN_CLICKED, sent by a bitmap-button control to its parent (usually a class derived from CDialog), add to the CDialog-derived object a message-map entry and message-handler member function for each message. オブジェクトによって送信される通知 CBitmapButton は、 CButtonオブジェクトによって送信される通知と同じです。The notifications sent by a CBitmapButton object are the same as those sent by a CButton object.

クラスのCToolBarは、ビットマップボタンに別のアプローチを取ります。The class CToolBar takes a different approach to bitmap buttons.

の詳細につい CBitmapButton ては、「コントロール」を参照してください。For more information on CBitmapButton, see Controls.

継承階層Inheritance Hierarchy

CObjectCObject

CCmdTargetCCmdTarget

CWndCWnd

CButtonCButton

CBitmapButton

必要条件Requirements

ヘッダー: afxext.hHeader: afxext.h

CBitmapButton:: 自動読み込みCBitmapButton::AutoLoad

ダイアログボックスのボタンをクラスのオブジェクトと関連付け CBitmapButton 、ビットマップを名前で読み込み、ビットマップに合わせてボタンのサイズを調整します。Associates a button in a dialog box with an object of the CBitmapButton class, loads the bitmap(s) by name, and sizes the button to fit the bitmap.

BOOL AutoLoad(
    UINT nID,
    CWnd* pParent);

パラメーターParameters

nIDnID
ボタンのコントロール ID。The button's control ID.

pParentpParent
ボタンを所有するオブジェクトへのポインター。Pointer to the object that owns the button.

戻り値Return Value

正常終了した場合は 0 以外を返します。それ以外の場合は 0 を返します。Nonzero if successful; otherwise 0.

解説Remarks

関数を使用し AutoLoad て、ダイアログボックスのオーナー描画ボタンをビットマップボタンとして初期化します。Use the AutoLoad function to initialize an owner-draw button in a dialog box as a bitmap button. この関数を使用する手順については、クラスの解説を参照して CBitmapButton ください。Instructions for using this function are in the remarks for the CBitmapButton class.

Example

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:: CBitmapButtonCBitmapButton::CBitmapButton

CBitmapButton オブジェクトを作成します。Creates a CBitmapButton object.

CBitmapButton();

解説Remarks

C++ オブジェクトを作成した後 CBitmapButtonCButton:: createを呼び出して、Windows ボタンコントロールを作成し、それをオブジェクトにアタッチし CBitmapButton ます。After creating the C++ CBitmapButton object, call CButton::Create to create the Windows button control and attach it to the CBitmapButton object.

Example

// Declare a bitmap button object on the stack.
CBitmapButton myButton;

// Declare a bitmap button object on the heap.
CBitmapButton *pmyButton = new CBitmapButton;

CBitmapButton:: LoadBitmapsCBitmapButton::LoadBitmaps

この関数は、リソース名または ID 番号で識別されるビットマップイメージを読み込む場合、または、 AutoLoad ダイアログボックスの一部ではないビットマップボタンを作成する場合などに使用します。Use this function when you want to load bitmap images identified by their resource names or ID numbers, or when you cannot use the AutoLoad function because, for example, you are creating a bitmap button that is not part of a dialog box.

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

パラメーターParameters

lpszBitmapResourcelpszBitmapResource
ビットマップボタンの normal または "up" 状態のビットマップの名前を含む、null で終わる文字列を指します。Points to the null-terminated string that contains the name of the bitmap for a bitmap button's normal or "up" state. 必須。Required.

lpszBitmapResourceSellpszBitmapResourceSel
ビットマップボタンの選択された状態または "down" 状態のビットマップの名前を含む、null で終わる文字列を指します。Points to the null-terminated string that contains the name of the bitmap for a bitmap button's selected or "down" state. NULL の場合もあります。May be NULL.

lpszBitmapResourceFocuslpszBitmapResourceFocus
ビットマップボタンのフォーカス状態のビットマップの名前を含む、null で終わる文字列を指します。Points to the null-terminated string that contains the name of the bitmap for a bitmap button's focused state. NULL の場合もあります。May be NULL.

lpszBitmapResourceDisabledlpszBitmapResourceDisabled
ビットマップボタンの無効状態のビットマップの名前を含む、null で終わる文字列を指します。Points to the null-terminated string that contains the name of the bitmap for a bitmap button's disabled state. NULL の場合もあります。May be NULL.

nIDBitmapResourcenIDBitmapResource
ビットマップボタンの normal または "up" 状態のビットマップリソースのリソース ID 番号を指定します。Specifies the resource ID number of the bitmap resource for a bitmap button's normal or "up" state. 必須。Required.

nIDBitmapResourceSelnIDBitmapResourceSel
ビットマップボタンの選択または "ダウン" 状態のビットマップリソースのリソース ID 番号を指定します。Specifies the resource ID number of the bitmap resource for a bitmap button's selected or "down" state. 0の場合もあります。May be 0.

nIDBitmapResourceFocusnIDBitmapResourceFocus
ビットマップボタンのフォーカス状態に関するビットマップリソースのリソース ID 番号を指定します。Specifies the resource ID number of the bitmap resource for a bitmap button's focused state. 0の場合もあります。May be 0.

nIDBitmapResourceDisablednIDBitmapResourceDisabled
ビットマップボタンの無効状態に関するビットマップリソースのリソース ID 番号を指定します。Specifies the resource ID number of the bitmap resource for a bitmap button's disabled state. 0の場合もあります。May be 0.

戻り値Return Value

正常終了した場合は 0 以外を返します。それ以外の場合は 0 を返します。Nonzero if successful; otherwise 0.

Example


// 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:: SizeToContentCBitmapButton::SizeToContent

ビットマップのサイズを変更するには、この関数を呼び出します。Call this function to resize a bitmap button to the size of the bitmap.

void SizeToContent();

Example

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

関連項目See also

MFC のサンプル CTRLTESTMFC Sample CTRLTEST
CButton クラスCButton Class
階層図Hierarchy Chart