MainForm(MDIForm)调用DLL中的子窗体childForm,然后子窗体中ShowModal出来一个窗口。这个时候,如果我把切换(Alt+Table)到其他程序里面,再单击任务栏中的MainForm图标,程序不能被打开,图标抖两下。
另外,我的MainForm和ChildForm工程都选中了“build with runtime packages”

解决方案 »

  1.   

    将主程序的Application、Screen对象付给dll
      

  2.   

    我showModal窗体创建如下:
    ModalForm := TModalForm .CraeteParent(Application.MainForm.Handle);
      

  3.   

    不得不自己顶一下:
    下面是我的解决方法,但是有问题:
    在MainForm上面放一个ApplicationEvents控件,在OnMessage事件中截取消息,设断点跟踪知道任务栏图标单击的消息值是49341,但是这个值不是一定,我把机器重起它就变成了49340。我的机器是win2000 advance server,我想在其他版本的Windows里面可能它的值也不相同。但我觉得应该有一个Windows定义的消息宏吧,但不知道是那个,望各位大侠帮帮我,很着急!
    procedure TFMain2.ApplicationEvents1Message(var Msg: tagMSG;
      var Handled: Boolean);
    begin
        if msg.message = 49341 then
        begin
          if not Assigned(FLogin) then
          begin
            Screen.ActiveForm.Show;
            Inherited
          end;
        end;
    end;
      

  4.   

    CraeteParent(Application.MainForm.Handle)试试
    用宏也可以,不过想过。。
      

  5.   

    在主程序中加個控件
    ApplicationEvents1
    在其 OnDeactivate 中處理
    procedure TFormLogin.AppEventsConsoleDeactivate(Sender: TObject);
    begin
      Windows.SetActiveWindow(Application.Handle);
    end;
    這樣就能解決問題了!
      

  6.   

    aiirii,谢谢你底回复,试了一下你的方法还是不行
    我可以把示例程序发给大家,谁能帮我解决,给我留给EMAIL
    谢谢