CMFCMenuBar クラス
ドッキングを実装するメニュー バーです。 詳細については、Visual Studio のインストールの VC\atlmfc\src\mfc フォルダーにあるソース コードを参照してください。
構文
class CMFCMenuBar : public CMFCToolbar
メンバー
パブリック メソッド
解説
CMFCMenuBar
クラスは、ドッキング機能を実装するメニュー バーです。 ツールバーに似ていますが、閉じることはできませんが、常に表示されます。
CMFCMenuBar
では、最近使用したメニュー項目オブジェクトを表示するオプションがサポートされています。 このオプションを有効にすると、 CMFCMenuBar
は最初の表示時に使用可能なコマンドのサブセットのみを表示します。 その後、最近使用したコマンドは、コマンドの元のサブセットと共に表示されます。 さらに、ユーザーは常にメニューを展開して、使用可能なすべてのコマンドを表示できます。 したがって、使用可能な各コマンドは、常に表示するか、最近選択された場合にのみ表示するように構成されます。
CMFCMenuBar
オブジェクトを使用するには、メイン ウィンドウ フレーム オブジェクトに埋め込みます。 WM_CREATE
メッセージを処理するときは、CMFCMenuBar::Create
またはCMFCMenuBar::CreateEx
を呼び出します。 使用する作成関数に関係なく、メイン フレーム ウィンドウへのポインターを渡します。 次に、 CFrameWndEx::EnableDocking を呼び出してドッキングを有効にします。 CFrameWndEx::D ockPane を呼び出して、このメニューをドッキングします。
例
CMFCMenuBar
クラスのさまざまなメソッドの使用方法を次の例に示します。 この例では、ウィンドウのスタイルの設定、カスタマイズ ボタンの有効化、ヘルプ ボックスの有効化、ポップアップ メニューのシャドウの有効化、メニュー バーの更新を行う方法を示します。 このコード スニペットは、 IE Demo サンプルの一部です。
CMFCMenuBar m_wndMenuBar;
m_wndMenuBar.SetPaneStyle(m_wndMenuBar.GetPaneStyle() | CBRS_SIZE_DYNAMIC);
m_wndMenuBar.EnableCustomizeButton(TRUE, -1, _T(""));
// first parameter is the command ID for the button of the Help combo box
// third parameter is the width of the button for the combo box in pixels.
m_wndMenuBar.EnableHelpCombobox(1, _T("enter text here"), 30);
m_wndMenuBar.EnableMenuShadows();
m_wndMenuBar.SetMaximizeMode(true);
継承階層
CMFCMenuBar
要件
Header: afxmenubar.h
CMFCMenuBar::AdjustLocations
メニュー バーのメニュー項目の位置を調整します。
virtual void AdjustLocations();
解説
CMFCMenuBar::AllowChangeTextLabels
メニュー バーの画像の下でテキスト ラベルを許可するかどうかを指定します。
virtual BOOL AllowChangeTextLabels() const;
戻り値
ユーザーが画像の下にテキスト ラベルを表示することを選択できる場合は TRUE を返します。
解説
CMFCMenuBar::AllowShowOnPaneMenu
virtual BOOL AllowShowOnPaneMenu() const;
戻り値
解説
CMFCMenuBar::CalcFixedLayout
virtual CSize CalcFixedLayout(
BOOL bStretch,
BOOL bHorz);
パラメーター
[入力] bStretch
[in] bHorz
戻り値
解説
CMFCMenuBar::CalcLayout
virtual CSize CalcLayout(
DWORD dwMode,
int nLength = -1);
パラメーター
[入力] dwMode
[入力] nLength
戻り値
解説
CMFCMenuBar::CalcMaxButtonHeight
virtual int CalcMaxButtonHeight();
戻り値
解説
CMFCMenuBar::CanBeClosed
virtual BOOL CanBeClosed() const;
戻り値
解説
CMFCMenuBar::CanBeRestored
virtual BOOL CanBeRestored() const;
戻り値
解説
CMFCMenuBar::Create
メニュー コントロールを作成し、 CMFCMenuBar オブジェクトにアタッチします。
virtual BOOL Create(
CWnd* pParentWnd,
DWORD dwStyle = AFX_DEFAULT_TOOLBAR_STYLE,
UINT nID = AFX_IDW_MENUBAR);
パラメーター
pParentWnd
[in]新しい CMFCMenuBar
オブジェクトの親ウィンドウへのポインター。
dwStyle
[in]新しいメニュー バーのスタイル。
nID
[in]メニュー バーの子ウィンドウの ID。
戻り値
成功した場合は TRUE、それ以外の場合は FALSE。
解説
CMFCMenuBar
オブジェクトを作成したら、Create
を呼び出す必要があります。 このメソッドは、 CMFCMenuBar
コントロールを作成し、 CMFCMenuBar
オブジェクトにアタッチします。
ツール バー のスタイルの詳細については、「 CBasePane::SetPaneStyleを参照してください。
CMFCMenuBar::CreateEx
指定した拡張スタイルを持つ CMFCMenuBar オブジェクトを作成します。
virtual BOOL CreateEx(
CWnd* pParentWnd,
DWORD dwCtrlStyle = TBSTYLE_FLAT,
DWORD dwStyle = AFX_DEFAULT_TOOLBAR_STYLE,
CRect rcBorders = CRect(1,
1,
1,
1),
UINT nID =AFX_IDW_MENUBAR);
パラメーター
pParentWnd
[in]新しい CMFCMenuBar
オブジェクトの親ウィンドウへのポインター。
dwCtrlStyle
[in]新しいメニュー バーの追加のスタイル。
dwStyle
[in]新しいメニュー バーのメイン スタイル。
rcBorders
[in]CMFCMenuBar
オブジェクトの境界線のサイズを指定するCRect
パラメーター。
nID
[in]メニュー バーの子ウィンドウの ID。
戻り値
メソッドが成功した場合は 0 以外。それ以外の場合は 0。
解説
ツール バー のスタイルに加えてスタイルを指定する場合は、 CMFCMenuBar::Create の代わりにこの関数を使用する必要があります。 頻繁に使用されるその他のスタイルには、TBSTYLE_TRANSPARENTとCBRS_TOPがあります。
その他のスタイルの一覧については、「 ツール バーコントロールとボタンのスタイル、 common コントロール スタイル、および コマンド ウィンドウ スタイルを参照してください。
例
次の例では、CMFCMenuBar
クラスの CreateEx
メソッドを使用する方法を示します。 このコード スニペットは、 IE Demo サンプルの一部です。
CMFCMenuBar m_wndMenuBar;
// The this pointer points to CMainFrame class which extends the CFrameWnd class.
if (!m_wndMenuBar.CreateEx(this, TBSTYLE_TRANSPARENT))
{
TRACE0("Failed to create menubar\n");
return -1; // fail to create
}
CMFCMenuBar::CreateFromMenu
CMFCMenuBar オブジェクトを初期化します。 このメソッドは、HMENU パラメーターの後に CMFCMenuBar
オブジェクトをモデル化します。
virtual void CreateFromMenu(
HMENU hMenu,
BOOL bDefaultMenu = FALSE,
BOOL bForceUpdate = FALSE);
パラメーター
hMenu
[in]メニュー リソースへのハンドル。 CreateFromMenu
では、このリソースを CMFCMenuBar
のテンプレートとして使用します。
bDefaultMenu
[in]新しいメニューが既定のメニューかどうかを示すブール値。
bForceUpdate
[in]このメソッドが強制的にメニューを更新するかどうかを示すブール値。
解説
メニュー コントロールにメニュー リソースと同じメニュー項目を含める場合は、このメソッドを使用します。 このメソッドは、 CMFCMenuBar::Create または CMFCMenuBar::CreateEx を呼び出した後に呼び出します。
CMFCMenuBar::EnableHelpCombobox
メニュー バーの右側にある Help コンボ ボックスを有効にします。
void EnableHelpCombobox(
UINT uiID,
LPCTSTR lpszPrompt = NULL,
int nComboBoxWidth = 150);
パラメーター
uiID
[in] Help コンボ ボックスのボタンのコマンド ID。
lpszPrompt
[in]フレームワークが空でアクティブでない場合にコンボ ボックスに表示されるテキストを含む文字列。 たとえば、"ここにテキストを入力してください" などです。
nComboBoxWidth
[in]コンボ ボックスのボタンの幅 (ピクセル単位)。
解説
Help コンボ ボックスは、Microsoft Word のメニュー バーの Help コンボ ボックスに似ています。
このメソッドを uiID 0 に設定して呼び出すと、このメソッドはコンボ ボックスを非表示にします。 それ以外の場合、このメソッドは、メニュー バーの右側にコンボ ボックスを自動的に表示します。 このメソッドを呼び出した後、 CMFCMenuBar::GetHelpCombobox を呼び出して、挿入された CMFCToolBarComboBoxButton オブジェクトへのポインターを取得します。
CMFCMenuBar::EnableMenuShadows
ポップアップ メニューの影を有効にします。
static void EnableMenuShadows(BOOL bEnable = TRUE);
パラメーター
bEnable
[in]ポップアップ メニューで影を有効にする必要があるかどうかを示すブール値パラメーター。
解説
この方法で使用するアルゴリズムは複雑であり、低速システムでのアプリケーションのパフォーマンスが低下する可能性があります。
CMFCMenuBar::GetAvailableExpandSize
virtual int GetAvailableExpandSize() const;
戻り値
解説
CMFCMenuBar::GetColumnWidth
virtual int GetColumnWidth() const;
戻り値
解説
CMFCMenuBar::GetDefaultMenu
元のメニューへのハンドルを取得します。 フレームワークは、リソース ファイルから元のメニューを読み込みます。
HMENU GetDefaultMenu() const;
戻り値
メニュー リソースへのハンドル。
解説
アプリケーションでメニューをカスタマイズする場合は、このメソッドを使用して元のメニューのハンドルを取得できます。
CMFCMenuBar::GetDefaultMenuResId
既定のメニューのリソース識別子を取得します。
UINT GetDefaultMenuResId() const;
戻り値
メニュー リソース識別子。
解説
フレームワークは、リソース ファイルから CMFCMenuBar
オブジェクトの既定のメニューを読み込みます。
CMFCMenuBar::GetFloatPopupDirection
int GetFloatPopupDirection(CMFCToolBarMenuButton* pButton);
パラメーター
[入力] pButton
戻り値
解説
CMFCMenuBar::GetForceDownArrows
BOOL GetForceDownArrows();
戻り値
解説
CMFCMenuBar::GetHelpCombobox
Help コンボ ボックスへのポインターを返します。
CMFCToolBarComboBoxButton* GetHelpCombobox();
戻り値
Help コンボ ボックスへのポインター。 Help コンボ ボックスが非表示の場合、または有効になっていない場合は NULL。
解説
Help コンボ ボックスは、メニュー バーの右側にあります。 メソッド CMFCMenuBar::EnableHelpCombobox を呼び出して、このコンボ ボックスを有効にします。
CMFCMenuBar::GetHMenu
CMFCMenuBar オブジェクトにアタッチされているメニューへのハンドルを取得します。
HMENU GetHMenu() const;
CMFCMenuBar::GetMenuFont
現在のメニュー フォントを取得します。
static const CFont& GetMenuFont(BOOL bHorz = TRUE);
パラメーター
bHorz
[in]水平方向または垂直方向のフォントを返すかどうかを指定するブール値パラメーター。 TRUE は、水平方向のフォントを示します。
戻り値
現在のメニュー バーのフォントを含む CFont パラメーターへのポインター。
解説
返されるフォントは、アプリケーションのグローバル パラメーターです。 すべての CMFCMenuBar
オブジェクトに対して 2 つのグローバル フォントが保持されます。 これらの個別のフォントは、水平方向と垂直方向のメニュー バーに使用されます。
CMFCMenuBar::GetMenuItem
項目のインデックスに基づいてメニュー バーの CMFCToolBarButton オブジェクトを取得します。
CMFCToolBarButton* GetMenuItem(int iItem) const;
パラメーター
iItem
[in]返すメニュー項目のインデックス。
戻り値
iItem で指定されたインデックスに一致するCMFCToolBarButton
オブジェクトへのポインター。 インデックスが無効な場合は NULL。
CMFCMenuBar::GetRowHeight
virtual int GetRowHeight() const;
戻り値
解説
CMFCMenuBar::GetSystemButton
CMFCToolBarMenuButtonsButton* GetSystemButton(
UINT uiBtn,
BOOL bByCommand = TRUE) const;
パラメーター
[入力] uiBtn
[入力] bByCommand
戻り値
解説
CMFCMenuBar::GetSystemButtonsCount
int GetSystemButtonsCount() const;
戻り値
解説
CMFCMenuBar::GetSystemMenu
CMFCToolBarSystemMenuButton* GetSystemMenu() const;
戻り値
解説
CMFCMenuBar::HighlightDisabledItems
フレームワークが無効なメニュー項目を強調表示するかどうかを制御します。
static void HighlightDisabledItems(BOOL bHighlight = TRUE);
パラメーター
bHighlight
[in]フレームワークが使用できないメニュー項目を強調表示するかどうかを示すブール型パラメーター。
解説
既定では、ユーザーがマウス ポインターを置いたときに、使用できないメニュー項目は強調表示されません。
CMFCMenuBar::IsButtonExtraSizeAvailable
virtual BOOL IsButtonExtraSizeAvailable() const;
戻り値
解説
CMFCMenuBar::IsHighlightDisabledItems
フレームワークが使用できないメニュー項目を強調表示するかどうかを示します。
static BOOL IsHighlightDisabledItems();
戻り値
使用できないメニュー項目が強調表示されている場合は TRUE。それ以外の場合は FALSE。
解説
既定では、ユーザーがマウス ポインターを置いたときに、使用できないメニュー項目は強調表示されません。 この機能を有効にするには、 CMFCMenuBar::HighlightDisabledItems メソッドを使用します。
CMFCMenuBar::IsMenuShadows
フレームワークがポップアップ メニューの影を描画するかどうかを示します。
static BOOL IsMenuShadows();
戻り値
フレームワークがメニュー シャドウを描画する場合は TRUE。それ以外の場合は FALSE。
解説
この機能を有効または無効にするには、 CMFCMenuBar::EnableMenuShadows メソッドを使用します。
CMFCMenuBar::IsRecentlyUsedMenus
最近使用したメニュー コマンドをメニュー バーに表示するかどうかを示します。
static BOOL IsRecentlyUsedMenus();
戻り値
CMFCMenuBar
オブジェクトに最近使用したメニュー コマンドが表示される場合は 0 以外、それ以外の場合は 0。
解説
関数 CMFCMenuBar::SetRecentlyUsedMenus を使用して、最近使用したメニュー コマンドをメニュー バーに表示するかどうかを制御します。
CMFCMenuBar::IsShowAllCommands
メニューにすべてのコマンドを表示するかどうかを示します。
static BOOL IsShowAllCommands();
戻り値
CMFCMenuBar
にすべてのコマンドが表示される場合は 0 以外、それ以外の場合は 0。
解説
CMFCMenuBar
オブジェクトは、すべてのコマンドを表示するか、コマンドのサブセットのみを表示するように構成できます。 この機能の詳細については、「 CMFCMenuBar クラスを参照してください。
IsShowAllCommands
は、 CMFCMenuBar
オブジェクトに対してこの機能がどのように構成されているかを示します。 表示されるメニュー コマンドを制御するには、 CMFCMenuBar::SetShowAllCommands および CMFCMenuBar::SetRecentlyUsedMenus メソッドを使用します。
CMFCMenuBar::IsShowAllCommandsDelay
CMFCMenuBar オブジェクトが短い遅延後にすべてのコマンドを表示するかどうかを示します。
static BOOL IsShowAllCommandsDelay();
戻り値
メニュー バーが短い遅延の後に完全なメニューを表示する場合は 0 以外。それ以外の場合は 0。
解説
最近使用した項目を表示するようにメニュー バーを構成すると、メニュー バーには次の 2 つの方法のいずれかで完全なメニューが表示されます。
ユーザーがメニューの下部にある矢印の上にカーソルを置いたときから、プログラムされた遅延の後に完全なメニューを表示します。
ユーザーがメニューの下部にある矢印をクリックした後、完全なメニューを表示します。
既定では、すべての CMFCMenuBar
オブジェクトは、このオプションを使用して、短い遅延後に完全なメニューを表示します。 CMFCMenuBar
クラスでは、このオプションをプログラムで変更することはできません。 ただし、 Customize ダイアログ ボックスを使用して、ツール バーのカスタマイズ中に動作を変更できます。
CMFCMenuBar::LoadState
Windows レジストリからメニュー バーの状態を読み込みます。
virtual BOOL LoadState(
LPCTSTR lpszProfileName = NULL,
int nIndex = -1,
UINT uiID = (UINT)-1);
パラメーター
lpszProfileName
[in]Windows レジストリ キーのパスを含む文字列。
nIndex
[in]メニュー バーのコントロール ID。
uiID
[in] 予約値。
戻り値
メソッドが成功した場合は TRUE。それ以外の場合は FALSE。
解説
メニュー バーの状態をレジストリに保存するには、 CMFCMenuBar::SaveState メソッドを使用します。 保存された情報には、メニュー項目、ドッキング状態、およびメニュー バーの位置が含まれます。
ほとんどの場合、アプリケーションは LoadState
を呼び出しません。 フレームワークは、ワークスペースを初期化するときにこのメソッドを呼び出します。
CMFCMenuBar::OnChangeHot
virtual void OnChangeHot(int iHot);
パラメーター
[入力] iHot
解説
CMFCMenuBar::OnDefaultMenuLoaded
フレームワークは、リソース ファイルからメニュー リソースを読み込むときに、このメソッドを呼び出します。
virtual void OnDefaultMenuLoaded(HMENU hMenu);
パラメーター
hMenu
[in] CMFCMenuBar
オブジェクトにアタッチされているメニューのハンドル。
解説
この関数の既定の実装は、何も行いません。 フレームワークがリソース ファイルからメニュー リソースを読み込んだ後にカスタム コードを実行するには、この関数をオーバーライドします。
CMFCMenuBar::OnSendCommand
virtual BOOL OnSendCommand(const CMFCToolBarButton* pButton);
パラメーター
[入力] pButton
戻り値
解説
CMFCMenuBar::OnSetDefaultButtonText
フレームワークは、ユーザーがメニュー バーの項目のテキストを変更するときに、このメソッドを呼び出します。
virtual BOOL OnSetDefaultButtonText(CMFCToolBarButton* pButton);
パラメーター
pButton
[in]ユーザーがカスタマイズする CMFCToolBarButton オブジェクトへのポインター。
戻り値
フレームワークがメニュー バーにユーザーの変更を適用する場合は TRUE。それ以外の場合は FALSE。
解説
このメソッドの既定の実装では、ボタンのテキストがユーザーが提供するテキストに変更されます。
CMFCMenuBar::OnToolHitTest
virtual INT_PTR OnToolHitTest(
CPoint point,
TOOLINFO* pTI) const;
パラメーター
[入力] point
[入力] pTI
戻り値
解説
CMFCMenuBar::P reTranslateMessage
virtual BOOL PreTranslateMessage(MSG* pMsg);
パラメーター
[入力] pMsg
戻り値
解説
CMFCMenuBar::RestoreOriginalstate
ユーザーが Customize ダイアログ ボックスから Reset を選択したときにフレームワークによって呼び出されます。
virtual BOOL RestoreOriginalstate();
戻り値
メソッドが成功した場合は 0 以外。それ以外の場合は 0。
解説
このメソッドは、ユーザーがカスタマイズ メニューから Reset を選択したときに呼び出されます。 このメソッドを手動で呼び出して、プログラムによってメニュー バーの状態をリセットすることもできます。 このメソッドは、リソース ファイルから元の状態を読み込みます。
ユーザーが Reset オプションを選択したときに処理を実行する場合は、このメソッドをオーバーライドします。
CMFCMenuBar::SaveState
CMFCMenuBar オブジェクトの状態を Windows レジストリに保存します。
virtual BOOL SaveState (
LPCTSTR lpszProfileName = NULL,
int nIndex = -1,
UINT uiID = (UINT)-1);
パラメーター
lpszProfileName
[in]Windows レジストリ キーのパスを含む文字列。
nIndex
[in]メニュー バーのコントロール ID。
uiID
[in] 予約値。
戻り値
成功した場合は TRUE。それ以外の場合は FALSE。
解説
通常、アプリケーションは SaveState
を呼び出しません。 フレームワークは、ワークスペースがシリアル化されるときにこのメソッドを呼び出します。 詳細については、「 CWinAppEx::SaveStateを参照してください。
保存された情報には、メニュー項目、ドッキング状態、およびメニュー バーの位置が含まれます。
CMFCMenuBar::SetDefaultMenuResId
リソース ID に基づいて、 CMFCMenuBar オブジェクトの既定のメニューを設定します。
void SetDefaultMenuResId(UINT uiResId);
パラメーター
uiResId
[in]新しい既定のメニューのリソース ID。
解説
CMFCMenuBar::RestoreOriginalstate メソッドは、リソース ファイルから既定のメニューを復元します。
CMFCMenuBar::GetDefaultMenuResId メソッドを使用して、復元せずに既定のメニューを取得します。
CMFCMenuBar::SetForceDownArrows
void SetForceDownArrows(BOOL bValue);
パラメーター
[入力] bValue
解説
CMFCMenuBar::SetMaximizeMode
フレームワークは、MDI が表示モードを変更し、メニュー バーを更新する必要がある場合に、このメソッドを呼び出します。
void SetMaximizeMode(
BOOL bMax,
CWnd* pWnd = NULL,
BOOL bRecalcLayout = TRUE);
パラメーター
bMax
[in]モードを指定するブール値。 詳細については、次の「解説」を参照してください。
pWnd
[in]変更中の MDI 子ウィンドウへのポインター。
bRecalcLayout
[in]メニュー バーのレイアウトを直ちに再計算するかどうかを指定するブール値。
解説
MDI 子ウィンドウが最大化されると、MDI メイン フレーム ウィンドウに接続されているメニュー バーにシステム メニューが表示され、 Minimize、 Maximize および Close ボタンが表示されます。 bMax が TRUE で、pWnd が NULL でない場合、MDI 子ウィンドウが最大化され、メニュー バーに追加のコントロールが組み込まれている必要があります。 それ以外の場合、メニュー バーは通常の状態に戻ります。
CMFCMenuBar::SetMenuButtonRTC
ユーザーがメニュー ボタンを作成するときにフレームワークが使用するランタイム クラス情報を設定します。
void SetMenuButtonRTC(CRuntimeClass* pMenuButtonRTC);
パラメーター
pMenuButtonRTC
[in]CRuntimeClassCMFCMenuButton クラスから派生したクラスの情報。
解説
ユーザーがメニュー バーに新しいボタンを追加すると、フレームワークによってボタンが動的に作成されます。 既定では、 CMFCMenuButton
オブジェクトが作成されます。 フレームワークが作成するボタン オブジェクトの種類を変更するには、このメソッドをオーバーライドします。
CMFCMenuBar::SetMenuFont
アプリケーション内のすべてのメニュー バーのフォントを設定します。
static BOOL SetMenuFont(
LPLOGFONT lpLogFont,
BOOL bHorz = TRUE);
パラメーター
lpLogFont
[in]設定するフォントを定義する LOGFONT 構造体へのポインター。
bHorz
[in]垂直フォントに lpLogFont パラメーターを使用する場合は TRUE、水平フォントに使用する場合は FALSE。
戻り値
メソッドが成功した場合は TRUE。それ以外の場合は FALSE。
解説
すべての CMFCMenuBar
オブジェクトに 2 つのフォントが使用されます。 これらの個別のフォントは、水平方向と垂直方向のメニュー バーに使用されます。
フォント設定はグローバル変数であり、すべての CMFCMenuBar
オブジェクトに影響します。
CMFCMenuBar::SetRecentlyUsedMenus
メニュー バーに最近使用したメニュー コマンドを表示するかどうかを制御します。
static void SetRecentlyUsedMenus (BOOL bOn = TRUE);
パラメーター
ボン
[in]最近使用したメニュー コマンドを表示するかどうかを制御するブール値。
CMFCMenuBar::SetShowAllCommands
メニューに使用可能なすべてのコマンドを表示するかどうかを制御します。
static void SetShowAllCommands(BOOL bShowAllCommands = TRUE);
パラメーター
bShowAllCommands
[in]ポップアップ メニューにすべてのメニュー コマンドを表示するかどうかを指定するブール型パラメーター。
解説
メニューにすべてのメニュー コマンドが表示されない場合、ほとんど使用されないコマンドは非表示になります。 メニュー コマンドの表示の詳細については、「 CMFCMenuBar クラスを参照してください。