如果把几个窗口都放在一个项目里连接成一个EXE文件的话,显示的所有窗口都在一个任务栏里~但是如果把窗口打包到DLL中,在项目动态引用的这个DLL的窗口时,这个新开的窗口就会显示在任务栏里~怎么才能让新开的窗口包含在主窗口内,不让他在任务里出现~

解决方案 »

  1.   

    procedure TForm1.FormCreate(Sender: TObject);
    begin
     SetWindowLong(Form1.Handle,GWL_EXSTYLE,WS_EX_TOOLWINDOW);
     ...
    end;
      

  2.   

    虽然方法是可以把窗口的从任务栏中消失掉,可是当用户选择任务的主窗口时那个显示的子窗口就会被主窗口覆盖,因为子窗口是以ShowModal方式显示的~~只有强行关闭才行~~楼上的方法不可行呀~~
      

  3.   

    dll中调用窗体的代码改成这种形式:
    function ShowForm(AHandle: THandle; ...{your parameters}): Boolean;
    begin
      Application.Handle := AHandle;//加上这条,任务栏就不会出现那个窗体的按钮了。
      ... // your code
    end;在应用程序里调用时:
    ShowForm(Application.Handle, ...);//传入Application.Handle
      

  4.   

    补充:
    function ShowForm(AHandle: THandle; ...{your parameters}): Boolean;
    begin
      Application.Handle := AHandle;//加上这条,任务栏就不会出现那个窗体的按钮了。
      // 以下代码供参考
      with TAForm.Create(Application) do 
      try
        ShowModal;
      finally
        Free;
      end;
    end;