CMFCMenuButton クラス
ポップアップ メニューを表示してユーザーのメニュー選択を報告するボタンです。
構文
class CMFCMenuButton : public CMFCButton
メンバー
パブリック コンストラクター
名前 | 説明 |
---|---|
CMFCMenuButton::CMFCMenuButton | CMFCMenuButton オブジェクトを構築します。 |
パブリック メソッド
名前 | 説明 |
---|---|
CMFCMenuButton::P reTranslateMessage | ウィンドウ メッセージがディスパッチされる前に変換するためにフレームワークによって呼び出されます。 ( CMFCButton::PreTranslateMessage をオーバーライドします)。 |
CMFCMenuButton::SizeToContent | テキストと画像のサイズに応じてボタンのサイズを変更します。 |
データ メンバー
名前 | 説明 |
---|---|
CMFCMenuButton::m_bOSMenu | 既定のシステム ポップアップ メニューを表示するか、 CContextMenuManager::TrackPopupMenu を使用するかを指定します。 |
CMFCMenuButton::m_bRightArrow | ボタンの下または右側にポップアップ メニューを表示するかどうかを指定します。 |
CMFCMenuButton::m_bStayPressed | ユーザーがボタンを離した後にメニュー ボタンの状態を変更するかどうかを指定します。 |
CMFCMenuButton::m_hMenu | 添付されている Windows メニューのハンドル。 |
CMFCMenuButton::m_nMenuResult | ユーザーがポップアップ メニューから選択した項目を示す識別子。 |
CMFCMenuButton::m_bDefaultClick | 既定の (ボタン テキスト/画像の) 処理を許可します。 |
解説
CMFCMenuButton
クラスは、CMFCButton クラスから派生、CButton クラスから派生します。 そのため、CButton
と同じ方法でコードでCMFCMenuButton
を使用できます。
CMFCMenuButton
を作成するときは、関連付けられているポップアップ メニューにハンドルを渡す必要があります。 次に、関数 CMFCMenuButton::SizeToContent
を呼び出します。 CMFCMenuButton::SizeToContent
は、ポップアップ ウィンドウが表示される場所 (つまり、ボタンの下または右側) を指す矢印を含めるのにボタン のサイズが十分であることを確認します。
例
次の例では、ボタンにアタッチされているメニューのハンドルを設定し、テキストと画像のサイズに応じてボタンのサイズを変更し、フレームワークによって表示されるポップアップ メニューを設定する方法を示します。 このコード スニペットは、 New コントロールのサンプルの一部です。
CMFCMenuButton m_btnMenu;
// CMenu m_menu
m_btnMenu.m_hMenu = m_menu.GetSubMenu(0)->GetSafeHmenu();
m_btnMenu.SizeToContent();
// set to FALSE so that the framework calls CContextMenuManager::TrackPopupMenu
// to display its menu
m_btnMenu.m_bOSMenu = FALSE;
継承階層
要件
Header: afxmenubutton.h
CMFCMenuButton::CMFCMenuButton
新しい CMFCMenuButton オブジェクトを構築します。
CMFCMenuButton();
CMFCMenuButton::m_bOSMenu
フレームワークが表示するポップアップ メニューを示すブール型メンバー変数。
BOOL m_bOSMenu;
解説
m_bOSMenu
が TRUE の場合、フレームワークはこのオブジェクトの継承されたTrackPopupMenu
メソッドを呼び出します。 それ以外の場合、フレームワークは CContextMenuManager::TrackPopupMenu を呼び出します。
CMFCMenuButton::m_bRightArrow
ポップアップ メニューの場所を示すブール型のメンバー変数。
BOOL m_bRightArrow;
解説
ユーザーがメニュー ボタンを押すと、アプリケーションにポップアップ メニューが表示されます。 フレームワークには、ボタンの下またはボタンの右側にポップアップ メニューが表示されます。 ボタンには、ポップアップ メニューが表示される場所を示す小さな矢印もあります。 m_bRightArrow
が TRUE の場合、フレームワークはボタンの右側にポップアップ メニューを表示します。 それ以外の場合は、ボタンの下にポップアップ メニューが表示されます。
CMFCMenuButton::m_bStayPressed
ユーザーがポップアップ メニューから選択を行っている間にメニュー ボタンが押された状態で表示されるかどうかを示すブール型メンバー変数。
BOOL m_bStayPressed;
解説
m_bStayPressed
メンバーが FALSE の場合、ボタンをクリックしてもメニュー ボタンは押されません。 この場合、フレームワークにはポップアップ メニューのみが表示されます。
m_bStayPressed
メンバーが TRUE の場合、ユーザーがボタンをクリックするとメニュー ボタンが押されます。 ユーザーがポップアップ メニューを閉じるまで、選択または取り消しによって押された状態が維持されます。
CMFCMenuButton::m_hMenu
添付メニューのハンドル。
HMENU m_hMenu;
解説
フレームワークでは、ユーザーがメニュー ボタンをクリックすると、このメンバー変数によって示されるメニューが表示されます。
CMFCMenuButton::m_nMenuResult
ユーザーがポップアップ メニューから選択する項目を示す整数。
int m_nMenuResult;
解説
ユーザーが選択を行わずにメニューをキャンセルした場合、またはエラーが発生した場合、このメンバー変数の値は 0 です。
CMFCMenuButton::m_bDefaultClick
ボタン上のテキストまたは画像の既定の処理を許可します。
BOOL m_bDefaultClick;
解説
m_bDefaultClickを false に設定すると、ボタン上の任意の場所をクリックすると、ボタンにメニューが表示されます。
CMFCMenuButton::P reTranslateMessage
ウィンドウ メッセージがディスパッチされる前に変換するためにフレームワークによって呼び出されます。
virtual BOOL PreTranslateMessage(MSG* pMsg);
パラメーター
pMsg
[in]処理するメッセージを含む MSG 構造体を指します。
戻り値
メッセージが翻訳され、ディスパッチすべきでない場合は 0 以外。メッセージが翻訳されておらず、ディスパッチする必要がある場合は 0。
解説
CMFCMenuButton::SizeToContent
テキストサイズと画像サイズに応じてボタンのサイズを変更します。
virtual CSize SizeToContent(BOOL bCalcOnly = FALSE);
パラメーター
bCalcOnly
[in]このメソッドがボタンのサイズを変更するかどうかを示すブール型パラメーターです。
戻り値
ボタンの新しいサイズを指定する CSize オブジェクト。
解説
この関数を呼び出し、 bCalcOnly が TRUE の場合、 SizeToContent
はボタンの新しいサイズのみを計算します。
ボタンの新しいサイズは、ボタンのテキスト、画像、矢印に合わせて計算されます。 フレームワークでは、水平エッジには 10 ピクセル、垂直エッジには 5 ピクセルの定義済みの余白も追加されます。