利用DLL封装重用窗体的问题——————在线等待!!!!
大家好:
我用Delphi 7 写了一个串口通讯应用程序,它的“工程文件”的代码如下:
************************************************************************
program Project1;
uses
Forms,
Unit1 in 'Unit1.pas' {Form1};
{$R *.res}
begin
Application.Initialize;
Application.CreateForm(TForm1, Form1);
Application.Run;
end.
*************************************************************************
这个应用程序能实现一个完整的通讯功能。现在我想把它生成DLL格式的动态连接库
文件,用来让非Delphi程序调用。
请问各位高手我应该怎么改呢?请前辈们指教。
问题点数:20、回复次数:6Top
1 楼flyforlove(吾将远去)回复于 2003-12-01 17:05:11 得分 0
如果你这个程序用了控件,必须要用form当容器的话,
那就在工程文件里定义创建窗体,撤销窗体,以及你想要调用的函数。
如果你没有用什么控件也不用form做容器的话,
就不要封装form了,按照一般的dll文件做法,直接把你想要调用的函数输出就好了。
Top
2 楼flyforlove(吾将远去)回复于 2003-12-01 17:06:52 得分 0
http://expert.csdn.net/Expert/FAQ/FAQ_Index.asp?id=68276Top
3 楼wchb(漂零)回复于 2003-12-01 17:20:16 得分 0
flyforlove(为情飞)
您好:
我的这个程序用了控件,必须要用form当容器。请您简单的给我个提示好吗?没有别的输出
函数,只是为了让非Delphi程序调用这个动态连接库是出现这个应用程序窗体。
请指导。
我先到http://expert.csdn.net/Expert/FAQ/FAQ_Index.asp?id=68276 看看太谢谢你了。Top
4 楼wchb(漂零)回复于 2003-12-01 18:12:06 得分 0
怎么没人回答了啊啊》???
俺还不明白啊!
第一次真的不知道怎么做啊 ?
求求了啊 !!!!!!!!!!!!!!????????????????Top
5 楼flyforlove(吾将远去)回复于 2003-12-01 21:55:25 得分 20
http://expert.csdn.net/Expert/FAQ/FAQ_Index.asp?id=68276
这个帮助不是已经说得很清楚了吗?
你还有什么不明白的?
我给你一个简单的示例,你自己按照改吧。
dll工程文件
library Project2;
uses
SysUtils,
Classes,
forms,
Unit2 in 'Unit2.pas' {Form1};
{$R *.res}
procedure LoadForm(AppHandle:THandle);stdcall;
begin
Application.Handle:=AppHandle;
Form1:=TForm1.Create(Application);
Form1.Show;
end;
procedure UnLoadForm();stdcall;
begin
if Assigned(Form1) then
FreeAndNil(Form1);
end;
exports
LoadForm,
UnLoadForm;
begin
end.
调用dll的工程unit1.pas
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
Button2: TButton;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
procedure LoadForm(AppHandle:THandle);stdcall;external 'Project2.dll';
procedure UnLoadForm();stdcall;external 'Project2.dll';
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject); //打开窗体。
begin
loadform(application.Handle);
end;
procedure TForm1.Button2Click(Sender: TObject); //关闭窗体。
begin
UnLoadForm();
end;
end.
Top
6 楼TOBCB(修炼DELPHI)回复于 2003-12-02 09:33:57 得分 0
与这个类似,帮忙看看:
http://expert.csdn.net/Expert/topic/2516/2516793.xml?temp=.2864191Top




