CMFCToolBarMenuButton クラス
ポップアップ メニューを含むツール バー ボタンです。 詳細については、Visual Studio のインストールの VC\atlmfc\src\mfc フォルダーにあるソース コードを参照してください。
構文
class CMFCToolBarMenuButton : public CMFCToolBarButton
メンバー
パブリック コンストラクター
名前 | 説明 |
---|---|
CMFCToolBarMenuButton::CMFCToolBarMenuButton | CMFCToolBarMenuButton オブジェクトを構築します。 |
パブリック メソッド
保護メソッド
名前 | 説明 |
---|---|
CMFCToolBarMenuButton::D rawDocumentIcon | メニュー ボタンにアイコンを描画します。 |
データ メンバー
名前 | 説明 |
---|---|
CMFCToolBarMenuButton::m_bAlwaysCallOwnerDraw | TRUE の場合、フレームワークは常にボタンが描画されたときに CFrameWndEx::OnDrawMenuImage を呼び出します。 |
解説
CMFCToolBarMenuButton
は、メニュー、サブメニューを含むメニュー項目、コマンドを実行またはメニューを表示するボタン、またはメニューのみを表示するボタンとして表示できます。 コンストラクター CMFCToolbarMenuButton::CMFCToolbarMenuButton
のボタンに関連付けられているイメージ、テキスト、メニュー ハンドル、コマンド ID などのパラメーターを指定して、メニュー ボタンの動作と外観を決定します。
CMFCToolbarMenuButton
クラスから派生したカスタム クラスは、DECLARE_SERIAL マクロを使用する必要があります。 DECLARE_DYNCREATE マクロは、アプリケーションが閉じるとエラーを生成します。
例
次の例では、 CMFCToolBarMenuButton
オブジェクトを構成する方法を示します。 このコードは、ドロップダウン メニューがパレット モードであることを指定し、ユーザーがメニュー バーからメニュー ボタンをドラッグしたときに作成されるティアオフ バーの ID を指定する方法を示しています。 このコード スニペットは、 Word パッド サンプルの一部です。
pBorderType->SetMenuPaletteMode(TRUE, 2 /* Rows number */);
pBorderType->SetTearOff(ID_BORDER_TEAROFF);
継承階層
要件
ヘッダー: afxtoolbarmenubutton.h
CMFCToolBarMenuButton::CMFCToolBarMenuButton
CMFCToolBarMenuButton
オブジェクトを構築します。
CMFCToolBarMenuButton();
CMFCToolBarMenuButton(const CMFCToolBarMenuButton& src);
CMFCToolBarMenuButton(
UINT uiID,
HMENU hMenu,
int iImage,
LPCTSTR lpszText=NULL,
BOOL bUserButton=FALSE);
パラメーター
src
[in]このCMFCToolBarMenuButton
オブジェクトにコピーする既存のCMFCToolBarMenuButton
オブジェクト。
uiID
[in]ユーザーがボタンをクリックしたときに実行するコマンドの ID。コマンドを直接実行しないメニュー ボタンの場合は (UINT)-1。
hMenu
[in]メニューへのハンドル。ボタンにメニューがない場合は NULL。
iImage
[in]ボタンの画像のインデックス。このボタンにアイコンがない場合、または uiID で指定されたコマンドのアイコンを使用する場合は -1。 インデックスは、アプリケーション内の各 CMFCToolBarImages
オブジェクトで同じです。
lpszText
[in]ツール バー メニュー ボタンのテキスト。
bUserButton
[in]ボタンにユーザー定義イメージが表示される場合は TRUE。ボタンに、 uiID で指定されたコマンドに関連付けられた定義済みのイメージが表示される場合は FALSE。
解説
uiID が有効なコマンド ID の場合、ユーザーがコマンドをクリックすると、ボタンはそのコマンドを実行します。 hMenu が有効なメニュー ハンドルの場合、ボタンがツールバーに表示されるときはドロップダウン メニュー、メニューに表示される場合はサブメニューが表示されます。 uiIDとhMenuの両方が有効な場合、ボタンは分割ボタンであり、ユーザーがクリックしたときにコマンドを実行する部分と、ユーザーがクリックしたときにメニューをドロップダウンする下矢印付きの部分があります。 ただし、 hMenu が有効な場合、ユーザーは、ボタンがメニューに挿入されたときに、ボタンをクリックしてコマンドを実行することはできません。
例
次の例では、 CMFCToolBarMenuButton
クラスのオブジェクトを構築する方法を示します。 このコード スニペットは、 Word パッド サンプルの一部です。
CMFCToolBarMenuButton *pBorderType = new CMFCToolBarMenuButton(ID_BORDER_1, pPopup->GetSafeHmenu(),
GetCmdMgr()->GetCmdImage(ID_BORDER_1, FALSE),
_T("Borders"));
CMFCToolBarMenuButton::CompareWith
virtual BOOL CompareWith(const CMFCToolBarButton& other) const;
パラメーター
[入力] 他
戻り値
解説
CMFCToolBarMenuButton::CopyFrom
virtual void CopyFrom(const CMFCToolBarButton& src);
パラメーター
[入力] src
解説
CMFCToolBarMenuButton::CreateFromMenu
Windows メニュー ハンドルからツール バー メニューを初期化します。
virtual void CreateFromMenu(HMENU hMenu);
パラメーター
hMenu
[in]メニューへのハンドル。
解説
ツールバー メニュー ボタンには、ドロップダウン サブメニューを表示できます。
フレームワークはこのメソッドを呼び出して、メニューからサブメニューのコマンドを初期化します。
CMFCToolBarMenuButton::CreateMenu
ツール バー メニューのコマンドで構成されるメニューを作成します。 メニューへのハンドルを返します。
virtual HMENU CreateMenu() const;
戻り値
成功した場合のメニューへのハンドル。 ツール バー メニュー ボタンに関連付けられているコマンドの一覧が空の場合は NULL。
解説
派生クラスでこのメソッドをオーバーライドして、メニューの生成方法をカスタマイズできます。
CMFCToolBarMenuButton::CreatePopupMenu
ツール バー メニューを表示する CMFCPopupMenu
オブジェクトを作成します。
virtual CMFCPopupMenu* CreatePopupMenu();
戻り値
ツール バー メニュー ボタンに関連付けられているドロップダウン メニューを表示する CMFCPopupMenu
オブジェクトへのポインター。
解説
このメソッドは、ボタンに関連付けられているドロップダウン メニューの表示を準備するためにフレームワークによって呼び出されます。
既定の実装では、新しい CMFCPopupMenu
オブジェクトを構築して返すだけです。 CMFCPopupMenu クラスの派生型を使用する場合や追加の初期化を実行する場合は、このメソッドをオーバーライドします。
CMFCToolBarMenuButton::D rawDocumentIcon
メニュー ボタンにドキュメント アイコンを描画します。
void DrawDocumentIcon(
CDC* pDC,
const CRect& rectImage,
HICON hIcon);
パラメーター
pDC
[in]デバイス コンテキストへのポインター。
rectImage
[in]画像の外接する四角形の座標。
hIcon
[in]アイコンのハンドル。
解説
このメソッドは、ドキュメント アイコンを取得し、 rectImage で指定された領域の中央にあるメニュー ボタンに描画します。
CMFCToolBarMenuButton::EnableQuickCustomize
void EnableQuickCustomize();
解説
CMFCToolBarMenuButton::HasButton
virtual BOOL HasButton() const;
戻り値
解説
CMFCToolBarMenuButton::HaveHotBorder
virtual BOOL HaveHotBorder() const;
戻り値
解説
CMFCToolBarMenuButton::IsBorder
virtual BOOL IsBorder() const;
戻り値
解説
CMFCToolBarMenuButton::IsClickedOnMenu
BOOL IsClickedOnMenu() const;
戻り値
解説
CMFCToolBarMenuButton::IsQuickMode
BOOL IsQuickMode();
戻り値
解説
CMFCToolBarMenuButton::GetCommands
ツール バー メニューのコマンドの一覧への読み取り専用アクセスを提供します。
const CObList& GetCommands() const;
戻り値
CObList クラスオブジェクトへの const 参照。CMFCToolBarButton クラス オブジェクトのコレクションが含まれます。
解説
ツールバー メニュー ボタンにはサブメニューを表示できます。 コマンドの一覧は、コンストラクターのサブメニューまたは CMFCToolBarMenuButton::CreateFromMenu メニュー (HMENU) のハンドルとして指定できます。 メニューは、 CMFCToolBarButton クラスから派生したオブジェクトの一覧に変換され 内部 CObList
オブジェクトに格納されます。 この一覧には、このメソッドを呼び出してアクセスできます。
CMFCToolBarMenuButton::GetImageRect
ボタンイメージの外接する四角形を取得します。
void GetImageRect(CRect& rectImage);
パラメーター
rectImage
[out]画像の外接する四角形の座標を受け取る CRect
オブジェクトへの参照。
CMFCToolBarMenuButton::GetPaletteRows
メニューがパレット モードのときのドロップダウン メニューの行数を返します。
int GetPaletteRows() const;
戻り値
パレット内の行数。
解説
メニュー ボタンがパレット モードに設定されている場合、メニュー項目は複数の列に表示され、行数は制限されます。 行数を取得するには、このメソッドを呼び出します。 パレット モードを有効または無効にし、 CMFCToolBarMenuButton::SetMenuPaletteMode を使用して行数を指定できます。
CMFCToolBarMenuButton::GetPopupMenu
ボタンのドロップダウン メニューを表す CMFCPopupMenu クラス オブジェクトへのポインターを返します。
CMFCPopupMenu* GetPopupMenu() const;
戻り値
フレームワークがツール バー メニュー ボタンのサブメニューを描画したときに作成された CMFCPopupMenu クラス オブジェクトへのポインター。サブメニューが表示されない場合は NULL。
解説
ツール バー メニュー ボタンにドロップダウン メニューが表示されると、メニューを表す CMFCPopupMenu クラス オブジェクトが作成されます。 このメソッドを呼び出して、 CMFCPopupMenu
オブジェクトへのポインターを取得します。 返されたポインターは一時的なもので、ユーザーがドロップダウン メニューを閉じると無効になるため、保存しないでください。
CMFCToolBarMenuButton::IsDroppedDown
ポップアップ メニューが現在表示されているかどうかを示します。
virtual BOOL IsDroppedDown() const;
戻り値
TRUE の場合、ツール バー メニュー ボタンのサブメニューが表示されます。それ以外の場合は FALSE。
CMFCToolBarMenuButton::IsEmptyMenuAllowed
メニュー項目に空のサブメニューを表示するかどうかを指定します。
virtual BOOL IsEmptyMenuAllowed() const;
戻り値
フレームワークがサブメニューが空の場合でも、現在選択されているメニュー項目からサブメニューを開く場合は TRUE。それ以外の場合は FALSE。
解説
フレームワークは、ユーザーが現在選択されているメニュー項目からサブメニューを開こうとすると、このメソッドを呼び出します。 サブメニューが空で、 IsEmptyMenuAllowed
が FALSE を返した場合、サブメニューは開かなくなります。
既定の実装では FALSE が返されます。 この動作をカスタマイズするには、このメソッドをオーバーライドします。
CMFCToolBarMenuButton::IsExclusive
ボタンが排他モードかどうかを示します。
virtual BOOL IsExclusive() const;
戻り値
ボタンが排他モードで動作している場合は TRUE。それ以外の場合は FALSE。
解説
ユーザーがボタンのポップアップ メニューを開き、別のツール バーまたはメニュー ボタンの上にマウス ポインターを移動すると、ボタンが排他モードでない限り、ポップアップ メニューが閉じます。
既定の実装では常に FALSE が返されます。 排他モードを有効にする場合は、派生クラスでこのメソッドをオーバーライドします。
CMFCToolBarMenuButton::IsMenuPaletteMode
ドロップダウン メニューがパレット モードかどうかを指定します。
BOOL IsMenuPaletteMode() const;
戻り値
パレット モードが有効な場合は TRUE、それ以外の場合は FALSE。
解説
メニュー ボタンをパレット モードに設定すると、複数の列にメニュー項目が表示され、行数が制限されます。 行数を取得するには、このメソッドを呼び出します。 パレット モードを有効または無効にするには、 CMFCToolBarMenuButton::SetMenuPaletteMode を呼び出します。
CMFCToolBarMenuButton::IsTearOffMenu
ドロップダウン メニューにティアオフ バーがあるかどうかを示します。
virtual BOOL IsTearOffMenu() const;
戻り値
ツール バーのメニュー ボタンに引き裂きバーがある場合は TRUE。それ以外の場合は FALSE。
解説
ティアオフ機能を有効にしてティアオフ バー ID を設定するには、 CMFCToolBarMenuButton::SetTearOff を呼び出します。
CMFCToolBarMenuButton::m_bAlwaysCallOwnerDraw
ボタンを描画するときに、フレームワークが常に CFrameWndEx::OnDrawMenuImage を呼び出すかどうかを指定します。
static BOOL m_bAlwaysCallOwnerDraw;
解説
このメンバー変数が TRUE に設定されている場合、ボタンは常に CFrameWndEx::OnDrawMenuImage メソッドを呼び出して、ボタンに画像を表示します。 m_bAlwaysCallOwnerDraw
が FALSE の場合、イメージが事前に定義されている場合、ボタン自体によってイメージが描画されます。 そうでない場合は、OnDrawMenuImage
を呼び出します。
CMFCToolBarMenuButton::OnAfterCreatePopupMenu
virtual void OnAfterCreatePopupMenu();
解説
CMFCToolBarMenuButton::OnBeforeDrag
virtual BOOL OnBeforeDrag() const;
戻り値
解説
CMFCToolBarMenuButton::OnCalculateSize
virtual SIZE OnCalculateSize(
CDC* pDC,
const CSize& sizeDefault,
BOOL bHorz);
パラメーター
[入力] pDC
[入力] sizeDefault
[in] bHorz
戻り値
解説
CMFCToolBarMenuButton::OnCancelMode
virtual void OnCancelMode();
解説
CMFCToolBarMenuButton::OnChangeParentWnd
virtual void OnChangeParentWnd(CWnd* pWndParent);
パラメーター
[入力] pWndParent
解説
CMFCToolBarMenuButton::OnClick
virtual BOOL OnClick(
CWnd* pWnd,
BOOL bDelay = TRUE);
パラメーター
[入力] pWnd
[入力] bDelay
戻り値
解説
CMFCToolBarMenuButton::OnClickMenuItem
ユーザーがドロップダウン メニューで項目を選択すると、フレームワークによって呼び出されます。
virtual BOOL OnClickMenuItem();
戻り値
フレームワークが既定のメニュー項目の処理を続行する必要がある場合は FALSE。それ以外の場合は TRUE。 既定の実装では常に FALSE が返されます。
解説
ユーザーがメニュー項目をクリックすると、フレームワークはその項目に関連付けられているコマンドを実行します。
メニュー項目の処理をカスタマイズするには、クラスから派生したクラスのOnClickMenuItem
CMFCToolBarMenuButton
オーバーライドします。 また、 CFrameWndEx::OnShowPopupMenu をオーバーライドし、特別な処理を必要とするメニュー ボタンを派生クラスのインスタンスに置き換える必要があります。
CMFCToolBarMenuButton::OnContextHelp
virtual BOOL OnContextHelp(CWnd* pWnd);
パラメーター
[入力] pWnd
戻り値
解説
CMFCToolBarMenuButton::OnDraw
virtual void OnDraw(
CDC* pDC,
const CRect& rect,
CMFCToolBarImages* pImages,
BOOL bHorz = TRUE,
BOOL bCustomizeMode = FALSE,
BOOL bHighlight = FALSE,
BOOL bDrawBorder = TRUE,
BOOL bGrayDisabledButtons = TRUE);
パラメーター
[入力] pDC
[in] rect
[入力] pImages
[in] bHorz
[入力] bCustomizeMode
[入力] bHighlight
[入力] bDrawBorder
[入力] bGrayDisabledButtons
解説
CMFCToolBarMenuButton::OnDrawOnCustomizeList
virtual int OnDrawOnCustomizeList(
CDC* pDC,
const CRect& rect,
BOOL bSelected);
パラメーター
[入力] pDC
[in] rect
[入力] bSelected
戻り値
解説
CMFCToolBarMenuButton::OpenPopupMenu
ユーザーがツール バー メニュー ボタンのドロップダウン メニューを開いたときにフレームワークによって呼び出されます。
virtual BOOL OpenPopupMenu(CWnd* pWnd=NULL);
パラメーター
pWnd
[in]ドロップダウン メニュー コマンドを受け取るウィンドウを指定します。 ツールバー メニュー ボタンに親ウィンドウがある場合にのみ NULL を指定できます。
戻り値
CMFCPopupMenu クラスオブジェクトが作成され、正常に開かれた場合は TRUE。それ以外の場合は FALSE。
解説
この関数は、ユーザーがツール バー メニュー ボタンからドロップダウン メニューを開いたときにフレームワークによって呼び出されます。
CMFCToolBarMenuButton::ResetImageToDefault
virtual void ResetImageToDefault();
解説
CMFCToolBarMenuButton::SaveBarState
virtual void SaveBarState();
解説
フレームワークは、ドラッグ アンド ドロップ操作の結果としてツール バー ボタンを作成するときに、このメソッドを呼び出します。 このメソッドは、トップレベル のポップアップ メニューの CMFCPopupMenu::SaveState メソッドを呼び出します。これにより、ポップアップ メニューの親ボタンがそのメニューを再作成します。
CMFCToolBarMenuButton::Serialize
virtual void Serialize(CArchive& ar);
パラメーター
[in] ar
解説
CMFCToolBarMenuButton::SetACCData
リボン要素のアクセシビリティ データを設定します。
virtual BOOL SetACCData(
CWnd* pParent,
CAccessibilityData& data);
パラメーター
pParent
リボン要素の親ウィンドウ。
data
リボン要素のアクセシビリティ データ。
戻り値
常に TRUE が返されます。
解説
既定では、このメソッドはリボン要素のアクセシビリティ データを設定し、常に TRUE を返します。 アクセシビリティ データを設定し、成功または失敗を示す値を返すようにするには、このメソッドをオーバーライドします。
CMFCToolBarMenuButton::SetMenuOnly
有効なコマンド ID とサブメニューの両方がある場合に、ボタンをメニュー ボタンまたは分割ボタンとして描画するかどうかを指定します。
void SetMenuOnly(BOOL bMenuOnly);
パラメーター
bMenuOnly
[in]有効なコマンド ID とサブメニューの両方がある場合にこのボタンをメニュー ボタンとして表示する場合は TRUE、有効なコマンド ID とサブメニューの両方がある場合に分割ボタンとしてこのボタンを表示する場合は FALSE。
解説
通常、ツールバー メニュー ボタンにサブメニューとコマンド ID の両方がある場合、メニューは、メイン ボタンと下方向ボタンがアタッチされた分割ボタンのように見えます。 このメソッドを呼び出し、 bMenuOnly が TRUE の場合、ボタンは、ボタンに下矢印が付いた単一のメニュー ボタンのように見えます。 ユーザーがいずれかのモードで矢印をクリックするとサブメニューが開き、いずれかのモードでボタンの非矢印部分をクリックすると、フレームワークによってコマンドが実行されます。
CMFCToolBarMenuButton::SetMenuPaletteMode
ドロップダウン メニューがパレット モードかどうかを指定します。
void SetMenuPaletteMode(
BOOL bMenuPaletteMode=TRUE,
int nPaletteRows=1);
パラメーター
bMenuPaletteMode
[in]ドロップダウン メニューがパレット モードかどうかを指定します。
nPaletteRows
[in]パレット内の行数。
解説
パレット モードでは、すべてのメニュー項目が複数列のパレットとして表示されます。 行数は、 nPaletteRows を使用して指定します。
CMFCToolBarMenuButton::SetMessageWnd
void SetMessageWnd(CWnd* pWndMessage);
パラメーター
[入力] pWndMessage
解説
CMFCToolBarMenuButton::SetRadio
チェック されている場合にラジオ ボタン スタイル アイコンを表示するツール バー メニュー ボタンを設定します。
virtual void SetRadio();
解説
メニュー ボタンがオンの間に描画されると、 CMFCVisualManager::OnDrawMenuCheck を呼び出してチェックマーク アイコンを描画します。 既定では、 OnDrawMenuCheck
は、現在のビジュアル マネージャーがメニュー ボタンにチェック ボックス スタイルのチェックマークを描画することを要求します。 このメソッドを呼び出した後、現在のビジュアル マネージャーは代わりに、メニュー ボタンにラジオ ボタン スタイルのチェックマークを描画します。 この変更を元に戻すことはできません。
このメソッドを呼び出し、メニュー ボタンが現在表示されている場合は、更新されます。
CMFCToolBarMenuButton::SetTearOff
ドロップダウン メニューのティアオフ バーの ID を指定します。
virtual void SetTearOff(UINT uiBarID);
パラメーター
uiBarID
[in]新しいティアオフ バー ID を指定します。
解説
ユーザーがメニュー バーからメニュー ボタンをドラッグしたときに作成されるティアオフ バーの ID を指定するには、このメソッドを呼び出します。 uiBarID パラメーターが 0 の場合、ユーザーはメニュー ボタンを破棄できません。
CWinAppEx::EnableTearOffMenus を呼び出して、アプリケーションでティアオフ メニュー機能を有効にします。
関連項目
階層図
クラス
CMFCToolBarButton クラス
CMFCToolBar クラス
CMFCPopupMenu クラス