NativeEvent使用

微软官方网站:

http://msdn.microsoft.com/zh-cn/library/ee2k0a7d(v=VS.80).aspx

根据工程需要,对相关方法进行了封装

 

///事件源
[event_source(native)]
class __declspec(dllexport)  CEventSource
{
public:

 CEventSource();
 ~CEventSource();

public:
 //生成事件
 bool DoEvent(void* pPack,int nLength);
 //事件
 __event bool Event(void* pEventData,int nLength);
};

///事件接收
[event_receiver(native)]
class __declspec(dllexport)  CEventReceiver
{
public:
 CEventReceiver();
 ~CEventReceiver();

public:
   
 void HookEvent(CEventSource* pSource,pReceiveEventCallbackFun pReceiveEventCallbackFun,

         void* pReceiveEventCallbackFunUser);

 void UnhookEvent(CEventSource* pSource);
 
private:
 bool AccepEvent(void* pEventData,int nLength);

private:
 //事件回调
 pReceiveEventCallbackFun m_pEventDataCallbackFun;
 void* m_pEventDataCallbackFunUser;
 

};
示例:
//提供应用层使用的回调
static void ReceiveEventCallbackFun(void* pBuffer,int nBufferLen,void* pUser); 
//调用过程
CEventSource* source = new CEventSource(); 
CEventReceiver* receiver = new CEventReceiver(); 
receiver->HookEvent(source,ReceiveEventCallbackFun,this); 
//构造测试数据 
STestParam* temp = (STestParam*)Malloc(STestParamSize); 
temp->m_nType = 256; SafePrintf(temp->m_szInfo,256,"DoEvent: %d",temp->m_nType); 
//发送事件 
source->DoEvent((void*)temp,STestParamSize); 
// Do something
receiver->UnhookEvent(source); 
delete(receiver);
receiver = NULL;
delete(source); 
source = NULL;
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值