Автор
|
Тема: прога закрывается...
|
reporter |
опубликован 20-01-2002 15:28 MSK
наверное, замучил всех этим вопросом долбать... стандартный диалог на MFC закрывается по ескейпу, по ентеру... Это все ерунда, люди помогли, врубился. И только что сейчас обнаружил, что и Alt-X и Ctrl-X тоже закрывают... Что за ерунда... И вот он старый вопрос: читая клаву, т.е. OnKeyDown(), сообщение WM_KEYDOWN доходит до меня только если на форме нет ни одной кнопки. Отсюда следует, что сообщение от клавы идет элементу с фокусом. Как же тогда читать клавиатуру ?
|
reporter
|
опубликован 20-01-2002 21:17 MSK
слишком дурацкий вопрос или я что-то не так объяснил ? Плз, хоть какой-нибудь комментарий... |
Muran
|
опубликован 20-01-2002 22:14 MSK
А ты попытайся перехватить сообщение до того, как оно доходит до формы, например переопредели виртуальную функцию OnKeyDown в классе CDialog или CWinApp |
reporter
|
опубликован 21-01-2002 03:20 MSK
блин, или я непроходимо туп, или просто опыта мало, но ни хрена у меня не выходит. У CWinApp вообще нет OnKeyDown, а в CMyDlg (который от CDialog унаследован) как ни пытался переопределять OnKeyDown, ничего не выходит. Может, кусок кода не трудно написать, что к чему... спасибо заранее |
Glite
|
опубликован 21-01-2002 03:51 MSK
Функция PreTranslateMessage у диалога. В неё приходят все сообщения до обработки message map'а. Когда диалог закрывается ему приходят сообщения WM_CLOSE и WM_DESTROY, и ещё можешь юзать DestroyWindow - она из DoModal вызывается. |
reporter
|
опубликован 21-01-2002 04:02 MSK
Неее-ее, мне не надо вообще запрещать закрытие окна, а только чтоб оно закрывалось по саец. кнопке. Вообще, теперь для меня главное все-таки выяснить, как, что и где мне переопределить, чтоб нормально получать сообщения от клавиатуры. Я думаю, то, что подсказал Muran, должно работать, только я видимо, что-то неправильно делаю... |
reporter
|
опубликован 21-01-2002 04:04 MSK
черт, сплю уже... вместо "саец. кнопке" читать "спец. кнопке" :-) |
necer
|
опубликован 21-01-2002 10:46 MSK
PreTranslateMessage Нажатия клавиш лови. |