WM_SysCommand阻止在delphi中移动窗口

Eri*_*rik 0 forms delphi messages

我使用以下代码捕获我的程序的最小化按钮何时被按下,以便我可以从任务栏隐藏表单,并因此最小化到系统托盘.

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;
Run Code Online (Sandbox Code Playgroud)

我不得不将捕获放入关闭按钮,因为此代码阻止程序通过关闭按钮关闭.我需要帮助的是如何修复已经停止使用此代码的标题栏拖动程序窗口.

mgh*_*hie 6

如果覆盖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;
Run Code Online (Sandbox Code Playgroud)