Вопрос про закрытие формы...
Есть у меня форма, деструктор её сохраняет полученные в ходе сеанса работы данные в файл, всё работает, если программу закрывать руками...Но если я выхожу из виндов или выключаю комп и при этом программа работает, ничего не сохраняется...Подскажите, как можно это обойти?
Если прога перед глазами у юзверя, то купить ему бесперебойник и написать инструкцию;) А если это опросник и стоит фиг знает где, то сразу лить на сервер, хотя это уже отдельная и обширная тема.
главной формы.
:)
Вставь функцию сохранения в событие OnClose
главной формы.
:)
При аварийном завершении работы программы (а именно это происходит, когд приработающей программе вылетают винды или комп выключают) никакие настройки как правило не сохраняются. Если это критично, то ИМХО надо сохранять полученные данные по мере их поступления или изменения. А юзеру, который выключает комп при работающей программе надо написать инструкцию и драйвер прямых рук поставить.
На событии OnClose главной формы у меня прописано
Form2->Close (), где и происходит сохранение, но оно не происходит:) если программу закрывает принудительно винда
P.S. Это только предположение...Не пинать - не пробовал.
Ребята, я имел ввиду принудительное закрытие программ виндой при выходе, а не обрубание электричества :)
На событии OnClose главной формы у меня прописано
Form2->Close (), где и происходит сохранение, но оно не происходит:) если программу закрывает принудительно винда
Ну винда закрывает программы корректно, по крайней мере пытается, и посылает сообшение WM_QUIT, если мне не изменяет память,
еще могу посоветовать обрабатывать событие формы OnDestroy ...
Ну винда закрывает программы корректно, по крайней мере пытается, и посылает сообшение WM_QUIT, если мне не изменяет память,
еще могу посоветовать обрабатывать событие формы OnDestroy ...
Обрабатывай:
The WM_ENDSESSION message is sent to an application after the system processes the results of the WM_QUERYENDSESSION message. The WM_ENDSESSION message informs the application whether the session is ending.
A window receives this message through its WindowProc function.
LRESULT CALLBACK WindowProc(
HWND hwnd, // handle to window
UINT uMsg, // WM_ENDSESSION
WPARAM wParam, // end-session option
LPARAM lParam // logoff option
);
Parameters
wParam
Specifies whether the session is being ended. If the session is being ended, this parameter is TRUE; otherwise, it is FALSE.
lParam
Specifies whether the user is logging off or shutting down the system. If this parameter includes the ENDSESSION_LOGOFF value, the user if logging off. (Note that this parameter is a bit mask. To test for this value, use a bitwise operation; do not test for equality.)
Windows 2000: If this parameter is zero, the system is shutting down.
Return Values
If an application processes this message, it should return zero.
Remarks
If the wParam parameter is TRUE, the session can end any time after all applications have returned from processing this message. Therefore, an application should perform all tasks required for termination before returning from this message.
The application need not call the DestroyWindow or PostQuitMessage function when the session is ending.
Requirements
Windows NT/2000: Requires Windows NT 3.1 or later.
Windows 95/98: Requires Windows 95 or later.
Header: Declared in Winuser.h; include Windows.h.