Форум: "WinAPI";
Текущий архив: 2003.01.27;
Скачать: [xml.tar.bz2];
Вниззакрытие приложения Найти похожие ветки
← →
sen (2002-12-10 11:09) [0]Добрый день.
В моей программе.
На событие запрос на закрытие формы canclose:=false.
Приложение закрывается только при щелчке на всплывающем меню ("закрыть"). Делаю application.terminate
При перезагрузке компа приложение закрываться не хочет (не дает перегрузить).
Вопрос: Как правильно отловить сообщение Windows для закрытия приложения.
Пробовал делать
if msg.message=wm_close then application.terminate;
Handled := True;
Последняя строка вообще странно влияет на закрытие приложения (оно становится незакрываемым даже через всплывающее меню) .
Кто - нибудь может помочь?
← →
Song (2002-12-10 11:11) [1]WM_ENDSESSION/WM_QUERYENDSESSION
А на TForm.onCloseQuery придётся ещё флажок вводить.
← →
sen (2002-12-10 11:34) [2]Спасибо, а какой флажок на TForm.onCloseQuery
← →
Song (2002-12-10 11:41) [3]ну дык просто переменная типа Boolean, которую устаналиваете в сообщении WM_QUERYENDSESSION
Var Flag:Boolen=False;
а в TForm.onCloseQuery будет CanClose:=Flag;
В событии WM_QUERYENDSESSION установите Flag в True
← →
sen (2002-12-11 10:41) [4]Добрый день
Не работает WM_QUERYENDSESSION
Написал следующее:
if msg.message=WM_QUERYENDSESSION
then
begin
Flag:=True;
Handled := True;
application.terminate;
end;
end;
procedure Ttemperaturaform.FormCloseQuery(Sender: TObject;
var CanClose: Boolean);
begin
canclose:=flag;
if flag then showmessage("true") else showmessage("false");
end;
procedure Ttemperaturaform.FormCloseQuery(Sender: TObject;
var CanClose: Boolean);
begin
canclose:=flag;
if flag then showmessage("true") else showmessage("false");
temperaturaform.hide;
end;
при попытке закончить сессию windows показывает false, т.е. flag остается в false
То же самое и в случае WM_ENDSESSION
← →
Song (2002-12-11 11:00) [5]hands.sys...
← →
sen (2002-12-11 11:29) [6]это что значит
Страницы: 1 вся ветка
Форум: "WinAPI";
Текущий архив: 2003.01.27;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.01 c