我的DLL有两个入口函数,如下:
用这个入口函数可以把参数传过来
function ShowReportForm_old(hHandle:THANdle;ACaption:string;lstReportObj:TReportObjectListClass):Tform;stdcall;
下面的不可以:
ShowReportForm_new(App:TApplication;ACaption:string;lstReportObj:TReportObjectListClass):Tform;
请问这是什么原因???
APPLICATION 和APPLICATION.handle的区别是????
用这个入口函数可以把参数传过来
function ShowReportForm_old(hHandle:THANdle;ACaption:string;lstReportObj:TReportObjectListClass):Tform;stdcall;
下面的不可以:
ShowReportForm_new(App:TApplication;ACaption:string;lstReportObj:TReportObjectListClass):Tform;
请问这是什么原因???
APPLICATION 和APPLICATION.handle的区别是????
你的名字代表你
2、TApplication和TApplication.Handle本质是一样的,只是表现的形式不一样一个是对象,一个是句柄,所以按理说是没有问题的,在DLL中你需要将TApplication的对象或Applcaition.Handle赋值到DLL的Application的相关信息
如:
DLL:
var
DLLApp: TApplication;
procedure DLLProc(App: TApplication; ....); stdcall;
begin
Application := App;
....
end;//出口函数定义
procedure DllUnLoadProc(Reason: Integer); register;
begin
if Reason = DLL_PROCESS_DETACH then
begin
Application := pDllApplication;
Screen := pDllScreen;
end;
end;//DLL出口
begin
pDllApplication := Application;
pDllScreen := Screen;
DllProc := @DLLUnloadProc;
end.