My God!
这个问题到底难不难,怎么没人回答?
谢谢各位大虾鼎力相助,本人急用。

解决方案 »

  1.   

    一种方法是通过dll导出函数,传递application到dll里面来.但是可能导致问题.
    最完善的解决办法是dll和exe都build with runtime package!!!至于原因嘛?就是因为这样以后,dll和exe公用了几个全局变量!!!application,screen等!!
      

  2.   

    dll中
    Application.handle=hwnd;
    Application.CreatMdichild(...);
      

  3.   

    我的方法是定义DLL的FORM的属性为MDICHILD,EXE中的主FORM为MDI,调用DLL的一个函数显示其中FORM。
      

  4.   

    “浪人”的回答有点方向,但没有完全代码。
    “泰山”和“小于”把DLL中的MDI窗口看得太过简单了,其实是行不通的。我蛮感兴趣的,待我试试...
      

  5.   

    如上所说
    function TTSale.ShowForm(DCOM: OleVariant; const Provider: WideString;
      AOwner, Application1: OleVariant): HResult;
    var
      p1,p2,p3:longword;
    begin
      p1:=longword(dcom);
      p2:=longword(AOwner);
      p3:=longword(application1);
      application:=TApplication(p3);
      Main:=TMain.Create(TComponent(p2));
      Main.DCom1:=tdcomconnection(p1);
      Main.providername:=provider;
      result:=0;
    end;
      

  6.   

    sorry 有点错误
    代码如下:
    dll中: 
    procedure ShowMdiChild(handle:THandle);
    var Mdiform1:TForm1;
    begin
      Application.Handle:=handle;
      Application.CreateForm(TForm1, Mdiform1);
      Mdiform1.Show;
    end;
    注意该窗体的formstyle=fsmdichild; onclose事件的Action参数未fsFree;在exe中:
    ShowMdiChild(Application.Handle);
    该窗体的formstyle=fsmdiform这样就可以了, dll中的Mdi就这么简单!! 我刚试过 使用的是D6+win2k
      

  7.   

    duzr:
    我已按你的要求把程序源代码寄给你,
    在Delphi 5/Windows 98上运行通过,
    请你试试。