回调函数与回调机制_第1页
回调函数与回调机制_第2页
回调函数与回调机制_第3页
回调函数与回调机制_第4页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、1.什么是回调函数回调函数(回调函数(callback Function),顾名思义,用于回调的函数。 回调函数只是一个功能片来决定函数的调用(回调)时机。回调函数包含下面几个特性:属于工作流的一个部分;必须按照工作流指定的调用约定来申明(定义);功能;2. 回调机制回调机制是一种常见的设计模型,他把工作流内的某个功能,按照约定的接口暴露给外部使用者,为外部使用者提供数据,或要求外部使用者提供数据。2. 回调机制回调机制是一种常见的设计模型,他把工作流内的某个功能,按照约定的接口暴露给外部使用者,为外部使用者提供数据,或要求外部使用者提供数据。如上图所示,工作流提供了两个对外接口(获取参数、显

2、示结果),以回调函数的形式实现。“获取参数”“显示结果”回调函数,提供计算结果给工作流使用者。Windows EnumWindows 用于枚举当前系统中的所有顶级窗口,其函数原型为:BOOL EnumWindows(WNDENUMPROC lpEnumFunc, / callback functionLPARAM lParam / application-defined value);其中 lpEnumFunc 是一个回调函数,他用于返回枚举过程中的获得的窗口的句柄。其定义约定为:BOOL CALLBACK EnumWindowsProc(HWND hwnd, / handle to pare

3、nt windowLPARAM lParam / application-defined value);在这个例子中,EnumWindowswindows的所有窗口并EnumWindows工作流的目的是想通过工作流来来获取窗口的句柄以便针EnumWindowslpEnumFunc,用于返回遍历的窗口句柄。EnumWindows 工作流的结束有两个方式:1,用户在回调函数中返回 FALSE;2,再也找不到顶级窗口。我们可以推测 EnumWindows 的实现机制如下:注: 下列代码中的 FindFirstTopWindows(), FindNextTopWindow() 为假设的,Windows

4、 API 没有此函数,只是为了表明 Enumwindows 的内部流程。BOOL EnumWindows(WNDENUMPROC lpEnumFunc, / callback functionLPARAM lParam / application-defined value)BOOLbRet =TRUE;HWND hWnd:FindFirstTopWindows();/ 此函数是假设的,查找第一个顶级窗口/ 当 hWnd 为 0 时表示再也找不到顶级窗口while(hWnd)bRet = (*lpEnumFunc)( hWnd, value ); if( !bRet)break;/ EnumW

5、indows工作流;hWnd:FindNextWindow();/ 此函数是假设的,查找下一个顶级窗口EnumWindows(.)函数中,实现了窗口枚举的工作流,他通过回调机制把用户关心(顶级窗口句柄)EnumWindows的具体实现,用户只要知道, lpEnumFunc EnumWindwos就可以获得想要的窗口句柄。2.2.回调机制应用使用回调机制,可以为工作流实现扩展。 可以把工作流中需要用户干预的,或需要提供给用户可以使用工作流模块提供的功能,这对信息的隐藏也是有作用的。使用回调机制,可以为工作流实现扩展。 可以把工作流中需要用户干预的,或需要提供给用户可以使用工作流模块提供的功能,这

6、对信息的隐藏也是有作用的。3. 回调机制的实现形式回调函数虚拟函数事件example: 以虚函数实现回调机制class CWorkFlowvoid init()_a =0;_b =0;int _a; int _b;public:void Start()/初始化init();/ 调用处理数据Handle( a, b );/ 报告结果Report( a, b );virtual void Handle( int &a, int &b ) =0; virtual void Report( int iRet) = 0;class CMain :public CWorkFlowpublic:void Handle( int &a, int &b)a = a + b/2;a = a + b/2

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论