初学者:怎样做带窗体的dll文件。(50分)

  • 主题发起人 主题发起人 yunxi126
  • 开始时间 开始时间
Y

yunxi126

Unregistered / Unconfirmed
GUEST, unregistred user!
如题。。。
 
老弟,你可以这样:
uses
SysUtils,
forms,//这个一定要
Classes;
{$R *.res}
procedure test(tt:string);stdcall; //tt是在主程序中传过来的form的名称
var myform:tform;
begin
myform:=tform.Create(nil);
myform.Name:=tt;
myform.Left :=100;
myform.Top :=100;
myform.Width :=200;
myform.Height :=200;
myform.Show;
end;

exports test;
begin
end.
/////////////////在主程序中调用test
 
好的。我试试。 谢谢。。
 
除了这个还有没有别的方法。 。光做一个form没用啊。我还放要很多的东西在里同。
 
要写在里面,你不可以自己定义吗?
 
你要的是resource包吧,这里遍地都是,随便搜搜吧
 
看我的网站 网站 http://bbs.8isp.cn/?u=233 上面有答案
 
下列步骤本人已在D7下测试通过:
1、在application中,把begin..end之间的东西去掉
2、把project改成library
3、在uses和{$R *.RES}后面,begin end前面,加:
procedure CreateDllForm(Parameter:Longint);stdcall;
var
//这里定义要显示的Dll窗体
Form1:TForm1;
begin
Application.Handle:=Parameter;
Form1:=TForm1.Create(Application);
try
Form1.ShowModal;
finally
Form1.Free;
Form1:=nil;
end;
end;

exports CreateDllForm;
然后编译,即完成dll.

4.implementation后面增加应用说明:
procedure CreateDllForm(Parameter:Longint);stdcall;external 'project1.dll';

5.在buttonclick里面,增加:
CreateDllForm(Application.Handle);


如果要将一个项目全部转化成dll窗体,需要做处理,
首先,选择一个做主窗体,这个主窗体和其他的不产生联系,只是调用其他的(如果有联系,需要声明..麻烦).

其次,把其他的窗体放在一个Project里面,做成library,在project resource中,有几个Form搞几个CreateDllForm函数,

最后,把其他窗体中原来的调用窗体的show方法全部改成现在的调用dll的方法,

完成,相当于其他的所有窗体是一个project,在里面,全局变量啊什么的都有效.
 
看我的网站 网站 http://bbs.8isp.cn/?u=233 上面有答案
 
后退
顶部