中国开发网: 论坛: 程序员情感CBD: 贴子 113633
wilddeer
里面有个例子。注意:如果在Dll中是多线程,就要改成发消息
举个例子:

DLL中:
type
TCallBackFunc = procedure(x,y: integer);stdcall;

var
CallBackFunc: TCallBackFunc;

//赋值接口
procedure SetCallBackFunc(Func: TCallBackFunc);stdcall;
begin
CallBackFunc := Func;
end;

DLL中调用:
if assigned(CallBackFunc) then CallBackFunc(CommonData.MousePos.x,CommonData.MousePos.y);
---------------------------
外部调用程序:

type
TCallBackFunc = procedure(x,y: integer);stdcall;

procedure SetCallBackFunc(Func: TCallBackFunc);stdcall; external '../mousehook.dll';

procedure MyCallBack(x,y: integer);stdcall;
begin
Form1.Caption := format('%d:%d',[x,y]);
end;

//赋值
SetCallBackFunc(MyCallBack);
破产是暂时的,而贫穷是永久的。

http://www.FastDevelop.com

相关信息:


欢迎光临本社区,您还没有登录,不能发贴子。请在 这里登录