Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Системное программирование и WinAPI > Нет сообщения от клавишь


Автор: Гость_Oleg 23.11.2005, 10:03
Создал окно через CreateWindowEx(…) со своей функциональностью (lpfnWndProc). Поместил его на форму Dialog. Работает нормально, но, сообщение WM_KEYDOWN идет только от буквенно-цифровых клавиш, а нужно обрабатывать клавиши – стрелки. Что у меня не так?

Автор: GremlinProg 23.11.2005, 13:04
TranslateMessage есть?
Добавлено @ 13:05
хотя косяк, скорее всего, кроется в фокусе

Автор: Гость_Oleg 23.11.2005, 14:40
TranslateMessage есть конечно, иначе вообще ни чего бы не шло. И фокус похоже тоже ни причём, во первых другие сообщения идут, а во вторых при клике я напрямую ::SetFocus(hWnd); делаю.

Автор: Neitron 23.11.2005, 16:24
Цитата
TranslateMessage есть конечно, иначе вообще ни чего бы не шло.

Немного не так....
Работать будут. Так как TranslateMessage всего лишь.
Цитата
The TranslateMessage function translates virtual-key messages into character messages.


Все же покажи код.

Автор: GremlinProg 23.11.2005, 16:54
Есть ещё вариант, раз говоришь, что диалог держит окно...

1. Диалог использует DefDlgProc, вместо DefWindowProc.
2. Если ты сам оперируешь диалогом, вызывая CreateDialog, то нужно использовать IsDialogMessage
3. Перепиши сообщение WM_GETDLGCODE, и возвращай DLGC_WANTMESSAGE - это весь вклад с клавиатуры, по умолчанию диалог не устанавливает ничего, но DefDlgProc таким макаром фильтрует сообщения

Какие стили у диалога установлены?

Автор: Гость_Oleg 24.11.2005, 09:34
Спасибо, третий пункт сработал.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)