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
すことで、実行時にショートカット メニューを作成できます。 ユーザー入力を最初に受信せずにメニューを表示する場合は、次を呼び出します ShowPopupMenu
。 TrackPopupMenu
は、メニューを作成し、ユーザー入力を待つ場合に使用されます。 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);
継承階層
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::GetRegistryBase と CWinAppEx::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::GetRegistryBase と CWinAppEx::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 を返しません。
関連項目
フィードバック
https://aka.ms/ContentUserFeedback」を参照してください。
以下は間もなく提供いたします。2024 年を通じて、コンテンツのフィードバック メカニズムとして GitHub の issue を段階的に廃止し、新しいフィードバック システムに置き換えます。 詳細については、「フィードバックの送信と表示