2010-12-03 3 views
0

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

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

ответ

1

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

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

+0

Спасибо, попробуем это. – user333422 2010-12-03 10:53:43

1

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

+0

Имейте в виду, что пользователи могут также активировать элементы управления с помощью клавиатуры, например, с помощью клавиши TAB. В этом случае ваше решение не будет работать. – detunized 2010-12-03 11:01:56

Смежные вопросы