CContextMenuManager クラス

オブジェクトは CContextMenuManager ショートカット メニュー (コンテキスト メニューとも呼ばれます) を管理します。

構文

class CContextMenuManager : public CObject

メンバー

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

名前 説明
CContextMenuManager::CContextMenuManager CContextMenuManager オブジェクトを構築します。
CContextMenuManager::~CContextMenuManager デストラクターです。

パブリック メソッド

名前 説明
CContextMenuManager::AddMenu 新しいショートカット メニューを追加します。
CContextMenuManager::GetMenuById 指定されたリソース ID に関連付けられているメニューへのハンドルを返します。
CContextMenuManager::GetMenuByName 指定されたメニュー名と一致するメニューへのハンドルを返します。
CContextMenuManager::GetMenuNames メニュー名の一覧を返します。
CContextMenuManager::LoadState Windows レジストリに格納されているショートカット メニューを読み込みます。
CContextMenuManager::ResetState ショートカット メニュー マネージャーからショートカット メニューをクリアします。
CContextMenuManager::SaveState ショートカット メニューを Windows レジストリに保存します。
CContextMenuManager::SetDontCloseActiveMenu 新しいショートカット メニューが CContextMenuManager 表示されたときにアクティブなショートカット メニューを閉じるかどうかを制御します。
CContextMenuManager::ShowPopupMenu 指定したショートカット メニューを表示します。
CContextMenuManager::TrackPopupMenu 指定したショートカット メニューを表示します。 選択したメニュー コマンドのインデックスを返します。

解説

CContextMenuManager はショートカット メニューを管理し、外観が一貫していることを確認します。

オブジェクトは手動で CContextMenuManager 作成しないでください。 アプリケーションのフレームワークによってオブジェクトが作成されます CContextMenuManager 。 ただし、アプリケーションの初期化時に CWinAppEx::InitContextMenuManager を呼び出す必要があります。 コンテキスト マネージャーを初期化した後、CWinAppEx::GetContextMenuManager メソッドを使用して、アプリケーションのコンテキスト マネージャーへのポインターを取得します。

呼び出 AddMenuすことで、実行時にショートカット メニューを作成できます。 ユーザー入力を最初に受信せずにメニューを表示する場合は、次を呼び出します ShowPopupMenuTrackPopupMenu は、メニューを作成し、ユーザー入力を待つ場合に使用されます。 TrackPopupMenu は、選択したコマンドのインデックスを返します。ユーザーが何も選択せずに終了した場合は 0 を返します。

また CContextMenuManager 、状態を保存して Windows レジストリに読み込むこともできます。

次の例では、オブジェクトにメニューを追加する CContextMenuManager 方法と、オブジェクトに新しいポップアップ メニューが表示されたときに CContextMenuManager アクティブなポップアップ メニューを閉じないようにする方法を示します。 このコード スニペットは、Custom Pages サンプル一部です。

// The GetContextMenuManager method is inherited from the CWinAppEx class.
GetContextMenuManager()->AddMenu(_T("My menu"), IDR_CONTEXT_MENU);
GetContextMenuManager()->SetDontCloseActiveMenu(true);

継承階層

CObject

CContextMenuManager

必要条件

ヘッダー: afxcontextmenumanager.h

CContextMenuManager::AddMenu

CContextMenuManager に新しいショートカット メニューを 追加します

BOOL AddMenu(
    UINT uiMenuNameResId,
    UINT uiMenuResId);

BOOL AddMenu(
    LPCTSTR lpszName,
    UINT uiMenuResId);

パラメーター

uiMenuNameResId
[in]新しいメニューの名前を含む文字列のリソース ID。

uiMenuResId
[in]メニュー リソース ID。

lpszName
[in]新しいメニューの名前を含む文字列。

戻り値

メソッドが成功した場合は 0 以外。メソッドが失敗した場合は 0。

解説

uiMenuResId が無効な場合、または同じ名前の別のメニューが既に CContextMenuManager.

CContextMenuManager::CContextMenuManager

CContextMenuManager オブジェクトを構築します。

CContextMenuManager();

解説

ほとんどの場合、手動で CContextMenuManager 作成しないでください。 アプリケーションのフレームワークによってオブジェクトが作成されます CContextMenuManager 。 アプリケーションの初期化中に CWinAppEx::InitContextMenuManager を呼び出す必要があります。 コンテキスト マネージャーへのポインターを取得するには、CWinAppEx::GetContextMenuManager を呼び出 します

CContextMenuManager::GetMenuById

特定のリソース ID に関連付けられているメニューへのハンドルを返します。

HMENU GetMenuById(UINT nMenuResId) const;

パラメーター

nMenuResId
[in]メニューのリソース ID。

戻り値

関連付けられているメニューへのハンドル、または NULL メニューが見つからない場合。

CContextMenuManager::GetMenuByName

特定のメニューへのハンドルを返します。

HMENU GetMenuByName(
    LPCTSTR lpszName,
    UINT* puiOrigResID = NULL) const;

パラメーター

lpszName
[in]取得するメニューの名前を含む文字列。

puiOrigResID
[out]UINT へのポインター。 このパラメーターには、指定したメニューのリソース ID (見つかった場合) が含まれます。

戻り値

lpszName指定された名前と一致するメニューへのハンドル。 lpszName というメニューがない場合は NULL。

解説

このメソッドが lpszName と一致するメニューを見つけた場合は、GetMenuByNameパラメーター puiOrigResID にメニュー リソース ID を格納します。

CContextMenuManager::GetMenuNames

CContextMenuManager に追加されたメニュー名の一覧を 返します

void GetMenuNames(CStringList& listOfNames) const;

パラメーター

listOfNames
[out]CStringList パラメーターへの参照。 このメソッドは、メニュー名の一覧をこのパラメーターに書き込みます。

CContextMenuManager::LoadState

CContextMenuManager クラス関連付けられている情報を Windows レジストリから読み込みます。

virtual BOOL LoadState(LPCTSTR lpszProfileName = NULL);

パラメーター

lpszProfileName
[in]レジストリ キーの相対パスを含む文字列。

戻り値

メソッドが成功した場合は 0 以外。それ以外の場合は 0。

解説

lpszProfileName パラメーターは、レジストリ エントリの絶対パスではありません。 これは、アプリケーションの既定のレジストリ キーの末尾に追加される相対パスです。 既定のレジストリ キーを取得または設定するには、メソッド CWinAppEx::GetRegistryBaseCWinAppEx::SetRegistryBase をそれぞれ使用します。

ショートカット メニューをレジストリに保存するには、CContextMenuManager::SaveState メソッドを使用します。

CContextMenuManager::ResetState

CContextMenuManager クラスに関連付 けられているショートカット メニューからすべての項目をクリアします

virtual BOOL ResetState();

戻り値

メソッドが成功した場合は TRUE。FAL Standard Edition エラーが発生した場合。

解説

このメソッドは、ポップアップ メニューをクリアし、から削除します。CContextMenuManager

CContextMenuManager::SaveState

CContextMenuManager クラス関連付けられている情報を Windows レジストリに保存します。

virtual BOOL SaveState(LPCTSTR lpszProfileName = NULL);

パラメーター

lpszProfileName
[in]レジストリ キーの相対パスを含む文字列。

戻り値

メソッドが成功した場合は 0 以外。それ以外の場合は 0。

解説

lpszProfileName パラメーターは、レジストリ エントリの絶対パスではありません。 これは、アプリケーションの既定のレジストリ キーの末尾に追加される相対パスです。 既定のレジストリ キーを取得または設定するには、メソッド CWinAppEx::GetRegistryBaseCWinAppEx::SetRegistryBase をそれぞれ使用します。

CContextMenuManager::LoadState メソッドを使用して、レジストリからショートカット メニューを読み込みます。

CContextMenuManager::SetDontCloseActiveMenu

新しいポップアップ メニューを 表示するときに、CContextMenuManager がアクティブなポップアップ メニューを閉じるかどうかを制御します。

void SetDontCloseActiveMenu (BOOL bSet = TRUE);

パラメーター

bSet
[in]アクティブなポップアップ メニューを閉じるかどうかを制御するブール型パラメーター。 TRUE の値は、アクティブなポップアップ メニューが閉じていないことを示します。 FAL Standard Edition は、アクティブなポップアップ メニューが閉じられたことを示します。

解説

既定では、 CContextMenuManager アクティブなポップアップ メニューが閉じます。

CContextMenuManager::ShowPopupMenu

指定したショートカット メニューを表示します。

virtual BOOL ShowPopupMenu(
    UINT uiMenuResId,
    int x,
    int y,
    CWnd* pWndOwner,
    BOOL bOwnMessage = FALSE,
    BOOL bRightAlign = FALSE);

virtual CMFCPopupMenu* ShowPopupMenu(
    HMENU hmenuPopup,
    int x,
    int y,
    CWnd* pWndOwner,
    BOOL bOwnMessage = FALSE,
    BOOL bAutoDestroy = TRUE,
    BOOL bRightAlign = FALSE);

パラメーター

uiMenuResId
[in]このメソッドが表示するメニューのリソース ID。

x
[in]クライアント座標のショートカット メニューの水平方向のオフセット。

y
[in]クライアント座標のショートカット メニューの垂直方向のオフセット

pWndOwner
[in]ショートカット メニューの親ウィンドウへのポインター。

bOwnMessage
[in]メッセージのルーティング方法を示すブール型パラメーター。 bOwnMessage が FAL Standard Edition の場合は、標準 MFC ルーティングが使用されます。 それ以外の場合、 pWndOwner は メッセージを受信します。

hmenuPopup
[in]このメソッドが表示するメニューのハンドル。

bAutoDestroy
[in]メニューが自動的に破棄されるかどうかを示すブール型パラメーター。

bRightAlign
[in]メニュー項目の配置方法を示すブール型パラメーター。 bRightAlign が TRUE の場合、メニューは右から左への読み取り順序に合わせて右揃えになります。

戻り値

メソッドがメニューを正常に表示した場合、最初のメソッドオーバーロードは 0 以外の値を返します。それ以外の場合は 0。 2 番目のメソッド オーバーロードは、ショートカット メニューが正しく表示される場合は CMFCPopupMenu へのポインターを返します。それ以外の場合は NULL。

解説

このメソッドは、両方のメソッドにショートカット メニューが表示されるという 点で、CContextMenuManager::TrackPopupMenu メソッドに似ています。 ただし、 TrackPopupMenu 選択したメニュー コマンドのインデックスを返します。

パラメーター bAutoDestroy が FAL Standard Edition の場合は、継承されたDestroyMenuメソッドを手動で呼び出してメモリ リソースを解放する必要があります。 既定の ShowPopupMenu 実装では、パラメーター bAutoDestroy は使用されません。 これは、将来使用するために、またはクラスから派生したカスタム クラス用に CContextMenuManager 提供されます。

CContextMenuManager::TrackPopupMenu

指定したショートカット メニューを表示し、選択したショートカット メニュー コマンドのインデックスを返します。

virtual UINT TrackPopupMenu(
    HMENU hmenuPopup,
    int x,
    int y,
    CWnd* pWndOwner,
    BOOL bRightAlign = FALSE);

パラメーター

hmenuPopup
[in]このメソッドが表示するショートカット メニューのハンドル。

x
[in]クライアント座標のショートカット メニューの水平方向のオフセット。

y
[in]クライアント座標のショートカット メニューの垂直方向のオフセット。

pWndOwner
[in]ショートカット メニューの親ウィンドウへのポインター。

bRightAlign
[in]メニュー項目の配置方法を示すブール型パラメーター。 bRightAlign が TRUE の場合、メニューは右から左への読み取り順序に合わせて右揃えになります。 bRightAlign が FAL Standard Edition の場合、メニューは左から右への読み取り順序で左揃えになります。

戻り値

ユーザーが選択するコマンドのメニュー コマンド ID。ユーザーがメニュー コマンドを選択せずにショートカット メニューを閉じる場合は 0。

解説

このメソッドは、ショートカット メニューを表示するモーダル呼び出しとして機能します。 ユーザーがショートカット メニューを閉じるか、コマンドを選択するまで、アプリケーションはコード内の次の行に進まない。 ショートカット メニューを表示するために使用できる別の方法は、 CContextMenuManager::ShowPopupMenu です。 このメソッドはモーダル呼び出しではなく、選択したコマンドの ID を返しません。

関連項目

階層図
クラス
CWinAppEx クラス