Russian Qt Forum

Qt => Общие вопросы => Тема начата: xokc от Июнь 13, 2013, 17:50



Название: Как корректно обработать закрытие консоли
Отправлено: xokc от Июнь 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 "отловить" факт закрытия консольного окна?


Название: Re: Как корректно обработать закрытие консоли
Отправлено: alex312 от Июнь 13, 2013, 19:12
попробуй BOOL CtrlHandler( DWORD fdwCtrlType ) (http://msdn.microsoft.com/en-us/library/windows/desktop/ms685049%28v=vs.85%29.aspx)


Название: Re: Как корректно обработать закрытие консоли
Отправлено: OS2 от Июнь 13, 2013, 22:58
Это в Windows, а в Linux как?


Название: Re: Как корректно обработать закрытие консоли
Отправлено: alex312 от Июнь 13, 2013, 23:07
Это в Windows, а в Linux как?
http://www.thegeekstuff.com/2012/03/catch-signals-sample-c-code/


Название: Re: Как корректно обработать закрытие консоли
Отправлено: xokc от Июнь 14, 2013, 09:48
попробуй BOOL CtrlHandler( DWORD fdwCtrlType ) (http://msdn.microsoft.com/en-us/library/windows/desktop/ms685049%28v=vs.85%29.aspx)
Это пробовал. Частично работает. В том смысле, что "поучаствовать" в процессе завершения получается (удается вызвать свой метод), но всё равно отменить закрытие окна и закрыться "штатно" с вызовом деструктора MyApplication не получается - после отработки моего метода приложение всё равно умирает не совсем штатным образом.


Название: Re: Как корректно обработать закрытие консоли
Отправлено: Fregloin от Июнь 14, 2013, 10:00
повесить обратотчик на atExit()?


Название: Re: Как корректно обработать закрытие консоли
Отправлено: xokc от Июнь 14, 2013, 12:45
Закрытие консольного окна в Windows нажатием на красный крестик не приводит к вызову atExit().


Название: Re: Как корректно обработать закрытие консоли
Отправлено: lit-uriy от Июнь 15, 2013, 15:50
>в процессе завершения получается (удается вызвать свой метод)
если он выполняется в полной мере (без прерывания), то придётся в нём всё разруливать


Название: Re: Как корректно обработать закрытие консоли
Отправлено: xokc от Июнь 20, 2013, 12:12
если он выполняется в полной мере (без прерывания), то придётся в нём всё разруливать
Так сейчас и делаю. Но там корявенько всё как-то выходит.