dll的调用问题,急! (100分)

  • 主题发起人 主题发起人 jetman
  • 开始时间 开始时间
J

jetman

Unregistered / Unconfirmed
GUEST, unregistred user!
我想用一个窗体作为一个dll,
主程序中调用怎么调用这个dll窗体呢?
谁能给一个简单的例子么?
谢谢!!
 
library About;
uses
SysUtils,
Classes,
CreatAboutUnit in 'unit1.pas';

exports
CreatAbout Index 1 name 'CreatAbout',
==================================
Unit unit1;

Interface

Uses
Windows, Messages, SysUtils, Classes, Graphics, Forms;

Type
TFormAbout = Class(TForm)
Private
{ Private declarations }
Public
{ Public declarations }
End;

Function CreatAbout (FormHandle : THandle;) : Boolean; stdcall;

Var
FormAbout : TFormAbout;

Implementation

{$R *.DFM}

Function CreatAbout(FormHandle : THandle;) : Boolean;
Begin
.......
End;

End.

=====================================================
主程序

function CreatAbout(FormHandle : THandle;):THandle;stdcall;
external 'About.dll' name 'CreatAbout';
^^^^^^^^^^假设是这个DLL名字
...........

procedure TForm1.button1Click(Sender: TObject);
begin
CreatAbout(Form1.handle);
end;



 
在DLL里包含一个方法,在这个方法里CREATE一个FORM,然后SHOW出来就可以了。:)
很简单的
 
应该是在DLL中输出函数吧,
方法怎么输出?我还没学过,呵呵。
 
使用 export 关键字
 
jetman:以上答案滿意嗎?不滿意請繼續,否則請結束
 
unit UnitGetDate;

interface

uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, Buttons, ComCtrls, ExtCtrls;

type
TfrmGetDate = class(TForm)
Bevel1: TBevel;
MonthCalendar1: TMonthCalendar;
bbtnOK: TBitBtn;
bbtnCancel: TBitBtn;
procedure MonthCalendar1DblClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
frmGetDate: TfrmGetDate;
Function GetDate:TDate;export;
implementation

{$R *.DFM}
Function GetDate:TDate;
begin
frmGetDate:=TfrmGetDate.Create(Application);
try
if frmGetDate.ShowModal=IDOK then
Result:=frmGetDate.MonthCalendar1.Date
else frmGetDate.Close;
Finally
frmGetDate.Free;
end;
end;

procedure TfrmGetDate.MonthCalendar1DblClick(Sender: TObject);
begin
GetDate;
end;

end.
 
使用DLL文件中封装的窗口
http://www.csdn.net/develop/article/10/10919.shtm
 
接受答案了.
 
后退
顶部