Форум: "WinAPI";
Текущий архив: 2006.03.12;
Скачать: [xml.tar.bz2];
ВнизПри закрытии программы - минимизация в трей Найти похожие ветки
← →
Chaser © (2005-12-19 11:54) [0]Требуется, чтобы в программе при нажатии на крестик (системные кнопки, кнопка "Сlose"), программа не закрывалась, а минимизировалась в трей.
Я делаю так:
procedure TForm1.WMSYSCOMMAND(var msg: TMessage);
begin
inherited;
if (msg.WParam=SC_MINIMIZE) or (msg.WParam=SC_CLOSE)
then HideMainForm; // минимизируемся
end;
procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
if cancl=true
then CanClose:=true;
if cancl=false
then CanClose:=false;
end;
Соответственно в программе есть кнопка "Выход", и в ней написано:
cancl:=true;
Но при выключении компьютера, он не выключается как раз потому, что программа не может закрыться.
Причем если делать без "CanClose" (вообще убрать процедуру "FormCloseQuery"), то сообщение "(msg.WParam=SC_CLOSE)" почему-то не обрабатывается.
Как это исправить?
Или есть другие способы минимизации в трей?
← →
Leonid Troyanovsky © (2005-12-19 12:52) [1]
> Chaser © (19.12.05 11:54)
> if (msg.WParam=SC_MINIMIZE) or (msg.WParam=SC_CLOSE)
if ((msg.WParam and $FFF0) = SC_MINIMIZE ) or ((msg.WParam and $FFF0)..
> if cancl=true
> then CanClose:=true;
> if cancl=false
> then CanClose:=false;
CanClose := cancl;
> Как это исправить?
При обработке WM_QUERYENDSESSION установить cancl := True;
{msg.Result := LResult( True )}
--
Regards, LVT.
← →
Chaser © (2005-12-19 13:59) [2]
> > Chaser © (19.12.05 11:54)
>
>
> > if (msg.WParam=SC_MINIMIZE) or (msg.WParam=SC_CLOSE)
>
> if ((msg.WParam and $FFF0) = SC_MINIMIZE ) or ((msg.WParam
> and $FFF0)..
>
> > if cancl=true
> > then CanClose:=true;
> > if cancl=false
> > then CanClose:=false;
>
> CanClose := cancl;
>
> > Как это исправить?
>
> При обработке WM_QUERYENDSESSION установить cancl := True;
>
> {msg.Result := LResult( True )}
>
> --
> Regards, LVT.
if ((msg.WParam and $FFF0) = SC_MINIMIZE)
or ((msg.WParam and $FFF0)=SC_CLOSE)
then HideMainForm; // минимизируемся
Все равно программа закрывается, а не минимизируется.
>При обработке WM_QUERYENDSESSION установить cancl := True;
>{msg.Result := LResult( True )}
Можно подробнее?
← →
Leonid Troyanovsky © (2005-12-19 14:11) [3]
> Chaser © (19.12.05 13:59) [2]
> if ((msg.WParam and $FFF0) = SC_MINIMIZE)
> Все равно программа закрывается, а не минимизируется.
Дык, это лишь первая неточность.
> >При обработке WM_QUERYENDSESSION установить cancl := True;
> Можно подробнее?
Сделать обработчик сообщения WM_QUERYENDSESSION, в котором:
cancl := True;
inherited;
--
Regards, LVT.
← →
I am (2005-12-19 14:17) [4]Не изобретай велосипед. Воспользуйся комонентом CoolTrayIcon
Страницы: 1 вся ветка
Форум: "WinAPI";
Текущий архив: 2006.03.12;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.019 c