主窗口和子窗口 是默认类型的, 非MDI。子窗口是模态的。当在主窗口中点击菜单后进入子窗口,而将子窗口最小化后主窗口还显示在桌面,并且因为其上有一层模态子窗口,所以主窗口是灰色的不能点最小化按钮,请问这种情况如何处理?

解决方案 »

  1.   

    请问在主窗口的什么事件里能够触发最小化?想主窗口发送的message是否就是  WindowState := wsMinimized? 
      

  2.   

    unit Unit2;
    //子窗体
    interfaceuses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs;type
      TForm2 = class(TForm)
      private
        { Private declarations }
    //    procedure   WndProc(var   Message:   TMessage);   override;
      public
        { Public declarations }
      protected
        procedure   WndProc(var   Message:   TMessage);   override;
      end;var
      Form2: TForm2;implementation
    uses
      Unit1;
    {$R *.dfm}{ TForm2 }procedure TForm2.WndProc(var Message: TMessage);
    begin
      inherited;
      if (Message.Msg = WM_syscommand ) and (Message.WParam = SC_MINIMIZE) then
      begin
        OutputDebugString(PChar('下面控制窗口句柄'));
        PostMessage(Form1.Handle,WM_SYSCOMMAND,SC_MINIMIZE,0);
      end;
    end;end.
      

  3.   

    多谢多谢,已经OK。  还有2个问题1.就是在点击了任务栏上的这个最小化的任务后,本来是想让子窗口还原的,结果只是主窗口还原了,而子窗口仍然显示成任务栏的样子停留在主窗口的左下脚2.另外,主窗口form1已经use了form2,现在form2又要use主窗口form1,这样互相调用是否不太好?希望能赐教!