主题:DLL文件中Form的使用(2)
贴出此文之前,未查阅过任何相似文章,如有相同,敬请见谅,并告示(注:本人曾就同一DLL中一窗体调用附窗体,如何实现之问题,请教过一前辈,但前辈笑笑未言),此为我在写动态元件时想到的一方法,结果通过,各位见谅。我为初学,而求学路见艰难,贴出只望对象我一样初学者给点帮助,无他。 library DLLPJ;
uses SysUtils, Classes, Unit1 in 'Unit1.pas' {Form1}, Unit2 in 'Unit2.pas' {Form2};
{$R *.res}
exports ShowMainPRGWin; begin end. ---------- unit Unit1;
interface
uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Unit2,Dialogs, StdCtrls; //1.附窗体单元加在此处 type TForm1 = class(TForm) Button1: TButton; procedure Button1Click(Sender: TObject); private { Private declarations } public { Public declarations } end;
var Form1: TForm1; Form2: TForm2; //2.附窗体定义在此处 // Declare the export function of windows of the main DLL function ShowMainPRGWin(AHandle:THandle):BOOL;StdCall;
implementation
{$R *.dfm} function ShowMainPRGWin(AHandle:THandle):BOOL; begin Form1:=TForm1.Create(Application); Form2:=TForm2.Create(Application); //3.创建附窗体 try Form1.ShowModal; Result:=False; Finally Form1.Free; end; end;
procedure TForm1.Button1Click(Sender: TObject); begin Form2.ShowModal;//4.在主窗体上调用附窗体 end;
end. ------------ unit Unit2;
interface
uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs;
type TForm2 = class(TForm) private { Private declarations } public { Public declarations } end;
var Form2: TForm2;
implementation
{$R *.dfm}
end. ---------- //在其他窗体上调用DLL的定义及方法 procedure ShowMainPRGWin(AHandle:THandle);StdCall External 'DLLPJ.DLL';
ShowMainPRGWin(1); 
|