3

私はかなり普通の MFC SDI アプリケーションを持っています。

最近、新しい MFC 機能パック (CMFCToolbar など) の使用を開始しましたが、これらすべての変更の後、キーボード ショートカットに説明のつかない動作が見られます。

一部のリソース ID にはファンクション キー ショートカット (F6 など) があるようですが、これがどのように機能するか、または無効にする方法がわかりません。

たとえば、ツールバーで ID_ABC をマウスオーバーすると、次のようなツールチップが表示されます。

ABC (F2) ABCアクションを実行

アクセラレータ テーブルのどこにも VK_F2 が表示されません。また、ソリューションのどこにも (F2) が見つかりません。これはすべて私には非常に奇妙に思えます。F2 を押すと、実際に ABC が実行されます。

アクセラレータ テーブル全体を削除すると、問題が「修正」されたように見えますが、もちろんアクセラレータはありません。アクセラレータを再度追加するとすぐに、問題が再発します。

通常、これらの問題に出くわしたとき、私は一人でいるように見え、問題の原因は通常「遠く離れた」ところにあります。これは、メモリアクセスが悪い後にランダムな関数に着陸するようなもので、「なぜ私はここにいる"??

しかし、誰かがこれについて何か知っているなら、ありがとう!

4

1 に答える 1

3

アプリケーションのリソース ファイル内のアクセラレータ テーブルを調べるだけです。はい、多くの標準コマンドにはアクセラレータ キーが割り当てられています (たとえば、Ctlr+S は [ファイルの保存] コマンドにマップされています)。不要なコマンドを削除できます (アクセラレータ テーブル全体ではなく、個別に)。アプリケーションが古いアクセラレータ テーブルの割り当てを「記憶」している (または新しいもので動作していない) のは、これらをレジストリに保存したことが原因である可能性があります。そこに移動して、アプリケーションの「ワークスペース」ツリーを削除してから、新たにテストしてください。

メニュー項目のラベルには、タブで区切られたショートカットも含める必要があります (例: File &Open\tCtlr+O)。ステータス バーのヒントとツールヒントは、メニューまたはツールバー項目と同じ ID を持つ文字列リソースによって作成されます。これらは、メニュー エディターまたは文字列テーブル エディターで作成/編集できます。2 つの項目は改行文字で区切られます。

于 2016-10-26T18:01:02.423 に答える