Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> ESC 
:(
    Опции темы
Гость_gudok
  Дата 23.8.2003, 15:41 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Как сделать , чтобы при нажатии ESC приложение не закрывалось? smile.gif
  Вверх
RAN
Дата 23.8.2003, 17:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Экс. модератор
Сообщений: 709
Регистрация: 14.3.2003
Где: Щёлково Моск.обл.

Репутация: 5
Всего: 6



Модератор: Задавая подобные вопросы, пишите более подробно об используемых компиляторах и оболочках (MFC, VCL, API). Ваш вопрос пораждает другие вопросы и до сути мы дойдём топика через три (оффтопика)
PM MAIL ICQ   Вверх
mr.DUDA
Дата 23.8.2003, 21:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


3D-маньяк
****


Профиль
Группа: Экс. модератор
Сообщений: 8244
Регистрация: 27.7.2003
Где: город-герой Минск

Репутация: 25
Всего: 232



скорее всего автор имеет ввиду Dialog-based приложение сделанное в Borland C++ Builder


--------------------
user posted image
PM MAIL WWW   Вверх
Unregistered
Дата 24.8.2003, 13:24 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











mr.DUDA
Почти угадал.
Работаю я в VC++ при помощи MFC.
  Вверх
RAN
Дата 24.8.2003, 13:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Экс. модератор
Сообщений: 709
Регистрация: 14.3.2003
Где: Щёлково Моск.обл.

Репутация: 5
Всего: 6



Ну, вот добрались до сути. Посчитай топики smile.gif.
Тебе надо в обрабатывать событие OnKeyDown и отлавливать VK_ESCAPE. Хотя может кто-нибудь другой выход предложит.
PM MAIL ICQ   Вверх
mr.DUDA
Дата 24.8.2003, 14:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


3D-маньяк
****


Профиль
Группа: Экс. модератор
Сообщений: 8244
Регистрация: 27.7.2003
Где: город-герой Минск

Репутация: 25
Всего: 232



Переопредели виртуальную функцию OnCancel в своём диалоге, так чтобы она ничего не делала smile.gif

Это не просто а очень просто:
1) заходишь в ClassWizard
2) выбираешь класс своего диалога в списке "Class name" (например CTestDlg)
3) в списке "Object IDs" выбираешь "IDCANCEL"
4) в списке "Messages" тыцкаешь 2 раза на "BN_CLICKED", жмешь "Ok".

Получили обработчик "OnCancel" для класса "CTestDlg". Всё что нам нужно - закомментировать строку "CDialog::OnCancel", чтобы при нажатии ESC, или "Cancel", или "Alt+F4" диалог не закрывался smile.gif
Код
void CTestDlg::OnCancel()
{
// TODO: Add extra cleanup here

// CDialog::OnCancel();      <------ закомментировали
}


Это сообщение отредактировал(а) mr.DUDA - 24.8.2003, 14:55


--------------------
user posted image
PM MAIL WWW   Вверх
RAN
Дата 24.8.2003, 21:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Экс. модератор
Сообщений: 709
Регистрация: 14.3.2003
Где: Щёлково Моск.обл.

Репутация: 5
Всего: 6



Ха, mr.DUDA, я так понял, что крестиком и Alt F4 диалог должен закрываться, а ESC - нет. Я прав, gudok?
PM MAIL ICQ   Вверх
mr.DUDA
Дата 24.8.2003, 22:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


3D-маньяк
****


Профиль
Группа: Экс. модератор
Сообщений: 8244
Регистрация: 27.7.2003
Где: город-герой Минск

Репутация: 25
Всего: 232



Если так, то нужно определить метод PreTranslateMessage для диалога, в котором прописать:
Код
BOOL CTestDlg::PreTranslateMessage(MSG* pMsg)
{
    // TODO: Add your specialized code here and/or call the base class
    if((pMsg->message == WM_KEYDOWN || pMsg->message == WM_KEYUP)
        && pMsg->wParam == VK_ESCAPE)
            return FALSE; // не обрабатывать данное сообщение

    return CDialog::PreTranslateMessage(pMsg);
}


ЗЫ, хотя я все-таки думаю, что имелось ввиду именно закрытие окна, а не только реакция на ESC




--------------------
user posted image
PM MAIL WWW   Вверх
Гость_gudok
Дата 25.8.2003, 10:17 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Всем спасибо.
  Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0785 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.