Russian Qt Forum
Июнь 15, 2024, 23:39 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Как корректно обработать закрытие консоли  (Прочитано 6934 раз)
xokc
Птица говорун
*****
Offline Offline

Сообщений: 976



Просмотр профиля
« : Июнь 13, 2013, 17:50 »

Qt 5.0, Windwows 8. Имею консольное приложение вида:
Код
C++ (Qt)
int main(int argc, char *argv[])
{
   MyApplication app(argc, argv);
   return app.exec();
}
 
Обнаружил, что если закрыть окно консоли через крестик в правом верхнем углу, то деструктор MyApplication не вызывается. Можно ли с использованием Qt "отловить" факт закрытия консольного окна?
Записан
alex312
Хакер
*****
Offline Offline

Сообщений: 606



Просмотр профиля
« Ответ #1 : Июнь 13, 2013, 19:12 »

попробуй BOOL CtrlHandler( DWORD fdwCtrlType )
Записан
OS2
Самовар
**
Offline Offline

Сообщений: 186



Просмотр профиля WWW
« Ответ #2 : Июнь 13, 2013, 22:58 »

Это в Windows, а в Linux как?
Записан
alex312
Хакер
*****
Offline Offline

Сообщений: 606



Просмотр профиля
« Ответ #3 : Июнь 13, 2013, 23:07 »

Это в Windows, а в Linux как?
http://www.thegeekstuff.com/2012/03/catch-signals-sample-c-code/
Записан
xokc
Птица говорун
*****
Offline Offline

Сообщений: 976



Просмотр профиля
« Ответ #4 : Июнь 14, 2013, 09:48 »

Это пробовал. Частично работает. В том смысле, что "поучаствовать" в процессе завершения получается (удается вызвать свой метод), но всё равно отменить закрытие окна и закрыться "штатно" с вызовом деструктора MyApplication не получается - после отработки моего метода приложение всё равно умирает не совсем штатным образом.
Записан
Fregloin
Супер
******
Offline Offline

Сообщений: 1025


Просмотр профиля
« Ответ #5 : Июнь 14, 2013, 10:00 »

повесить обратотчик на atExit()?
Записан
xokc
Птица говорун
*****
Offline Offline

Сообщений: 976



Просмотр профиля
« Ответ #6 : Июнь 14, 2013, 12:45 »

Закрытие консольного окна в Windows нажатием на красный крестик не приводит к вызову atExit().
Записан
lit-uriy
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3880


Просмотр профиля WWW
« Ответ #7 : Июнь 15, 2013, 15:50 »

>в процессе завершения получается (удается вызвать свой метод)
если он выполняется в полной мере (без прерывания), то придётся в нём всё разруливать
Записан

Юра.
xokc
Птица говорун
*****
Offline Offline

Сообщений: 976



Просмотр профиля
« Ответ #8 : Июнь 20, 2013, 12:12 »

если он выполняется в полной мере (без прерывания), то придётся в нём всё разруливать
Так сейчас и делаю. Но там корявенько всё как-то выходит.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.072 секунд. Запросов: 23.