Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.08.22;
Скачать: CL | DM;

Вниз

"Правильное" завершение работы программы   Найти похожие ветки 

 
denkop ©   (2004-08-03 02:05) [0]

Как отличить закрытие формы пользователем от закрытия её виндой. WM_ENDSESSION не проходит, хотя может и проходит, но я не правильно его обрабатываю. Короче вот кусок кода:

 public
   procedure GetEndSession(var Msg:TMessage); message WM_ENDSESSION;

......

var
 Trm:byte;
{в онкреат зануляю этот самый трм}

......

procedure TMainForm.GetEndSession(var Msg:TMessage);
begin
 Trm:=1;
 Application.Terminate;
end;

procedure TMainForm.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
if (Settings.MinToTray) and (Trm<>1) then
begin
  MainForm.Visible:=False;
  CanClose:=false;
end;
SettingsForm.WriteSettings;
end;


 
denkop ©   (2004-08-03 02:08) [1]

Ещё забыл. При первой попытке выклбчить компьютер завершается только моя программа. После второй попытки всё остальное. Замучался по два раза шырять завершение работы.

Заранее благодарен за помощь.


 
GuAV ©   (2004-08-03 02:35) [2]


>  Application.Terminate;

The application need not call the DestroyWindow or PostQuitMessage function when the session is ending.

т.е. этого делать не надо. Убери эту строку


> {в онкреат зануляю этот самый трм}


уже не проблема, но тоже незачем.
он и так нуль, а для наглядности можно дописать.
var
Trm:byte = 0;


 
GuAV ©   (2004-08-03 02:50) [3]

А проблема в том что FormCloseQuery происходит до GetEndSession.

попробуй FormClose, чтоб не закрывать - CloseAction:=caNone

или WM_QUERYENDSESSION


 
denkop ©   (2004-08-05 00:19) [4]

Получилось с помощью WM_QUERYENDSESSION совместно с OnClose. Спасибо за помощь.



Страницы: 1 вся ветка

Текущий архив: 2004.08.22;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.054 c
1-1091113225
denis555
2004-07-29 19:00
2004.08.22
Как прочитать файл в Unicode


1-1092006328
dmk
2004-08-09 03:05
2004.08.22
SetBounds на весь экран


1-1092126263
anarhi
2004-08-10 12:24
2004.08.22
Цвета


3-1091089438
Hermit
2004-07-29 12:23
2004.08.22
Вертикальный текст в QRLabel


14-1091217873
Cheater
2004-07-31 00:04
2004.08.22
LOL