0

CDialog クラスがあり、その中に 2 つの ClistCtrl クラスがあります。現時点で listCtrl のどれが選択されているかを調べたいと思います。たとえば、listCtrl A と B です。A と B の間を移動する場合でも、最初に A に移動して行を選択するとします。次に、Bに移動してそこでアイテムを選択しても、他のリストに移動したことがわからないため、Aのアイテムが選択されたままになります。

任意の提案、どうすればこれを見つけることができますか。

4

2 に答える 2

1

理解が正しければ、リスト ボックスのどれにフォーカスがあるかを知る必要があります。を呼び出すことGetFocus()でそれを行うことができ、フォーカスされたコントロールへのポインターを返します。

ただし、ダイアログがアクティブなウィンドウではなく、フォーカスが別の場所にある場合に問題が発生する可能性があります。この場合、どのリスト ボックスが最後にアクティブ化されたかを追跡WM_SETFOCUSし、WM_KILLFOCUSメッセージを記録する必要があります。MFC にはコールバックがCWnd::OnSetFocusあり、CWnd::OnKillFocusそれを使用してそれを実現できます。

于 2010-12-03T10:48:58.913 に答える
1

これを行う方法を見つけました。両方のリストで NM_Click 通知を登録できます リスト A が選択されている場合、リスト B の curSel を -1 に設定し、その逆も同様です。

于 2010-12-03T10:59:11.000 に答える