我有一个 CDialog 类,里面有两个 ClistCtrl 类。我想找出当前选择了哪个listCtrl。比如说,listCtrl A 和 B。即使我在 A 和 B 之间移动,假设首先我去 A 并选择一行。然后,即使我去 B 并在那里选择一个项目,A 中的项目仍然被选中,因为我不知道我已经进入其他列表。
任何建议,我怎么能找到这个。
我有一个 CDialog 类,里面有两个 ClistCtrl 类。我想找出当前选择了哪个listCtrl。比如说,listCtrl A 和 B。即使我在 A 和 B 之间移动,假设首先我去 A 并选择一行。然后,即使我去 B 并在那里选择一个项目,A 中的项目仍然被选中,因为我不知道我已经进入其他列表。
任何建议,我怎么能找到这个。
我找到了一种方法。I can register for NM_Click notifications on both the lists When list A is selected, I set curSel of list B to -1 and vice versa.
如果理解正确,您需要知道哪个列表框具有焦点。你可以通过调用来做到这一点GetFocus()
,它返回一个指向焦点控件的指针。
您可能遇到的问题是当您的对话框不是活动窗口时,焦点将在其他地方。在这种情况下,您应该跟踪WM_SETFOCUS
并WM_KILLFOCUS
发送消息并记录哪些列表框是最后激活的。在 MFC 中有回调CWnd::OnSetFocus
,CWnd::OnKillFocus
可以用来实现这一点。