CListViewCtrl и потеря фокуса
От: gordienkos Россия  
Дата: 01.04.06 15:12
Оценка:
Здравствуйте!

Столкнулся я со следующей проблемой:
Есть контрол CListViewCtrl, со стилем LVS_REPORT. Хочется заставить его при потере фокуса каким-то образом выделять последний выбранный item. Завел я значит переменную, в которой будет храниться индекс последней выбранной строки. И по NM_CUSTOMDRAW в ItemPrePaint выделяю этот item цветом.
Вопрос собственно когда и как эту переменную обновлять.

Варианты, которые я пробывал:
1. Если ее обновлять по NM_CLICK|NM_RCLICK, то в случае если пользователь нажал кнопку мыши на item'e, а отпустил в другом месте, нотификация не приходит, а собственный фокус CListViewCtrl перемещается (по WM_LBUTTONDOWN|WM_RBUTTONDOWN чтоли) -- получается рассинхронизация.

2. Если обрабатывать WM_LBUTTONDOWN, то в этот момент GetSelectedIndex возвращает еще старый индекс.

3. NM_KILLFOCUS тоже не подходит, т.к. если кликнуть в не активную область CListViewCtrl, фокус в контроле остается, NM_KILLFOCUS не приходит, выделение item'a цветом тоже отсутствует.

4. При стиле LVS_SHOWSELALWAYS ведет себя похоже на п.3.

sergo
sergo
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.