关于怎样把一个对象传递给DLL中的窗体?请高手相助!欢迎讨论! (200分)

  • 主题发起人 主题发起人 沧海
  • 开始时间 开始时间
各位大哥,帮我看看把!
 
你的问题和我在http://www.delphibbs.com/delphibbs/dispq.asp?lid=872902
提出的问题有点相象,我没有得到解决的办法,希望在这个贴子里能得到:)
另你看一下我那个贴子,也许对你有用。:)
 
把主窗体设为fsMDIForm,dll中的窗体设为fsMDIChild。如果主窗体名为frmmain,dll中的
窗体名为frmdll,则frmdll创建时应这样写:frmdll:=Tfrmdll.create(frmmain);
按上面的方法绝对没问题,如果不行,可以给我mail:wbwxws@963.net
 
要在EXE和DLL之间安全地传递Delphi对象,你的EXE和DLL都应该采用包编译方式,
否则的话,通常在引用传递过来的对象是会产生异常。因为在普通编译方式下,同
一对象的实现代码(方法)在EXE和DLL里各有一份拷贝!!!
 
Skyweb is right,
 
那位好心的大侠帮我看看呀!
Dll 中的

function ShowMyForms(App:THandle;MyParent:TWinControl):integer;stdcall;
var
Form1:TForm1;
begin
Result:=1;
Application.Handle :=App;
Try
Form1:=TForm1.Create(MyParent);

// Form1.ScrollBox1.Parent :=MyParent;
// Form1.Show
Form1.Parent :=MyParent;
Form1.Align :=alClient;
Form1.Visible :=True;
ShowMessage('hello');
except
Result:=-1;
end;
end;

测试文件中的
procedure TForm100.Button1Click(Sender: TObject);
begin
ErrorCode:=ShowMyForms(Application.Handle,Panel1);
ShowMessage(InttoStr(ErrorCode));
end;
 
我的DLL中都用到一个Login_Frm:TForm,用来放登录用户名,
连接属性,用户所属的组等,就直接在DLL中生成
Uses DllLogin_Uint;
Function CallForm(MainApp:TApplication;Login_Frm:TLogin_Frm):Boolean;stdcall;
Begin
DLLLogin_Frm:=TDllLogin_Frm.Create(nil);
DLLLogin_Frm.Connection:=Login_Frm.Connection;
...
DLLLogin_Frm.Hide;//用来供其它窗体使用.
End;
其实,这里的DLLLogin_Frm只是从同一个模块中再生成一个实例,赋给它
相同的值而已!
 
to rainxy2002,
可是我怎么在 主程序中生成 DLL 中的类的实例呢?
如果可以做到这点,那么我也不用把 DLL中的实例传递出来了呀!

我直接在主程序中生成 DLL 中的窗体类实例就可以了呀!

那么请问怎样在 DLL 中导出一个类,我可以在主程序中 实例化这个类? 望高手相助!
 
看来好象没人有兴趣了也。

 
我已给你回了妹儿,有代码。有问题再联系。
实在太穷,如果满意,给我多加点分。
 
问题留了这么久也应该结束了。
用 wbwxws, 的方法,我再改进一下可以通过了。
多谢大家的帮助!
 
多人接受答案了。
 
后退
顶部