WM_SysCommand阻止在delphi中移动窗口

时间:2010-01-13 06:33:17

标签: delphi forms 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;

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

1 个答案:

答案 0 :(得分: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;