procedure ShowDllForm(App: TApplication; Parent: TWinControl); stdcall;
begin
  Application := App;
  if not Assigned(DllForm) then
  begin
    DllForm := TDllForm.Create(Application);
    //DllForm.Parent := Parent;
    DllForm.ParentWindow := Parent.Handle;
  end;  DllForm.Show;
end;将dll窗体嵌入到宿主程序中
如果用注释掉的那行代码(DllForm.Parent := Parent;),就有2个问题
1.dll窗体像假死一样,切换窗体里的pagecontrol控件没反应
2.程序退出手动释放时也提示错误如果就用上面的代码就不存在这2个问题,但是又有个新问题,窗体里的控件不会随宿主窗口的变化而自适应

解决方案 »

  1.   

    加上 DllForm.align:=alclient;
    还有,我记得好像最好加上是要 dllform.repaint还是dllform.update  还是什么去了。。忘了
    要不然,这个窗体上的控件的对齐方式有时候会有些问题。
      

  2.   

    是用了 DllForm.align:=alclient;但是dll窗体貌似和宿主窗体一样大了,这样在其内部就有一部分不显示,它并没有去自动适应大小对其