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();
継承階層
要件
Header: afxkeyboardmanager.h
CKeyboardManager::CKeyboardManager
CKeyboardManager
オブジェクトを構築します。
CKeyboardManager();
解説
ほとんどの場合、 CKeyboardManager
を直接作成する必要はありません。 既定では、フレームワークによって自動的に作成されます。 CKeyboardManager
へのポインターを取得するには、CWinAppEx::GetKeyboardManager を呼び出します。 手動で作成する場合は、メソッド CWinAppEx::InitKeyboardManager を使用して初期化する必要があります。
CKeyboardManager::CleanUp
CKeyboardManager
リソースを解放し、すべてのショートカット キー マッピングをクリアします。
static void CleanUp();
解説
ショートカット キーの詳細については、「 Keyboard と Mouse Customization」を参照してください。
アプリケーションの終了時にフレームワークによって自動的に呼び出されるため、アプリケーションの終了時にこの関数を呼び出す必要はありません。
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。 キーが処理されない場合、または pWndFrame が NULL の場合は FALSE。
解説
入力パラメーターは、ショートカット キーが 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 の場合、すべてのショートカット キーが表示されます。 FALSE の場合、最初のショートカット キーのみが表示されます。
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
キーボードとマウスのカスタマイズ