SDI を使用して多数の動的に作成された CView ベースのビューをホストする、比較的大規模な MFC アプリケーションがあります。アプリケーションの基本構造は Outlook に似ています (左側にツリー ビュー、右側に動的ビュー)。
アプリでフォーカスの変更を処理する正しい方法について頭を悩ませてきました。たとえば、フォーカスがツリー ビュー (左側のビュー) にあるときに「タブ」を押して、フォーカスを右側のビューに移動できるようにしたいと考えています。ツリー ctrl でタブ キーをキャプチャし、手動で適切なビューに変更することはできますが、多くの異なるビュー タイプ (いくつかは CFormView ベース) と多くのスプリッター コントロールがあり、より一般的なものがあるかどうかはわかりません。それを処理する方法。
CDialog または CFormView でフォーカスを設定するのは簡単ですが (Visual Studio の組み込みのタブ オーダー マネージャーを使用するだけです)、複数のビュー タイプや分割バーなどをホストするアプリケーションははるかに複雑です。たとえば、フォーカスが現在フォーム ビューにある場合、フォーム ビューのタブ オーダーの最後にタブを移動すると、入力フォーカスを別の (動的) ビューに変更する必要があることをどのように検出できますか?
乾杯と感謝。
ダレン。