Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Реакция на нажатие клавиши в CListCtrl

6.6K
01 апреля 2004 года
Lily
5 / / 01.04.2004
Прошу помочь!!!
Есть виртуальный CListCtrl. Когда выбрана какая-нибудь строка, при нажатии на клавиатуре любой клавиши(кроме стрелок) фокус перемещается на первую строку.
Как избавиться от этого?
319
01 апреля 2004 года
xelos
577 / / 27.02.2003
Цитата:
Originally posted by Lily
Прошу помочь!!!
Есть виртуальный CListCtrl. Когда выбрана какая-нибудь строка, при нажатии на клавиатуре любой клавиши(кроме стрелок) фокус перемещается на первую строку.
Как избавиться от этого?


отлавливать сообщение о нажатии клавиши, и если это не стрелки - игнорировать его. Для этого, имхо, лучше создать свой класс, наследуемый от CListCtrl и перегрузить обработчик OnChar.

6.6K
01 апреля 2004 года
Lily
5 / / 01.04.2004
Отлавливаю, но ничего не получается. В обычном списке это проходит, а вот в виртуальном - нет.
319
01 апреля 2004 года
xelos
577 / / 27.02.2003
Цитата:
Originally posted by Lily
Отлавливаю, но ничего не получается. В обычном списке это проходит, а вот в виртуальном - нет.


погоди... работу с виртуальным списком ты как организуешь?? потому что сообщения, по идее, работают только с окнами

6.6K
02 апреля 2004 года
Lily
5 / / 01.04.2004
Цитата:
Originally posted by xelos

погоди... работу с виртуальным списком ты как организуешь?? потому что сообщения, по идее, работают только с окнами



Ну а чем тебе CListCtrl со стилем LVS_OWNERDATA не окно? Заполняю список в обработчике LVN_GETDISPINFO. Сообщения я отлавливаю в диалоге где этот самый список и размещен в OnNotify.
Если в обычном списке при нажатии клавиши посылается только LVN_KEYDOWN, то виртуалиный вслед за ним посылает еще несколько
сообщений LVN_ITEMCHANGED с намерением отменить focus и select текущего элемента и установить его на первый(в смысле нулевой). А зачем... спрашивается ??

319
02 апреля 2004 года
xelos
577 / / 27.02.2003
Цитата:
Originally posted by Lily


Ну а чем тебе CListCtrl со стилем LVS_OWNERDATA не окно? Заполняю список в обработчике LVN_GETDISPINFO. Сообщения я отлавливаю в диалоге где этот самый список и размещен в OnNotify.
Если в обычном списке при нажатии клавиши посылается только LVN_KEYDOWN, то виртуалиный вслед за ним посылает еще несколько
сообщений LVN_ITEMCHANGED с намерением отменить focus и select текущего элемента и установить его на первый(в смысле нулевой). А зачем... спрашивается ??


попробуй отловить эти лишние сообщения в PreTranslateMessage в диалоге - до того как они дошли до получателя.
а насчет странного поведения CListCtrl не в курсе...

6.6K
02 апреля 2004 года
Lily
5 / / 01.04.2004
Цитата:
Originally posted by xelos

попробуй отловить эти лишние сообщения в PreTranslateMessage в диалоге - до того как они дошли до получателя.
а насчет странного поведения CListCtrl не в курсе...



А как мне распознать нужное это сообщение LVN_ITEMCHANGED или лишнее, если по параметрам оно ничем не отличается от такого же, но когда я намерено выбираю нулевой элемент? Я конечно и это делала, но тогда первая строка не выбирается ни какими способами.

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог