Share via


コントロールのキーボード処理

コントロールはキーボード アクセラレータに応答するため、エンドユーザーはコントロールによって実行されるアクションを開始できます。 コンテナーは、そのすべての埋め込みコントロールのキーボード アクティビティを管理します。 複合ドキュメントでは、キーボード アクセラレータは現在アクティブなオブジェクトにのみ適用されます。 コントロールでは、現在 UI がアクティブでない場合でも、コントロールがキーボード ニーモニックに応答できるようにするためのメカニズムが追加されました。

IOleControl::GetControlInfo メソッドと IOleControl::OnMnemonic メソッドと IOleControlSite::OnControlInfoChanged メソッドは、コントロールのキーボードニーモニックを処理します。 CONTROLINFO 構造体は、コントロールのニーモニック アクセラレータを記述し、GetControlInfo メソッドを通じて渡されるフラグは、Enter キーと Esc キーを使用してコントロールの動作を記述します。 コントロールがニーモニックを変更すると、OnControlInfoChanged を呼び出して、必要に応じてコンテナーで構造体を再読み込みできるようにします。

コントロールがアクティブな UI の場合は、フォーカスのあるコントロールでもあります。 インプレースアクティブ状態と UI アクティブ状態の間でコントロールがアクティブ化および非アクティブ化されると、コントロールは IOleControlSite::OnFocus を呼び出して、このような変更をコンテナーに通知します。

さらに、コントロールが UI をアクティブにすると、キーストロークを処理する最初の機会が得られます。 コンテナーにコントロールの前にキーストロークを処理する機会を与えるために、コントロールは IOleControlSite::TranslateAccelerator を呼び出します。 コンテナーがキーストロークを処理しない場合は、コントロールによって処理されます。

ActiveX コントロール