我在dll中所定义的函数如下
procedure showform(hand:HWND;str:string;ole:TOleContainer);
var
strstream:TFileStream;
begin
  strstream:=TFileStream.Create(str,fmOpenReadWrite,0);
  with tfrmole.Create(nil) do
  begin
    Ole.DestroyObject;
    Ole.LoadFromStream(strstream);
  end;
  strstream.Free;
end;
然后我在另一个窗体中使用dll,用的是静态调用
但是提示说,这个窗体中的ole找不到父窗体。
说明:我在dll中的窗体中无ole控件,在使用的窗体中有ole控件。要急死了,各位帮忙啊!

解决方案 »

  1.   

    我加了这句了,但是老是提示说找到不到,我原来在dll中有一个窗体上有ole控件,那时候使用就没有问题,但是我去掉之后把ole作为一个参数时在调用dll的窗体中就提示就没有ole ‘s parent window.
      

  2.   

    首先你的DLL的参数类型就有错误!!不能使用String(不想出错的话)。
      

  3.   

    export后要加 Stdcall呀,在调用时也要加 stdcall。
    我要100分。 ^_^
      

  4.   

    我都加了,我就是写的代码就是简单写了一下表示我想实现的功能,现在用string倒是没有出错,就是ole倒是老出错,我就想知道这个错误怎么解决,就是在动态连接库的工程中,声明一下ole这个参数,然后我到静态调用的这个工程中,想直接赋给该工程中某个窗体的ole控件,就老是提示说有这个错误。分不是问题的,只要能解决问题!
      

  5.   

    exports要写。其他好象没有什么问题
      

  6.   

    string在运行的时候一般不会有错误,但运行的结果一般是不正确的,建议你改为pchar
      

  7.   

    with tfrmole.Create(nil) do
    ->
      with tfrmole.Create(hand) do