Вопрос № 28030: Где генерируется сообщение WM_KEYDOWN, когда фокус на дочернем элементе(listbox, edit etc.).
В принципе надо получить ввод с клавиатуры при выбранном child'e, в частности хочу понять куда пристроить код....
Вопрос № 28.030
Где генерируется сообщение WM_KEYDOWN, когда фокус на дочернем элементе(listbox, edit etc.).
В принципе надо получить ввод с клавиатуры при выбранном child'e, в частности хочу понять куда пристроить код.
Приложение:
Отправлен: 20.10.2005, 22:03
Вопрос задал: VampSergey (статус: 1-ый класс)
Всего ответов: 3 Мини-форум вопроса >>> (сообщений: 1)
Отвечает: Татьяна
Здравствуйте, VampSergey!
Дело в том, что когда это сообщение приходит childу, родителю оно соответственно не приходит. Т.е. к примеру, для того, чтобы отлавливать все нажатия клавиш на элементах окна, необходимо отлавливать его у всех ее childов, у меня была похожая проблема, самое простое на мой взгляд решение, это использование хуков, если будет необходимо смогу выслать вам примерчик. Так как пробегаться по дереву на мой взгляд не очень приятно
--------- Нет ничего невозможного!!!
Ответ отправила: Татьяна (статус: 5-ый класс)
Отправлен: 20.10.2005, 22:14 Оценка за ответ: 5 Комментарий оценки: уууууууууу...:((( так и взвыл бы.... не ожидал сдесь хуки использовать... спасибо за ответ буду разбираться!
Отвечает: Jadd
Здравствуйте, VampSergey!
Если нужно вообще ловить WM_KEYDOWN и обрабатывать его только для listboxa, тогда ставь локальный хук. Иначе все контролы ловят это сообщение, т.к. все они окна со своими петлями сообщений.
--------- Если в сердце дверь закрыта, нужно в печень постучаться
Ответ отправил: Jadd (статус: Практикант)
Отправлен: 20.10.2005, 23:32 Оценка за ответ: 5 Комментарий оценки: спасибо, понял.
Отвечает: estiGi
Здравствуйте, VampSergey!
Наверное, тебе все же нужно узнать, как отловить это сообщение, а не как оно генерируется :)
А генерируется оно системой, ловится в WinMain в цикле GetMessage и отправляется дальше, насколько я помню. Где то на РСДН была интересная статья на эту тему
А ловить сообщения для контрола в обработчике главного окна вообще неблагодарное дело. Насколько я помню, нужно разбирать сообщение WM_COMMAND. Легче для контрола написать отдельный обработчик, тогда туда оно все приходит нормальными сообщениями
Ответ отправил: estiGi (статус: 2-ой класс)
Отправлен: 21.10.2005, 01:06 Оценка за ответ: 5 Комментарий оценки: >> а не _как_ оно генерируется я писал _где_, но вобщем ты прав :) Над смыслом сказанного буду думать... Спасибо!