アクセラレータ エディター (C++)
アクセラレータ テーブルは、アクセス キー (ショートカット キーと呼ばれます) とそれらに関連付けられたコマンド識別子の一覧を含む C++ Windows リソースです。 プログラムは複数のアクセラレータ テーブルを持つことができます。
通常、アクセラレータはメニューやツール バーでも使用できるプログラム コマンドのキーボード ショートカットとして使用されます。 しかし、アクセラレータ テーブルを使用すると、関連付けられているユーザー インターフェイス オブジェクトのないコマンドにキーの組み合わせを定義できます。
ヒント
アクセラレータ エディターの使用中、右クリックすると、頻繁に使用するコマンドのショートカット メニューが表示されます。 使用できるコマンドは、ポインターの位置によって異なります。
クラス ビュー を使用して、コードにアクセス キーのコマンドをフックできます。 定義済みのアクセラレータ キーの一覧については、「アクセラレータ キー」 を参照してください。
Note
Windows では、空のアクセラレータ テーブルは作成できません。 エントリがないアクセラレータ テーブルを作成すると、テーブルを保存する際に自動的に削除されます。
アクセラレータのプロパティ
アクセラレータのプロパティは、いつでも [プロパティ] ウィンドウで設定できます。 アクセラレータ エディターを使用して、アクセラレータ テーブルでアクセラレータのプロパティを変更することもできます。 [プロパティ] ウィンドウとアクセラレータ エディターのいずれを使用して変更しても結果は同じで、編集内容はすぐにアクセラレータ テーブルに反映されます。
ID プロパティは、プログラム コード内の各アクセラレータ テーブル エントリを参照します。 このエントリは、ユーザーがアクセラレータ キーまたはキーの組み合わせを押したときにプログラムが受け取るコマンド値です。 アクセラレータ テーブルの ID がメニュー リソースの ID と同じである場合は、ID を同じにするとアクセラレータをメニュー項目と同じにできます。
各アクセラレータ ID には、Modifier、Key、および Type の 3 つのプロパティがあります。
Modifier プロパティは、アクセラレータのコントロール キーの組み合わせを設定します。
Note
[プロパティ] ウィンドウでは、Modifier プロパティは 3 つの別個のブール型プロパティ (Alt、Ctrl、および Shift) として表示され、すべて独自に制御できます。
アクセラレータ テーブルの Modifier プロパティの有効なエントリを次に示します。
Value | 説明 |
---|---|
なし | ユーザーが Key 値のみを押 します。 この値は、001 から 026 の ASCII/ANSI 値で最も効果的に使用されます。これは ^A から ^Z (Ctrl + A から Ctrl + Z) として解釈されます。 |
Alt | ユーザーが Key 値の前に Alt を押す必要があります。 |
Ctrl | ユーザーが Key 値の前に Ctrl を押す必要があります。ASCII 型では無効です。 |
Shift | ユーザーが Key 値の前に Shift を押す必要があります。 |
Ctrl+Alt | ユーザーが Key 値の前に Ctrl と Alt を押す必要があります。ASCII 型では無効です。 |
Ctrl+Shift | ユーザーが Key 値の前に Ctrl と Shift を押す必要があります。ASCII 型では無効です。 |
Alt+Shift | ユーザーが Key 値の前に Alt と Shift を押す必要があります。ASCII 型では無効です。 |
Ctrl+Alt+Shift | ユーザーが Key 値の前に Ctrl、Alt、および Shift を押す必要があります。ASCII 型では無効です。 |
Key プロパティは、アクセラレータとして使用する実際のキーを設定します。
アクセラレータ テーブルの Key プロパティの有効なエントリを次に示します。
Value | 説明 |
---|---|
0 から 255 の 10 進形式の整数。 | この値は、ASCII や ANSI として値を扱うかどうかを次のように決定します。 - 1 桁の数値は、ASCII や ANSI の値ではなく、常に対応するキーとして解釈されます。 - 1 から 26 の値は、前にゼロが付いているときは、^A から ^Z と解釈されます。これは、Ctrl キーを押した状態のアルファベットの文字の ASCII 値を表します。 - 27 から 32 の値は、常に 3 桁の 10 進値 027 から 032 として解釈されます。 - 033 から 255 の値は、前に 0 が付いているかどうかに関係なく、ANSI 値として解釈されます。 |
1 つのキーボード文字。 | 大文字の A から Z や数値 0 から 9 は、ASCII 値または仮想キー値のいずれかです。 その他の文字はすべて ASCII のみです。 |
前にキャレット (^) が付いた A から Z (大文字のみ) の範囲の 1 つのキーボード文字 (例: ^C)。 | このオプションは、Ctrl キーを押した状態でキーを押すと、その ASCII 値を入力します。 |
有効な仮想キー識別子。 | アクセラレータ テーブルのドロップダウン Key ボックスに、標準の仮想キー識別子の一覧があります。 |
Note
ASCII 値を入力するときには、Modifier プロパティ オプションは制限されています。 使用できるコントロール キーは Alt キーのみです。
ヒント
アクセラレータ キーを定義する近道は、アクセラレータ テーブル内のエントリまたは複数のエントリを右クリックし、[キー タイピング登録] を選択して、キーボードで任意のキーまたはキーの組み合わせを押すことです。
この [キー タイピング登録] コマンドは、[編集] メニューからも使用できます。
Type プロパティ は、アクセラレータ ID に関連付けられているショートカット キーの組み合わせが ASCII/ANSI キー値と仮想キー (VIRTKEY) の組み合わせのいずれとして解釈されるかを決定します。
Type プロパティが ASCII の場合、Modifier プロパティに設定できるのは
None
またはAlt
のみであるか、Ctrl キーを使用するアクセラレータです。これは、キーの前に^
を付けることで指定されます。Type プロパティが VIRTKEY の場合、Modifier 値と Key 値の任意の組み合わせが有効です。
Note
アクセラレータ テーブルに値を入力し、その値を ASCII/ANSI として扱う場合は、テーブルのエントリに対して Type を選択し、ドロップダウン リストから [ASCII] を選択します。 ただし、[編集] メニューの Next Key Typed コマンドを使用して Key を指定する場合は、Key コードを入力する "前" に Type プロパティを VIRTKEY から ASCII に変更する必要があります。
アクセラレータ テーブル
C++ プロジェクトでは、アクセラレータ エディターのインプレース編集を使用してアクセラレータ テーブルを直接編集できます。
以下の手順では、標準のプロパティ ページの使用に言及していますが、インプレース編集とプロパティ ページの方法は両方とも同じ結果になります。 プロパティ ページを使用するか、インプレース編集を使用して行った変更は、アクセラレータ テーブルにすぐに反映されます。
アクセラレータ テーブルで編集するには
[リソース ビュー] でアクセラレータ テーブルのアイコンをダブルクリックして開きます。
テーブル内のエントリを選択し、クリックしてインプレース編集をアクティブにします。
次のようにドロップダウン コンボ ボックスから選択するか、インプレースで入力して変更します。
ID の場合は、一覧から選択するか、入力して編集します。
Modifier の場合は、一覧から選択します。
Key の場合は、一覧から選択するか、入力して編集します。
Type の場合は、一覧から ASCII または VIRTKEY を選択します。
開いているアクセラレータ テーブルでエントリを検索するには
[リソース ビュー] でアクセラレータ テーブルのアイコンをダブルクリックして開きます。
列の内容をアルファベット順に並べ替えるには、列見出しをクリックします。 たとえば、[ID] をクリックすると、アクセラレータ テーブル内のすべての ID がアルファベット順に表示されます。
これで、一覧に目を通しながらエントリを探すことができます。
アクセラレータ テーブルにエントリを追加するには
[リソース ビュー] でアクセラレータ テーブルのアイコンをダブルクリックして開きます。
アクセラレータ テーブル内を右クリックし、[新しいアクセラレータ] を選択するか、テーブルの下部の空の行エントリを選択します。
[ID] ボックスのドロップダウン リストから ID を選択するか、[ID] ボックスに新しい ID を入力します。
アクセラレータとして使用する Key を入力するか、右クリックして [キー タイピング登録] を選択してキーの組み合わせを設定するか、メニュー [編集] > [キー タイピング登録] に移動します。
必要に応じて Modifier と Type を変更し、Enter を押します。
Note
定義するすべてのアクセラレータが一意であることを確認します。 いくつかのキーの組み合わせを、同じ ID に問題なく割り当てることができます。たとえば、Ctrl+P と F8 を、両方とも ID_PRINT に割り当てることができます。 ただし、1 つのキーの組み合わせを複数の ID に割り当てると、うまく機能しません。たとえば、Ctrl+Z を ID_SPELL_CHECK と ID_THESAURUS の両方に割り当てるなどです。
アクセラレータ テーブルのエントリを削除するには
[リソース ビュー] でアクセラレータ テーブルのアイコンをダブルクリックして開きます。
削除するエントリを選択するか、 Ctrl または Shift キーを押しながら複数のエントリを選択します。
右クリックして [削除] を選択するか、メニューの [編集] > [削除] に移動します。
ヒント
Delete キーを押 して削除することもできます。
アクセラレータ テーブルのエントリを別のリソース スクリプト ファイルに移動またはコピーするには
両方のリソース スクリプト ファイルでアクセラレータ テーブルを開き、移動するエントリを選択します。
[編集] メニューの [コピー] または [切り取り] を選択します。
ターゲット リソース スクリプト ファイル内のエントリを選択し、[編集] メニューの [貼り付け] を選択します。
Note
コピーと貼り付けのショートカット キーも使用できます。
複数のアクセラレータ キーのプロパティを変更するには
[リソース ビュー] でアクセラレータ テーブルのアイコンをダブルクリックして開きます。
Ctrl キーを押しながら各アクセラレータ キーを選択して、変更する対象を選択します。
[プロパティ ウィンドウ] に移動し、選択したすべてのアクセラレータで共有する値を入力します。
Note
[プロパティ] ウィンドウに、各修飾子の値がブール型プロパティとして表示されます。 [プロパティ] ウィンドウで修飾子の値を変更すると、アクセラレータ テーブルは、前にそこに存在した修飾子への追加として新しい修飾子を扱います。 このため、修飾子の値を設定する場合は、すべてのアクセラレータが同じ Modifier 設定を共有するように、すべてを設定する必要があります。
要件
Win32