Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > C/C++: Общие вопросы > ESC |
Автор: Гость_gudok 23.8.2003, 15:41 |
Как сделать , чтобы при нажатии ESC приложение не закрывалось? ![]() |
Автор: RAN 23.8.2003, 17:08 |
Модератор: Задавая подобные вопросы, пишите более подробно об используемых компиляторах и оболочках (MFC, VCL, API). Ваш вопрос пораждает другие вопросы и до сути мы дойдём топика через три (оффтопика) |
Автор: mr.DUDA 23.8.2003, 21:23 |
скорее всего автор имеет ввиду Dialog-based приложение сделанное в Borland C++ Builder |
Автор: Unregistered 24.8.2003, 13:24 |
mr.DUDA Почти угадал. Работаю я в VC++ при помощи MFC. |
Автор: RAN 24.8.2003, 13:56 |
Ну, вот добрались до сути. Посчитай топики ![]() Тебе надо в обрабатывать событие OnKeyDown и отлавливать VK_ESCAPE. Хотя может кто-нибудь другой выход предложит. |
Автор: mr.DUDA 24.8.2003, 14:54 | ||
Переопредели виртуальную функцию OnCancel в своём диалоге, так чтобы она ничего не делала ![]() Это не просто а очень просто: 1) заходишь в ClassWizard 2) выбираешь класс своего диалога в списке "Class name" (например CTestDlg) 3) в списке "Object IDs" выбираешь "IDCANCEL" 4) в списке "Messages" тыцкаешь 2 раза на "BN_CLICKED", жмешь "Ok". Получили обработчик "OnCancel" для класса "CTestDlg". Всё что нам нужно - закомментировать строку "CDialog::OnCancel", чтобы при нажатии ESC, или "Cancel", или "Alt+F4" диалог не закрывался ![]()
|
Автор: RAN 24.8.2003, 21:34 |
Ха, mr.DUDA, я так понял, что крестиком и Alt F4 диалог должен закрываться, а ESC - нет. Я прав, gudok? |
Автор: mr.DUDA 24.8.2003, 22:31 | ||
Если так, то нужно определить метод PreTranslateMessage для диалога, в котором прописать:
ЗЫ, хотя я все-таки думаю, что имелось ввиду именно закрытие окна, а не только реакция на ESC |
Автор: Гость_gudok 25.8.2003, 10:17 |
Всем спасибо. |