CDialog クラスがあり、その中に 2 つの ClistCtrl クラスがあります。現時点で listCtrl のどれが選択されているかを調べたいと思います。たとえば、listCtrl A と B です。A と B の間を移動する場合でも、最初に A に移動して行を選択するとします。次に、Bに移動してそこでアイテムを選択しても、他のリストに移動したことがわからないため、Aのアイテムが選択されたままになります。
任意の提案、どうすればこれを見つけることができますか。
CDialog クラスがあり、その中に 2 つの ClistCtrl クラスがあります。現時点で listCtrl のどれが選択されているかを調べたいと思います。たとえば、listCtrl A と B です。A と B の間を移動する場合でも、最初に A に移動して行を選択するとします。次に、Bに移動してそこでアイテムを選択しても、他のリストに移動したことがわからないため、Aのアイテムが選択されたままになります。
任意の提案、どうすればこれを見つけることができますか。
理解が正しければ、リスト ボックスのどれにフォーカスがあるかを知る必要があります。を呼び出すことGetFocus()
でそれを行うことができ、フォーカスされたコントロールへのポインターを返します。
ただし、ダイアログがアクティブなウィンドウではなく、フォーカスが別の場所にある場合に問題が発生する可能性があります。この場合、どのリスト ボックスが最後にアクティブ化されたかを追跡WM_SETFOCUS
し、WM_KILLFOCUS
メッセージを記録する必要があります。MFC にはコールバックがCWnd::OnSetFocus
あり、CWnd::OnKillFocus
それを使用してそれを実現できます。
これを行う方法を見つけました。両方のリストで NM_Click 通知を登録できます リスト A が選択されている場合、リスト B の curSel を -1 に設定し、その逆も同様です。