我建了一个MDI主窗体。想把一个MDI子窗体写入到DLL中去。再在主窗体中调用。
问题就在这里。子窗体被从DLL中调出来的时候就报错。说什么无法创建没有活动的MDI窗体。我把子窗体改成fsNormal就可以调用了不会报错主窗体一直设的是fsMDIForm请问这个问题要怎么解决?谢谢

解决方案 »

  1.   

    你的问题让我想起在http://delphi.about.com/中看到的一篇文章,名为Storing and Calling MDI child in DLL。 但其结论是: MDI child in a DLL? No way!看看这篇文章吧:
    http://delphi.about.com/library/weekly/aa020805a.htm
      

  2.   

    procedure ShowChild(pMainApp:Pointer);stdcall;
    var
      pForm:^TForm;
    begin
      Application.Handle:=TApplication(Pointer(pMainApp^)).Handle;
      pForm:[email protected];
      pForm^:= TApplication(Pointer(pMainApp^)).MainForm;
      fmMain:=TfmMain.Create(nil);
      //*******************************
      fmMain.FormStyle := fsMDIChild;
      fmMain.WindowState := wsMaximized;//保证主窗体以最大化方法显示
      //*******************************
      fmMain.show; 
    end;procedure DLLUnloadProc(Reason: Integer); register;
    begin
      if Reason = 0 then
      begin       
        Application.CancelHint;
        application.Handle := 0;
        if Assigned(fmMain) then FreeAndNil(fmMain);
      end;
    end;exports
      ShowChild;begin
      DllProc := @DLLUnloadProc;
    end.