Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RusFAQ.ru: Программирование на C / C++


РАССЫЛКИ ПОРТАЛА RUSFAQ.RU

/ КОМПЬЮТЕРЫ И ПО / Языки программирования / C/C++

Выпуск № 492
от 12.08.2006, 16:35

Администратор:Калашников О.А.
В рассылке:Подписчиков: 355, Экспертов: 55
В номере:Вопросов: 1, Ответов: 3


Вопрос № 51415: День добрый, коллеги. Вопрос следующий: Каким образом отслеживать перемещение курсора по строкам в CListBox'е (MFC)? Т.е. желательно, если пользователь в списке выделил какой-то Item, то где-то рядом отображается полная информация по нему. Если польз...

Вопрос № 51.415
День добрый, коллеги. Вопрос следующий: Каким образом отслеживать перемещение курсора по строкам в CListBox'е (MFC)? Т.е. желательно, если пользователь в списке выделил какой-то Item, то где-то рядом отображается полная информация по нему. Если пользователь перешёл ниже или выше, то информация автоматом обновляется.... Перебрал все сообщения, которые ClassWisard предлагает - ни фига... По инету тоже пока не докопался до истины...
Отправлен: 07.08.2006, 16:29
Вопрос задал: Nill (статус: Посетитель)
Всего ответов: 3
Мини-форум вопроса >>> (сообщений: 2)

Отвечает: Physicist
Здравствуйте, Nill!

Обрабатывать нужно ON_LBN_SELCHANGE. Получить выделенный элемент можно через GetCurSel(). Обработчик сообщения должен вернуть TRUE.

В MSDN есть даже пример (правда, на WinAPI: ms-help://<зависит от версии MSDN>/shellcc/platform/commctls/listboxes/usinglistboxes.htm), выполняющий то, что Вам нужно.
Ответ отправил: Physicist (статус: Студент)
Ответ отправлен: 07.08.2006, 16:55
Оценка за ответ: 3
Комментарий оценки:
Спасибо, за ответ.
Но MSDN я смотрел по данному вопросу.
В том то и беда, что ON_LBN_SELCHANGE не ловится.... Не могу понять почему, но в обработчик данного сообщения управление не передаётся...

Отвечает: Zitz
Здравствуйте, Nill!

В редакторе формы диалога, второй кнопкой мыши по элементу ListBox -> Events...
Или на Классе диалога второй кнопкой мыши, в контекстном меню Add Windows Message Handler... Там ишем в окошке Class or object to handle идентификатор Вашего ListBox.
Ну или руками довавить в МессаджМап, см. приложение:
Где IDC_LIST1 - идентификатор Вашего ListBox
З.Ы. При смене итема лист бокс шлет нотифай окну родителю.

Приложение:

---------
Успех неизбежен + Думать вообще полезно + Чем сейчас, тем лучше

Ответ отправил: Zitz (статус: Студент)
Ответ отправлен: 07.08.2006, 17:09
Оценка за ответ: 3
Комментарий оценки:
Спасибо за ответ. Это в принципе то же самое что и установка обработчика на ON_LBN_SELCHANGE через ClassWizard.
Это я уже пробовал - висят у меня обработчики на всё что можно - не передаётся им управление... Фигня какая-то на пустом месте. Не могу понять из-за чего...

Отвечает: Melamed
Здравствуйте, Nill!
Попробуй написать потомок от CListBox. В нем обрабатывай обрабодчик системного сообщения WM_MOUSEMOVE и используй метод CListBox::ItemFromPoint.
Если будут вопросы, задавай по внутренней почте.
Желаю удачи
Ответ отправил: Melamed (статус: 2-ой класс)
Ответ отправлен: 07.08.2006, 23:09
Оценка за ответ: 4
Комментарий оценки:
Спасибо за совет.
Потомок от CListBox я писал, но судя по всему сообщение до него не доходило.
По поводу WM_MOUSEMOVE, то во-первых помимо мыши надо отслеживать еще и клаву, а во-вторых мне кажется это не очень нормально - отслеживать каждое движение мыши. Я скачал проект из Codeproject - там все работает как ни странно без WM_MOUSE. Сейчас разбираюсь что за фигня была у меня.
Еще раз спасибо за ответ. Удачи.


Отправить вопрос экспертам этой рассылки

Приложение (если необходимо):

* Код программы, выдержки из закона и т.п. дополнение к вопросу.
Эта информация будет отображена в аналогичном окне как есть.

Обратите внимание!
Вопрос будет отправлен всем экспертам данной рассылки!

Для того, чтобы отправить вопрос выбранным экспертам этой рассылки или
экспертам другой рассылки портала RusFAQ.ru, зайдите непосредственно на RusFAQ.ru.


Форма НЕ работает в почтовых программах The BAT! и MS Outlook (кроме версии 2003+)!
Чтобы отправить вопрос, откройте это письмо в браузере или зайдите на сайт RusFAQ.ru.


© 2001-2006, Портал RusFAQ.ru, Россия, Москва.
Идея, дизайн, программирование: Калашников О.А.
Email: adm@rusfaq.ru, Тел.: +7 (926) 535-23-31
Авторские права | Реклама на портале
Версия системы: 4.35 от 27.07.2006
Яндекс Rambler's Top100

В избранное