爽!

解决方案 »

  1.   

    主程序的工程文件:
    program Main;uses
      Forms,controls,
      UFmMain in 'UFmMain.pas' {FmMain},
      ULogin in 'ULogin.pas' {DlgLogin};{$R *.res}begin
      Application.Initialize;
      Application.CreateForm(TFmMain, FmMain);
      Application.Run;
    end.Dll的工程文件
    library Dll1;     uses
      SysUtils,Forms,
      Classes,
      UFmDll in 'UFmDll.pas' {fmDll};{$R *.res}
    procedure ShowDllForm(pMainApp:Pointer);export; stdcall;
    var
      pForm:^TForm;
    begin
      Application.Handle:=TApplication(Pointer(pMainApp^)).Handle;
      pForm:[email protected];
      pForm^:= TApplication(Pointer(pMainApp^)).MainForm;
      fmDll:=TfmDll.Create(nil);  fmDll.FormStyle:=fsMDIChild;
    //  fmDll.WindowState := wsMaximized;
      fmDll.Show;
    end;
    procedure Activate;stdcall;
    begin
      if Assigned(fmDll) then fmDll.BringToFront;
    end;procedure DLLUnloadProc(Reason: Integer); register;
    begin
      if Reason = 0 then
      begin
        Application.CancelHint;
        application.Handle := 0;
        if Assigned(fmDll) then FreeAndNil(fmDll);
      end;
    end;exports ShowDllForm,Activate;
    begin    
      DLLProc := @DLLUnloadProc;
    end.
      

  2.   

    有个问题,这样做了子窗口是显示出来了,但,有没有发现,子窗口接收不到TAB键,即一按TAB就跑到主程序中去了,而在主程序中生成的子窗口是可以得到TAB键的。
    如何解决???????