WM_SysCommand Предотвращение перемещения окна в Delphi - PullRequest
0 голосов
/ 13 января 2010

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

procedure TForm1.WMSysCommand;
begin
   if (Msg.CmdType = SC_MINIMIZE) then
   begin
    form1.Hide;
    show1.Checked :=false;
    hide1.Checked :=true;
    end;
   if (Msg.CmdType = SC_CLOSE) then form1.Close;
end;

Мне также пришлось включить захват для кнопки закрытия, поскольку этот код препятствовал закрытию программы с помощью кнопки закрытия. Что мне нужно помочь, так это как исправить перетаскивание окна программы за полосой заголовка, которая перестала работать с этим кодом.

1 Ответ

6 голосов
/ 13 января 2010

Если вы переопределяете обработку сообщения Windows, вам нужно позаботиться о том, чтобы обработать все возможные случаи или вызвать унаследованный код для всех необработанных случаев:

procedure TForm1.WMSysCommand(var Msg: TWMSysCommand);
begin
   if (Msg.CmdType = SC_MINIMIZE) then
   begin
     Hide;
     show1.Checked := False;
     hide1.Checked := True;
     Msg.Result := 0;
     exit;
   end;
   inherited;
end;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...