请教高手们啊!!Delphi怎样接收到DLL中的事件? 并响应它!难道是问题太简单!再加(200分) ( 积分: 200 )

  • 主题发起人 主题发起人 月冷无痕
  • 开始时间 开始时间

月冷无痕

Unregistered / Unconfirmed
GUEST, unregistred user!
//-----------------------------以下为动态库中函数指针定义--------------------------------------

typedef void (__closure *TUsbDeviceChangeEvent)(int nStatus,char* strDevLocalName);
//C++Builder是这样定义事件函数的,可以将一个类的函数作为参数传递给FirstCall_Create

typedef void (WINAPI *pFirstCall_Create)(TUsbDeviceChangeEvent);
// EventFunc:事件函数地址
//开始时调用
typedef void (WINAPI *pLastCall_Free)();
//结束时调用
//------------------------------------------------------------------------------


请教高手们啊!!Delphi怎样处理DLL中的事件函数?
 
估计是设置一个回调函数,传递一个事件的指针
Type
TDelphiUsbDeviceChangeEvent = procedure(nStatus integer
strDevLocalName: PChar) of object;

dll的函数可以主调程序的事件方法
 
小弟比较菜,还要请高手们详细指教一下!![:)] 救命啊,可否说得详细些!给点源码吧!
 
定义成回调函数, C 输出的时候要变成 extern "c", 并且以stdcall 输出.

怎么净在 object pascal 区问 C 的问题.
 
正在关注中...................................
 
前辈们,给个调用的源码吧!!自己顶了一天了。
 
一定要 C 代码吗?写着不爽。
 
大概这样吧
TUsbDeviceChangeEvent = procedure(nStatus : Integer
strDevLocalName : PChar) of object;
TFirstCall_Create = procedure(callbackfunc : TUsbDeviceChangeEvent);
TLastCall_Free = procedure;
 
to白大侠[:D]:
我想要delphi响应DLL事件的代码!不是c的代码!请不吝赐教!!
 
但你那个dll是怎么写的,不知道没办法对应
 
type
TUsbDeviceChangeEvent = procedure(nStatus : Integer
strDevLocalName : PChar) of object;
TFirstCall_Create = procedure(callbackfunc : TUsbDeviceChangeEvent);stdcall;
TLastCall_Free = procedure
stdcall;

TEventObject = class
public
class procedure Callback(nStatus : Integer
strDevLocalName : PChar);
end;

procedure TEventObject.Callback(nStatus : Integer
strDevLocalName : PChar);
begin
//响应回调
end;

var
fc : TFirstCall_Create;
begin
//加载DLL函数略
fc(TEventObject.Callback)
//调用
end;
 
回调(call back)阿, windows的函数也有这样的,例如enumwidow.....
 
先感谢各位大侠的帮助,我试一下!!
 
再次感谢各位前辈!!请接分!!按照ysai的方法搞定了,呵呵
 
后退
顶部