实现了调用封装FORM的DLL, 但是不能实现让被调用DLL的FORM显示在主调程序一个区域里,比如一个PANEL作为这个DLL里窗体的Parent,窗体不管多大,就显示在PANEL里,PANEL作为DLL里窗体的客户区,试了一个例子:传入PANEL的HANDLE,窗体是可以显示,达到要求,但是窗体对外部不响应了,不知道为什么,请教各位高手
procedure showSysLog(AHandle :TApplication;ACaption :pChar; ParentHandle :TPanel);stdcall;export;
  var
    dllForm : TFrmSysLog;
  begin
    Application.Handle := AHandle;
    dllForm := TFrmSysLog.Create(Application);
    try
      dllForm.Caption := ACaption;
      Windows.SetParent(dllForm.Handle, AParentHandle);
      dllForm.Align := alClient;
      dllForm.ShowModal;
    finally
      dllForm.Free;
    end;
  end;

解决方案 »

  1.   

    对了, 函数的参数错了,AHandle 以及ParentHandle都是LongWord类型,搞错了
      

  2.   

    我想要:
    [email protected]
    谢谢。
      

  3.   

    procedure showSysLog(AHandle :TApplication;ACaption :pChar; ParentHandle :THandle);stdcall;export;  //应改成这样    Application.Handle := AHandle;
        dllForm := TFrmSysLog.Create(Application);
        try
          dllForm.Caption := ACaption;
          dllForm.Align := alClient;
          dllForm.Show;
          dllForm.ParentWIndow := AParentHandle;  //传入的应该是Panel的Handle    finally
          dllForm.Free;
        end;
      end;