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

Ваш аккаунт

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

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

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

Дочернему окну не приходит WM_KEYDOWN

5.1K
01 июля 2008 года
12345678
93 / / 16.12.2006
У меня такая трабла:

Создаю контрол STATIC, меняю обработчик на свой, обрабатываю событие WM_KEYDOWN но когда паклацать клаву - оказываеться WM_KEYDOWN моему контролу не приходит вообще, хотя все остальные события приходят. Таже трабла и при создании собственного дочернего окна.
342
01 июля 2008 года
Yos
209 / / 21.06.2003
Сообщение приходит только в окно имеющее фокус ввода. Если память не изменяет начиная с 2000 ка, фокус ввода и активность окна разделены, те это могут быть разные окна...
5.1K
01 июля 2008 года
12345678
93 / / 16.12.2006
Да уж... Пробовал ставить фокус вручную (SetFocus) - помогает но фокус частенько сам как-то возвращаеться основному окну, и облом... Можно конечно и в главном окне отлавливать клаву, но етот вариант мне не подходит. Сейчас проблема решаеться установкой хука на клаву в своем приложении. Но все таки...
562
01 июля 2008 года
tarekon
175 / / 19.08.2003
WM_GETDLGCODE сам обрабатываешь или доверяешь обработчику static'a? Надо обрабатывать самому.

Функция IsDialogMessage при обработке сообщения определяет, клавиатурное ли оно и организовывает спецобработку. Если, например, пришел TAB, то IsDialogMessage посылает дочерним контролам диалога WM_GETDLGCODE и, в зависимости от их ответа, перемещает фокус клавиатурного ввода. Обработчик static'а возвращает DLGC_STATIC, поэтому фокус его "проскакивает". Надо возвращать что-то более осмысленное. Рекомендую поэкспериментировать.
14
02 июля 2008 года
Phodopus
3.3K / / 19.06.2008
Ну или обрабатывай WM_KEYDOWN в очереди сообщений приложения
5.1K
02 июля 2008 года
12345678
93 / / 16.12.2006
tarekon
Здесь диалог не рассматривается.

Phodopus
Цитата: 12345678
Можно конечно и в главном окне отлавливать клаву, но етот вариант мне не подходит.

14
03 июля 2008 года
Phodopus
3.3K / / 19.06.2008
Цитата:
Ну или обрабатывай WM_KEYDOWN в очереди сообщений приложения



Цитата:
Можно конечно и в главном окне отлавливать клаву, но етот вариант мне не подходит.



ну во-первых я предлагал в очереди приложения, а не окна,
во-вторых думаешь ставить хук на клаву лучше чем обрабатывать сообщения окна/приложения??? совсем нет!

341
04 июля 2008 года
Der Meister
874 / / 21.12.2007
Направлять все сообщения о нажатиях клавиш в очередь сообщений текстовой метки - глюк полнейший. Меняй концепт.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог