CKeyboardManager クラス
メイン フレーム ウィンドウおよび子フレーム ウィンドウのショートカット キーのテーブルを管理します。
構文
class CKeyboardManager : public CObject
メンバー
パブリック コンストラクター
名前 | 説明 |
---|---|
CKeyboardManager::CKeyboardManager | CKeyboardManager オブジェクトを構築します。 |
パブリック メソッド
名前 | 説明 |
---|---|
CKeyboardManager::CleanUp | ショートカット キー テーブルをクリアします。 |
CKeyboardManager::FindDefaultAccelerator | 指定したコマンドとウィンドウの既定のショートカット キーを取得します。 |
CKeyboardManager::IsKeyHandled | キーがアクセラレータ テーブルによって処理されるかどうかを判断します。 |
CKeyboardManager::IsKeyPrintable | 文字が印刷可能かどうかを示します。 |
CKeyboardManager::IsShowAllAccelerators | メニューにコマンドのすべてのショートカット キーを表示するか、既定のショートカット キーのみを表示するかを示します。 |
CKeyboardManager::LoadState | Windows レジストリからショートカット キー テーブルを読み込みます。 |
CKeyboardManager::ResetAll | アプリケーション リソースからショートカット キー テーブルを再読み込みします。 |
CKeyboardManager::SaveState | ショートカット キー テーブルを Windows レジストリに保存します。 |
CKeyboardManager::ShowAllAccelerators | フレームワークがすべてのコマンドのすべてのショートカット キーを表示するか、コマンドごとに 1 つのショートカット キーを表示するかを指定します。 このメソッドは、ショートカット キーが 1 つだけ関連付けられているコマンドには影響しません。 |
CKeyboardManager::TranslateCharToUpper | 文字を上位レジスタに変換します。 |
CKeyboardManager::UpdateAccelTable | 新しいショートカット キー テーブルを使用してショートカット キー テーブルを更新します。 |
解説
このクラスのメンバーを使用すると、ショートカット キー テーブルを保存して Windows レジストリに読み込み、テンプレートを使用してショートカット キー テーブルを更新し、フレーム ウィンドウでコマンドの既定のショートカット キーを見つけることができます。 さらに、このオブジェクトを使用すると、 CKeyboardManager
ショートカット キーをユーザーに表示する方法を制御できます。
オブジェクトは手動で CKeyboardManager
作成しないでください。 アプリケーションのフレームワークによって自動的に作成されます。 ただし、アプリケーションの初期化プロセス中に CWinAppEx::InitKeyboardManager を呼び出す必要があります。 アプリケーションのキーボード マネージャーへのポインターを取得するには、CWinAppEx::GetKeyboardManager を呼び出 します。
例
次の例では、クラスからCWinAppEx
オブジェクトへのポインターを取得するCKeyboardManager
方法と、メニュー コマンドに関連付けられているすべてのショートカット キーを表示する方法を示します。 このコード スニペットは、Custom Pages サンプルの一部です。
// The GetKeyboardManager method is inherited from the CWinAppEx class.
CKeyboardManager *cKeyboardManager = GetKeyboardManager();
cKeyboardManager->ShowAllAccelerators();
継承階層
必要条件
ヘッダー: afxkeyboardmanager.h
CKeyboardManager::CKeyboardManager
CKeyboardManager
オブジェクトを構築します。
CKeyboardManager();
解説
ほとんどの場合、直接作成 CKeyboardManager
する必要はありません。 既定では、フレームワークによって自動的に作成されます。 への CKeyboardManager
ポインターを取得するには、CWinAppEx::GetKeyboardManager を呼び出 します。 手動で作成する場合は、CWinAppEx::InitKeyboardManager メソッドを使用して初期化する必要があります。
CKeyboardManager::CleanUp
リソースを CKeyboardManager
解放し、すべてのショートカット キー マッピングをクリアします。
static void CleanUp();
解説
ショートカット キーの詳細については、「キーボードとマウスのカスタマイズ」を参照してください。
アプリケーションの終了時にフレームワークによって自動的に呼び出されるため、アプリケーションの終了時にこの関数を呼び出す必要はありません。
CKeyboardManager::FindDefaultAccelerator
指定したコマンドとウィンドウの既定のショートカット キーを取得します。
static BOOL FindDefaultAccelerator(
UINT uiCmd,
CString& str,
CFrameWnd* pWndFrame,
BOOL bIsDefaultFrame);
パラメーター
Uicmd
[入力] コマンド ID。
str
[out]オブジェクトへの CString
参照。
pWndFrame
[in]フレーム ウィンドウへのポインター。
bIsDefaultFrame
[in]フレーム ウィンドウが既定のフレーム ウィンドウかどうかを指定します。
戻り値
ショートカットが見つかった場合は 0 以外。それ以外の場合は 0。
解説
このメソッドは、uiCmd で指定されたコマンドを検索し、既定のショートカット キーを取得します。 次に、このメソッドは、このショートカット キーに関連付けられている文字列を受け取り、str パラメーターに値を書き込みます。
CKeyboardManager::IsKeyHandled
指定したキーが CKeyboardManager クラスによって 処理されるかどうかを判断します。
static BOOL __stdcall IsKeyHandled(
WORD nKey,
BYTE fVirt,
CFrameWnd* pWndFrame,
BOOL bIsDefaultFrame);
パラメーター
nKey
[in]チェックするキー。
fVirt
[in]ショートカット キーの動作を指定します。 使用可能な値の一覧については、ACCEL 構造体を参照してください。
pWndFrame
[in]フレーム ウィンドウ。 このメソッドは、このフレームでショートカット キーを処理するかどうかを決定します。
bIsDefaultFrame
[in]pWndFrame が既定のフレーム ウィンドウかどうかを示すブール型パラメーター。
戻り値
ショートカット キーが処理される場合は TRUE。 FAL Standard Edition キーが処理されない場合、または pWndFrame が NULL の場合。
解説
入力パラメーターは、ショートカット キーが pWndFrame で処理されるかどうかを判断するために、nKey と fVirt の両方のアクセラレータ テーブルのエントリと一致する必要があります。
CKeyboardManager::IsKeyPrintable
文字が印刷可能かどうかを示します。
static BOOL __stdcall IsKeyPrintable(const UINT nChar);
パラメーター
nChar
[in]このメソッドがチェックする文字。
戻り値
文字が印刷可能な場合は 0 以外、印刷できない場合は 0。
解説
GetKeyboardState の呼び出しが失敗した場合、このメソッドは失敗します。
CKeyboardManager::IsShowAllAccelerators
メニュー コマンドに関連付けられているすべてのショートカット キーをメニューに表示するか、既定のショートカット キーのみを表示するかを示します。
static BOOL IsShowAllAccelerators();
戻り値
アプリケーションがメニュー コマンドのすべてのショートカット キーを一覧表示する場合は 0 以外。アプリケーションに既定のショートカット キーのみが表示される場合は 0。
解説
アプリケーションには、メニュー バーのメニュー コマンドのショートカット キーが一覧表示されます。 関数 CKeyboardManager::ShowAllAccelerators を使用して、アプリケーションですべてのショートカット キーを一覧表示するか、既定のショートカット キーだけを一覧表示するかを制御します。
CKeyboardManager::LoadState
Windows レジストリからショートカット キー テーブルを読み込みます。
BOOL LoadState(
LPCTSTR lpszProfileName = NULL,
CFrameWnd* pDefaultFrame = NULL);
パラメーター
lpszProfileName
[in]データが CKeyboardManager
保存されるレジストリ パス。
pDefaultFrame
[in]既定のウィンドウとして使用するフレーム ウィンドウへのポインター。
戻り値
状態が正常に読み込まれた場合は 0 以外、それ以外の場合は 0。
解説
lpszProfileName パラメーターが NULL の場合、このメソッドはデータの既定のレジストリの場所CKeyboardManager
をチェックします。 既定のレジストリの場所は、CWinAppEx クラスによって指定されます。 データは、CKeyboardManager::SaveState メソッドを使用して以前に書き込む必要があります。
既定のウィンドウを指定しない場合は、アプリケーションのメイン フレーム ウィンドウが使用されます。
CKeyboardManager::ResetAll
アプリケーション リソースからショートカット キー テーブルを再読み込みします。
void ResetAll();
解説
この関数は、インスタンスに格納されているショートカットを CKeyboardManager
クリアします。 その後、アプリケーション リソースからキーボード マネージャーの状態が再読み込みされます。
CKeyboardManager::SaveState
ショートカット キー テーブルを Windows レジストリに保存します。
BOOL SaveState(
LPCTSTR lpszProfileName = NULL,
CFrameWnd* pDefaultFrame = NULL);
パラメーター
lpszProfileName
[in]状態を保存 CKeyboardManager
するためのレジストリ パス。
pDefaultFrame
[in]既定のウィンドウになるフレーム ウィンドウへのポインター。
戻り値
キーボード マネージャーの状態が正常に保存された場合は 0 以外、それ以外の場合は 0。
解説
lpszProfileName パラメーターが NULL の場合、このメソッドは CWinAppEx クラスで指定された既定の場所に状態を書き込CKeyboardManager
みます。 場所を指定した場合は、後で CKeyboardManager::LoadState メソッドを使用してデータを読み込むことができます。
既定のウィンドウを指定しない場合は、メイン フレーム ウィンドウが既定のウィンドウとして使用されます。
CKeyboardManager::ShowAllAccelerators
メニュー コマンドに関連付けられているすべてのショートカット キーを表示します。
static void ShowAllAccelerators(
BOOL bShowAll = TRUE,
LPCTSTR lpszDelimiter = _afxDefaultAcceleratorDelimiter);
パラメーター
bShowAll
[in]TRUE の場合、すべてのショートカット キーが表示されます。 FAL Standard Edition の場合は、最初のショートカット キーのみが表示されます。
lpszDelimiter
[in]ショートカット キー間に挿入する文字列。 この区切り記号は、ショートカット キーが 1 つだけ表示されている場合は影響しません。
解説
既定では、コマンドに複数のショートカット キーが関連付けられている場合、最初のショートカット キーのみが表示されます。 この関数を使用すると、すべてのコマンドに関連付けられているすべてのショートカット キーを一覧表示できます。
メニュー バーのコマンドの横にショートカット キーが表示されます。 すべてのショートカット キーが表示されている場合、lpszDelimiter によって提供される文字列は、個々のショートカット キーを区切ります。
CKeyboardManager::TranslateCharToUpper
文字を上位レジスタに変換します。
static UINT TranslateCharToUpper(const UINT nChar);
パラメーター
nChar
[in]変換する文字。
戻り値
入力パラメーターの上位レジスタである文字。
CKeyboardManager::UpdateAccelTable
新しいショートカット キー テーブルを使用してショートカット キー テーブルを更新します。
BOOL UpdateAccelTable(
CMultiDocTemplate* pTemplate,
LPACCEL lpAccel,
int nSize,
CFrameWnd* pDefaultFrame = NULL);
BOOL UpdateAccelTable(
CMultiDocTemplate* pTemplate,
HACCEL hAccelNew,
CFrameWnd* pDefaultFrame = NULL);
パラメーター
pTemplate
[in]ドキュメント テンプレートへのポインター。
lpAccel
[in]新しいショートカット キーへのポインター。
nSize
[in]新しいショートカット テーブルのサイズ。
pDefaultFrame
[in]既定のフレーム ウィンドウへのポインター。
hAccelNew
[in]新しいショートカット テーブルへのハンドル。
戻り値
メソッドが成功した場合は 0 以外。それ以外の場合は 0。
解説
この関数を使用して、既存のショートカット テーブルを複数のフレーム ウィンドウ オブジェクトの新しいショートカット キーに置き換えます。 この関数は、指定されたドキュメント テンプレートに接続されているすべてのフレーム ウィンドウ オブジェクトへのアクセスを取得するためのパラメーターとしてドキュメント テンプレートを受け取ります。
関連項目
階層図
クラス
CWinAppEx クラス
CWinAppEx::InitKeyboardManager
キーボードとマウスのカスタマイズ
フィードバック
https://aka.ms/ContentUserFeedback」を参照してください。
以下は間もなく提供いたします。2024 年を通じて、コンテンツのフィードバック メカニズムとして GitHub の issue を段階的に廃止し、新しいフィードバック システムに置き換えます。 詳細については、「フィードバックの送信と表示