0

C++ での実行中にアクセラレータ キーを持たないメニュー項目にアクセラレータ キーを割り当て、それを変更できるようにしたいと考えています。ドキュメントと MSDN を調べましたが、これを行う方法がわかりません。

4

1 に答える 1

2

独自のアクセラレータ テーブルを管理する必要があります。

ACCEL 構造体の配列からリソース テーブルを作成し、データを入力して CreateAcceleratorTable に渡すことができます。または、LoadAccelerators を介してリソースからロードすることもできます。これにより、HACCEL ハンドルが得られます。メイン メッセージ ループでは、TranslateAccelerator 呼び出しでこの HACCEL ハンドルを使用します。

アクセラレータを編集するときに、ACCEL 配列がもうない場合は、HACCEL ハンドルを指定して CopyAcceleratorTable を呼び出し、ACCEL 配列を取得します。必要に応じてこの配列を編集してから、CreateAcceleratorTable を使用して新しい HACCEL ハンドルを再作成し、古いハンドルを削除します。次の変更まで、この新しいハンドルをアクセラレータに使用します。

WndProc は、これらのアクセラレータのメッセージを取得します。メッセージ ハンドラーで、メニュー アクション ハンドラーの実装を呼び出します。

于 2013-02-11T07:11:08.220 に答える