CListCtrl - как найти это выделено - PullRequest
0 голосов
/ 03 декабря 2010

У меня есть класс CDialog, внутри которого есть два класса ClistCtrl.Я хочу узнать, какой из списков Ctrl выбран в данный момент.скажем, listCtrl A и B. Даже когда я перемещаюсь между A и B, предположим, что сначала я иду к A и выбираю строку.Затем, даже когда я иду к B и выбираю там элемент, элемент в A остается выбранным, так как я не узнаю, что я попал в другой список.

Любые предложения, как мне это найти.

Ответы [ 2 ]

1 голос
/ 03 декабря 2010

Я нашел способ сделать это. Я могу зарегистрироваться для уведомлений NM_Click в обоих списках Когда выбран список A, я устанавливаю curSel для списка B на -1 и наоборот.

1 голос
/ 03 декабря 2010

Если вы правильно понимаете, вам нужно знать, на каком из списков есть фокус. Вы можете сделать это, вызвав GetFocus(), он возвращает указатель на сфокусированный элемент управления.

Проблема, с которой вы можете столкнуться, заключается в том, что ваш диалог не является активным окном, и тогда фокус будет в другом месте. В этом случае вы должны отслеживать сообщения WM_SETFOCUS и WM_KILLFOCUS и вести учет того, какой из списков был активирован последним. В MFC есть обратные вызовы CWnd::OnSetFocus и CWnd::OnKillFocus, которые можно использовать для достижения этой цели.

...