0

我使用以下代码来捕获按下程序的最小化按钮的时间,以便我可以从任务栏中隐藏表单,从而最小化到系统托盘。

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;

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

4

1 回答 1

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;
于 2010-01-13T08:15:00.760 回答