ImageVerifierCode 换一换
格式:DOCX , 页数:50 ,大小:39.90KB ,
资源ID:18143462      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/18143462.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(C++委托事件文档格式.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

C++委托事件文档格式.docx

1、(*PEVENT_PARAM_NORETURN)(void*,int);4. typedef(*PEVENT_PARAM_RETURN)(void5. 6. classCNotifyClass7. 8. public:9. CNotifyClass(void);10. CNotifyClass(void);11. 12. public:13. boolRegisterEvent(PEVENT_NOPARAM_NORETURNpFunc1,PEVENT_NOPARAM_RETURNpFunc2,14. PEVENT_PARAM_NORETURNpFunc3,PEVENT_PARAM_RETURN

2、pFunc4,*pParameter);15. UnRegisterEvent();16. 17. DoNotifyEventWork();18. 19. protected:20. PEVENT_NOPARAM_NORETURNm_pNoParam_NoReturn_EventHandler;21. m_pNoParam_Return_EventHandler;22. m_pParam_NoReturn_EventHandler;23. m_pParam_Return_EventHandler;24. 25. protected:26. *m_pEventParameter;27. ;类实现

3、如下:1. #includeNotifyClass.h 2. 3. CNotifyClass:CNotifyClass(void)4. m_pEventParameter(NULL),m_pNoParam_NoReturn_EventHandler(NULL)6. m_pNoParam_Return_EventHandler(NULL)7. m_pParam_NoReturn_EventHandler(NULL)8. m_pParam_Return_EventHandler(NULL)9. 10. 12. CNotifyClass:CNotifyClass(void)13. 15. 17. b

4、ool18. CNotifyClass:19. *pParameter)20. if(NULL!=m_pNoParam_NoReturn_EventHandler)returnfalse;m_pEventParameterpParameter;m_pNoParam_NoReturn_EventHandlerpFunc1;25. m_pNoParam_Return_EventHandlerpFunc2;m_pParam_NoReturn_EventHandlerpFunc3;27. m_pParam_Return_EventHandlerpFunc4;28. true;29. 30. 31. v

5、oid32. CNotifyClass:UnRegisterEvent()33. 34. NULL;35. 36. 37. 38. 39. 40. 41. void42. CNotifyClass:DoNotifyEventWork()43. 44. iResult0;45. (m_pNoParam_NoReturn_EventHandlerNULL)46. m_pNoParam_NoReturn_EventHandler(m_pEventParameter);47. (m_pNoParam_Return_EventHandler48. m_pNoParam_Return_EventHandl

6、er(m_pEventParameter);49. 50. +10;51. (m_pParam_Return_EventHandler52. m_pParam_Return_EventHandler(m_pEventParameter,iResult);53. 54. (m_pParam_NoReturn_EventHandler55. m_pParam_NoReturn_EventHandler(m_pEventParameter,56. 类CNotifyClass声明时要提供类似如下的事件处理函数声明,所有接收事件的对象都要使用如下的函数声明来定义函数(*PEVENT_NOPARAM_NO

7、RETURN)(void*);事件接收对象类通过调用RegisterEvent和UnRegisterEvent注册接收消息或取消注册不再接收消息,当会触发消息的工作方法DoNotifyEventWork被调用时,会检测哪些事件被注册了,被注册了就调用,就如同进行了事件通知。(2)、事件接收对象类或事件处理对象类CRecvEventClass的类定义如下:1. classCRecvEventClass2. 3. public:CRecvEventClass(void);CRecvEventClass(void);7. public:DoWork(intiArg);10. protected:st

8、aticOnNoParamNoReturnEvent(void*pvParam);12. OnNoParamReturnEvent(voidOnParamNoReturnEvent(void*pvParam,OnParamReturnEvent(void16. protected:m_ncNotify;m_nNum;19. ;RecvEventClass.h3. CRecvEventClass:CRecvEventClass(void)4. m_ncNotify.RegisterEvent(OnNoParamNoReturnEvent,OnNoParamReturnEvent,OnParamN

9、oReturnEvent,OnParamReturnEvent,this);6. 8. CRecvEventClass:CRecvEventClass(void)m_ncNotify.UnRegisterEvent();11. 13. int14. CRecvEventClass:iArg)15. m_nNumiArg;m_ncNotify.DoNotifyEventWork();19. 21. void22. CRecvEventClass:*pvParam)23. _tprintf(_T(RunOnNoParamNoReturnEventn);(pvParam*preinterpret_c

10、ast(pvParam);p-29. 30. 31. 32. int33. CRecvEventClass:34. OnNoParamReturnEventn39. 41. 42. else43. 44. 46. void47. CRecvEventClass:48. OnParamNoReturnEventniArg55. 56. 57. int58. CRecvEventClass:59. 60. OnParamReturnEventn61. iRet62. iRet;63. 这里事件接收对象类或事件处理对象类CRecvEventClass在定义时一定要定义同事件触发类CNotifyCla

11、ss提供的方法声明相同的方法来接收处理事件,由于CNotifyClass定义的方法声明是普通的指向函数指针,不包含对象的this指针传递,所以这种方法不能是实例成员函数,只能是静态成员方法,就如同1. static当定义了事件处理方法后,可以通过调用类CNotifyClass的方法RegisterEvent和UnRegisterEvent注册接收消息或取消注册不再接收消息,本例是在构造和析构函数中调用的,当CNotifyClass类的DoNotifyEventWork方法被调用时,就会通过函数指针事件通知到类CRecvEventClass,在事件处理方法中为了能区分CRecvEventClas

12、s的不同实例,所以要在类CNotifyClass的方法RegisterEvent中提供了pParameter参数,通常CRecvEventClass在调用RegisterEvent时传递对象本身的this指针,这样在事件处理方法中就可以通过pvParam参数得到这个指针的类实例的this指针,就像OnNoParamNoReturnEvent中的代码1. CRecvEventClass:3. 9. 可以直接将pvParam参数转化为CRecvEventClass类实例的指针,然后就像成员方法一样访问类实例的其他方法和成员了。(3)、使用的例子及输出1. int_tmain(intargc,_TC

13、HAR*argv)/2个对象,虽然类里用的静态方法,但是不会影响到不同对象的调用,互相不会干扰其他的对象的状态 rec1,rec2;iIn,iOut;iIniOutrec1.DoWork(iIn);StaticFunctionEventtest1,Init:%d,Result:%dn),iOut);30;2,60;rec2.DoWork(iIn);3,TCHARc;_tscanf(_T(%c&c);20. 输出结果为:1. RunOnNoParamNoReturnEvent2. RunOnNoParamReturnEvent3. RunOnParamReturnEvent4. RunOnParamNoReturnEvent5. StaticFunctionEvent10,706. Run7. Run8. Run9. Run10. StaticFunctionEvent30,9011. Run12. Run13. Run14. Run15. StaticFunctionEvent60,120从输出结果上看事件是被顺次调用了,至于程序中的变量值,主要表明这些事件执行的而动作是对应于实例的,不是因为是静态方法就是对应于类的。2、 实现的要点(1)、事件触发类的实现要点a、 事件触发类必须要定义要处理事件的函数声明b、 事件触发类要定义相应函数声明类型的成员变量1. PEVENT_NO

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1