最近编写的软件出现了在windows任务栏上出现了多个窗口,原来是只有一个窗口的,窗口的图标也是application的图标,现在出现了多个窗口,并且窗口的图标都变成了windows的默认图标,这个可能是哪里引起的?

解决方案 »

  1.   

    dll里面的窗体?
    调用时是否需要传主程序的Handle进去
    Application.Handle := MainHandle;
      

  2.   

    动态创建窗体时用:TXXXForm.Create(Application);保证没问题。
    但若用DLL封装窗体,就要把Application.Handle传给窗体。。
      

  3.   

    var     
        ret:integer; 
    if   ret   =   Error_ALREADY_EXISTS   then 
        Application.MessageBox( '系统已在运行! ', '提示 ',mb_OK);
      

  4.   

    以前遇到过 在win7系统上遇到过,Xp系统没问题,好像是将这个改为 MainFormOnTaskbar:=false; 试试
      

  5.   

    有时messagebox的api调用时,也会多出一个来
    Handle参数不要用0,用application.handle或可避免有时窗体的Createparams里Params.WndParent设置为application.handle也会有帮助
    当然,如前几位所说,在dll中的窗体是要将主机程序的application.handle传过去才可以
      

  6.   

    var
      stl: integer;
    begin
      stl := GetWindowLong(Form1.handle,GWL_EXSTYLE); 
      SetWindowLong(Form1.handle,GWL_EXSTYLE,stl and $FFFBFFFF);
      ...
      

  7.   

    起初我也想是否可能和dll的有关,后来我修改了代码,所有的dll都不载入,在主程序主界面上直接show一个窗口(TForm),一样的现象。