procedure TForm1.WMSysCommand;
begin
if (Msg.CmdType = SC_MAXIMIZE) then
begin
  // 处理代码
  //在这里我进行了一些处理,将窗口变成我要求的样式。
end;
DefaultHandler(Msg);
end;但运行完我处理后的代码后,窗口最大化按钮样式仍然是最大化的按钮样式,而不是正常情况下按下最大化按钮后就显示还原按钮的的样式。而下次在按这个按钮需要按下两次才可以还原,请问这个问题要如何处理?

解决方案 »

  1.   

    再我的代码前面或后面“inherited”,"DefaultHandler(Msg); "都没用,效果就不对了,变成最大化了
      

  2.   

    procedure TForm1.WMSysCommand; 
    begin 
    inherited; // 必须的
    if (Msg.CmdType = SC_MAXIMIZE) then 
    begin 
      // 处理代码 
      //在这里我进行了一些处理,将窗口变成我要求的样式。 改变窗口样式,会再触发另外一些消息。跟踪一下这里代码看。
    end; 
    DefaultHandler(Msg); 
    end; 
      

  3.   

      procedure TForm1.MySysCommand(var message:TMessage);
      begin
          case  message.WParam of
              SC_MINIMIZE:ShowWindow(Handle,SW_HIDE);
              SC_MAXIMIZE:
                begin
                  //加入你的代码
                  ShowWindow(Handle,SW_SHOWMAXIMIZED);
                end;
              SC_RESTORE:ShowWindow(Handle,SW_SHOWNORMAL);
          else
            inherited;
          end;
      end;