先请各位高手看一段源码。//******************************** dll **************************
TChildForm = class(TForm)
  private
    FAsChild: Boolean;
    FTempParent: TWinControl;
  protected
    procedure CreateParams(var Params: TCreateParams); override;
    procedure Loaded; override;
  public
    constructor Create(AOwner: TComponent); overload; override;
    constructor Create(AOwner: TComponent; AParent: TWinControl); reintroduce; overload;
    { The method below must be overridden to return either the main menu
      of the form, or nil. }
    function CanChange: Boolean; virtual;
    { The method below must be overridden to return a caption for this form }
    function GetCaption: String; virtual; Abstract;  end;constructor TChildForm.Create(AOwner: TComponent);
begin
  FAsChild := False;
  inherited Create(AOwner);
end;constructor TChildForm.Create(AOwner: TComponent; AParent: TWinControl);
begin
  if AParent <> nil then begin
    FAsChild := True;
    FTempParent := aParent;
  end else
    FAsChild := False;
  inherited Create(AOwner);
end;procedure TChildForm.Loaded;
begin
  inherited;
  if FAsChild then begin
    align := alClient;
    BorderStyle := bsNone;
    BorderIcons := [];        //********** 注意这一句 ****************
    Parent := FTempParent;    Position := poDefault;
  end;
end;procedure TChildForm.CreateParams(var Params: TCreateParams);
Begin
  Inherited CreateParams(Params);
  if FAsChild then Params.Style := Params.Style or WS_CHILD;
end;function TChildForm.CanChange: Boolean;
begin
  Result := True;
end;
type
  Tf_child = class(TChildForm)
    Image1: TImage;
  private
    { Private declarations }
  public
    { Public declarations }
  end;function CreateChild(AHandle: THandle; AParent: TWinControl):TChildForm; stdcall;function CreateChild(AHandle: THandle; AParent: TWinControl):TChildForm; stdcall;
var
  v_Child: TChildForm;
begin
  if Application.Handle <> AHandle then Application.Handle := AHandle;
  
  v_Child := Tf_child.Create(Application, AParent);
  
  if AParent = nil then begin
    Result := nil;
    try
      v_Child.ShowModal;
    finally
      v_Child.Free;
    end;
  end else
    Result := v_Child;
end;//******************* Dll输出 **********************
exports CreateChild;//***************** 调用 ****************************
FLocateWin := CreateChild(Application.Handle, Self);
FLocateWin.Show;
结果 子窗体已经创建,但在主窗体中没有任何显示。这是什么原因?如果将 Parent := FTempParent; 改为
ParentWindow := FTempParent.Handle;
结果会使子窗体覆盖主窗体的菜单和工具条。如果改为
ParentWindow := TForm(FTempParent).ClientHandle;
对其他TWinControl容器没有通用性,该如何解决。还有如何从动态库中调用一个MDI子窗体?希望那位大虾可以帮助我。将非常感谢。