Реакция на нажатие клавиши в CListCtrl
Есть виртуальный CListCtrl. Когда выбрана какая-нибудь строка, при нажатии на клавиатуре любой клавиши(кроме стрелок) фокус перемещается на первую строку.
Как избавиться от этого?
Прошу помочь!!!
Есть виртуальный CListCtrl. Когда выбрана какая-нибудь строка, при нажатии на клавиатуре любой клавиши(кроме стрелок) фокус перемещается на первую строку.
Как избавиться от этого?
отлавливать сообщение о нажатии клавиши, и если это не стрелки - игнорировать его. Для этого, имхо, лучше создать свой класс, наследуемый от CListCtrl и перегрузить обработчик OnChar.
Отлавливаю, но ничего не получается. В обычном списке это проходит, а вот в виртуальном - нет.
погоди... работу с виртуальным списком ты как организуешь?? потому что сообщения, по идее, работают только с окнами
погоди... работу с виртуальным списком ты как организуешь?? потому что сообщения, по идее, работают только с окнами
Ну а чем тебе CListCtrl со стилем LVS_OWNERDATA не окно? Заполняю список в обработчике LVN_GETDISPINFO. Сообщения я отлавливаю в диалоге где этот самый список и размещен в OnNotify.
Если в обычном списке при нажатии клавиши посылается только LVN_KEYDOWN, то виртуалиный вслед за ним посылает еще несколько
сообщений LVN_ITEMCHANGED с намерением отменить focus и select текущего элемента и установить его на первый(в смысле нулевой). А зачем... спрашивается ??
Ну а чем тебе CListCtrl со стилем LVS_OWNERDATA не окно? Заполняю список в обработчике LVN_GETDISPINFO. Сообщения я отлавливаю в диалоге где этот самый список и размещен в OnNotify.
Если в обычном списке при нажатии клавиши посылается только LVN_KEYDOWN, то виртуалиный вслед за ним посылает еще несколько
сообщений LVN_ITEMCHANGED с намерением отменить focus и select текущего элемента и установить его на первый(в смысле нулевой). А зачем... спрашивается ??
попробуй отловить эти лишние сообщения в PreTranslateMessage в диалоге - до того как они дошли до получателя.
а насчет странного поведения CListCtrl не в курсе...
попробуй отловить эти лишние сообщения в PreTranslateMessage в диалоге - до того как они дошли до получателя.
а насчет странного поведения CListCtrl не в курсе...
А как мне распознать нужное это сообщение LVN_ITEMCHANGED или лишнее, если по параметрам оно ничем не отличается от такого же, но когда я намерено выбираю нулевой элемент? Я конечно и это делала, но тогда первая строка не выбирается ни какими способами.