__怎么隐藏主窗体??? 100分相送!!!我想要一个这样的功能: frmMain为主窗体,frmSmall为一控制主窗体显示/隐藏的小窗体.启动frmMain主窗体后,点最小化,frmMain主窗体将隐藏,且在任务栏也不能看见,但此时在电脑左上角显示frmSmall窗体,
如果想要显示主窗体frmMain,可以单一下frmSmall窗体,这时,主窗体frmMain显示,但frmSmall窗体隐藏.
就是上面这样一个简单的功能,我试了N久就是不成功,望各位大侠帮帮忙!!!

解决方案 »

  1.   

    Application.ShowMainForm:=false
    设置窗体的onformclick事件,procedure可以写成 
    Hide;   
          Form2.Show
    这类形式
      

  2.   

    不显示在任务栏可以在OnCreate事件中写入
    SetWindowLong(Application.Handle, GWL_EXSTYLE,GetWindowLong(Application.handle, GWL_EXSTYLE)or WS_EX_TOOLWINDOW AND NOT WS_EX_APPWINDOW);但是主窗体最小化,其他窗体也会最小化的
      

  3.   

    但是主窗体最小化,其他窗体也会最小化的------ 这是其中一个问题,还有一个是:我在主窗体里的FormCreate里,写了如下代码:
      frmSmall:= TfrmSmall .Create(self);
      Application.ShowMainForm:=false;
      mainform.Hide;  
      frmSmall.Left:=0;
      frmSmall.Top:=0;
      frmSmall.Width:= 100;
      frmSmall.Height:= 50;
      frmSmall.Show;
    但是mainform主窗体没有被隐藏,而且,主窗体最小化,frmSmall也被最小化了.
      

  4.   

    按照你的要求写了一个project code:program Project1;uses
      Forms,
      Unit1 in 'Unit1.pas' {Form1},
      Unit2 in 'Unit2.pas' {Form2};{$R *.res}begin
      Application.Initialize;
      Application.CreateForm(TForm1, Form1);
      Application.Run;
    end.
    form1 code:unit Unit1;interfaceuses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs;type
      TForm1 = class(TForm)
      private
        procedure WMSYSCOMMAND(var msg:TMessage);message WM_SYSCOMMAND;
      public
        { Public declarations }
      end;var
      Form1: TForm1;implementationuses Unit2;{$R *.dfm}procedure TForm1.WMSYSCOMMAND(var msg:TMessage);
    begin
      if msg.WParam = SC_MINIMIZE then
      begin
        inherited;
        ShowWindow(Application.Handle, SW_HIDE);
        form2:=TForm2.Create(Application);
        SetWindowPos(form2.Handle,HWND_TOPMOST,10,10,100,130,0);
        form2.ShowModal;
      end
      else
        inherited;
    end;end.
    form2 code:unit Unit2;interfaceuses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs;type
      TForm2 = class(TForm)
        procedure FormClick(Sender: TObject);
      private
        { Private declarations }
      public
        { Public declarations }
      end;var
      Form2: TForm2;implementationuses Unit1;{$R *.dfm}procedure TForm2.FormClick(Sender: TObject);
    begin
      ShowWindow(Application.Handle, SW_NORMAL);
      Close;
    end;end.
      

  5.   

    看了"Forever_Young " 的代码,突然一下子明白了,这其实真的简单得不能再简单了,哈...
    这个和VC里的消息机制都是一样的,唉,都是基于windows系统的,消息机制当然一样啦,可惜我怎么就没有想到呢?汗一个!
    同时,非常感谢"Forever_Young ",下午我一定结贴.
      

  6.   

    SetWindowPos(form2.Handle,HWND_TOPMOST,10,10,100,130,0);
    这句是关键吧