次の方法で共有


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();

継承階層

CObject

CKeyboardManager

要件

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 で処理されるかどうかを判断するために、nKeyfVirt の両方のアクセラレータ テーブル内のエントリと一致する必要があります。

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
キーボードとマウスのカスタマイズ