3

SDI を使用して多数の動的に作成された CView ベースのビューをホストする、比較的大規模な MFC アプリケーションがあります。アプリケーションの基本構造は Outlook に似ています (左側にツリー ビュー、右側に動的ビュー)。

アプリでフォーカスの変更を処理する正しい方法について頭を悩ませてきました。たとえば、フォーカスがツリー ビュー (左側のビュー) にあるときに「タブ」を押して、フォーカスを右側のビューに移動できるようにしたいと考えています。ツリー ctrl でタブ キーをキャプチャし、手動で適切なビューに変更することはできますが、多くの異なるビュー タイプ (いくつかは CFormView ベース) と多くのスプリッター コントロールがあり、より一般的なものがあるかどうかはわかりません。それを処理する方法。

CDialog または CFormView でフォーカスを設定するのは簡単ですが (Visual Studio の組み込みのタブ オーダー マネージャーを使用するだけです)、複数のビュー タイプや分割バーなどをホストするアプリケーションははるかに複雑です。たとえば、フォーカスが現在フォーム ビューにある場合、フォーム ビューのタブ オーダーの最後にタブを移動すると、入力フォーカスを別の (動的) ビューに変更する必要があることをどのように検出できますか?

乾杯と感謝。

ダレン。

4

1 に答える 1

0

明白な答えの 1 つは、UI 自体を単純化することです。

もう 1 つは、ビュー内で「タブ」を押すだけで、ユーザーはマウスを使用してビューを切り替える必要があります。別の方法として、ビュー メニュー項目を作成し、ユーザーがメニューを選択してビューを選択できるようにすることもできます (キーボードを使用して、Alt-V-1 を押してビュー 1 を選択することもできます)。

最後のオプションは、あなたが言及したものです: Tab キーを検出し、すべてを自分で処理します。

于 2012-01-18T15:27:39.850 に答える