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

Ваш аккаунт

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

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

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

Как обработать нажатие на "стрелки"?

6.0K
20 июня 2004 года
Toyo
20 / / 03.06.2004
Есть утилитка на основе диалогового окна. Подскажите, плз, как обработать нажатие на стрелки "вверх", "вниз", "вправо", "влево" ?
Мне удалось выяснить следующее:
1.WM_KEWDOWN и WM_CHAR при нажати на стрелки не посылаются.
2. ON_WM_GETDLGCODE реагирует на нажатие на стрелки, но только в том случае, если в окне отсутствуют какие-либо CONTROL-ы. А у меня в окне есть статические элементы. Так что это тоже не работает.
Что же делать?

Буду признателен за помощь.
Спасибо.
4.9K
21 июня 2004 года
mrhx
43 / / 04.04.2004
Цитата:
Originally posted by Toyo
Есть утилитка на основе диалогового окна. Подскажите, плз, как обработать нажатие на стрелки "вверх", "вниз", "вправо", "влево" ?
Мне удалось выяснить следующее:
1.WM_KEWDOWN и WM_CHAR при нажати на стрелки не посылаются.
2. ON_WM_GETDLGCODE реагирует на нажатие на стрелки, но только в том случае, если в окне отсутствуют какие-либо CONTROL-ы. А у меня в окне есть статические элементы. Так что это тоже не работает.
Что же делать?

Буду признателен за помощь.
Спасибо.



Ну, в крайнем случае можешь используя SetWindowsHookEx поставить хук на события клавиатуры:

hHook = SetWindowsHookEx(WH_KEYBOARD, KeybrdProc, NULL, GetCurrentThreadId());

LRESULT CALLBACK KeybrdProc(int code, WPARAM wParam, LPARAM lParam)
{
...
}

430
22 июня 2004 года
craftyfox
157 / / 20.02.2000
Если у тебя MFC-app, то достачно перегрузить
PreTranslateMessage.
(Если и нет - хуки, пожалуй, жирновато будет...:))
6.0K
22 июня 2004 года
Toyo
20 / / 03.06.2004
C хуком и правда работает. Но это крайний случай.

Цитата:
Originally posted by craftyfox
Если у тебя MFC-app, то достачно перегрузить
PreTranslateMessage.
(Если и нет - хуки, пожалуй, жирновато будет...:))


У меня MFC. Расскажи, плз поподробнее о PreTranslateMessage.

430
23 июня 2004 года
craftyfox
157 / / 20.02.2000
Цитата:
Originally posted by Toyo

У меня MFC. Расскажи, плз поподробнее о PreTranslateMessage.



BOOL CYourDlg::PreTranslateMessage(MSG* pMsg)
{
// TODO: Add your specialized code here and/or call the base class
if(pMsg->message==WM_KEYDOWN)
{
//Do what you want
}
return CDialog::PreTranslateMessage(pMsg);
//or other :)
}

че там рассказывать-то?
см MSDN

6.0K
28 июня 2004 года
Toyo
20 / / 03.06.2004
Цитата:
Originally posted by craftyfox
че там рассказывать-то?


Да, действительно все просто.
Спасибо.

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