如题。要显示的窗口并非MDI子窗口。希望此窗口不受Application的最大最小状态影响,相对独立。

解决方案 »

  1.   

    通过winproc过滤消息即可这里要过滤的消息是wm_syscommand
      

  2.   

    我测了3个消息,wm_syscommand,wm_size,wm_showwindow,最后终于有点成果,总算第三次就找到了这个消息。
      应用在最小化和恢复时给应用中的窗口发的消息不是wm_syscommand,也不是wm_size,而是wm_showwindow.他只是将窗口置为隐藏。这是我刚才测试的结果。我原来也以为拦截wm_syscommand消息就可以搞定,后来发现错了。
      你用wndproc可以同时拦截所有的消息,需要重载。对于你这种情况,写个简单的消息处理过程就搞定了。
    下面是不希望最小化的form的代码
    unit Unit2;interfaceuses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, StdCtrls;type
      TForm2 = class(TForm)
      private
        procedure WMshowwindow(var msg : TWMshowwindow);message wm_showwindow;
        { Private declarations }
      public
        { Public declarations }
      end;
    var
      Form2: TForm2;implementation{$R *.dfm}
    procedure Tform2.WMshowwindow(var msg : TWMshowwindow);
    begin
      if msg.Show = false then exit;
      inherited;
    end;end.