- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
PAGE
PAGE # / 4
初蛤代工作盂获取蓉纽void In卩 utHnr吊int
初蛤代工作盂
获取蓉纽
void In卩 utHnr吊int 》
显不站果 void Report( int ret)
prints L . ret ):
j 显示结果
void Reportf Int ret)
回调函数与回调机制
1.什么是回调函数
回调函数(callback Function ),顾名思义,用于回调的函数。 回调函数只是一个功能片
段,由用户按照回调函数调用约定来实现的一个函数。回调函数是一个工作流的一部分,由工作流 来决定函数的调用(回调)时机。回调函数包含下面几个特性:
? 属于工作流的一个部分;
? 必须按照工作流指定的调用约定来申明(定义);
? 他的调用时机由工作流决定,回调函数的实现者不能直接调用回调函数来实现工作流的
功能;
2.回调机制
回调机制是一种常见的设计模型,他把工作流内的某个功能,按照约定的接口暴露给外部使用 者,为外部使用者提供数据,或要求外部使用者提供数据。
工作流
获取雄尅
void lnputPar-am(int da) (
3 = 12*3;
帛理内存
如上图所示,工作流提供了两个对外接口(获取参数、显示结果),以回调函数的形式实现
获取参数”回调函数,需要工作流使用者设定工作流计算需要的参数 显示结果”回调函数,提供计算结果给工作流使用者。
再以Windows 的枚举顶级窗体为例。函数 EnumWindows 用于枚举当前系统中的所有顶级
窗口,其函数原型为:
BOOL En umWi ndows(
WNDENUMPROC IpE numFu nc , // callback fun ction
LPARAM IParam // applicatio n-defi ned value
);
其中lpEnumFunc 是一个回调函数,他用于返回枚举过程中的获得的窗口的句柄。其定义约
疋为:
BOOL CALLBACK En umWi ndowsProc(
HWND hwnd , // han dle to pare nt wi ndow
LPARAM lParam // applicatio n-defi ned value
);
在这个例子中,En umWi ndows 是一个工作流,这个工作流用于遍历 win dows 的所有窗口并
获得其句柄。用户使用 En umWi ndows 工作流的目的是想通过工作流来来获取窗口的句柄以便针
对特定的一个或多个窗口进行相关处理。 于是EnumWindows 就扩展岀接口 lpEnumFunc ,用
于返回遍历的窗口句柄。
EnumWindows 工作流的结束有两个方式: 1,用户在回调函数中返回 FALSE ; 2,再也找不
到顶级窗口。我们可以推测 En umWi ndows 的实现机制如下:
注:下列代码中的 Fi ndFirstTopWi ndows(). Fin dNextTopWi ndow() 为假设的,
Win dows API 没有此函数,只是为了表明 En umwi ndows 的内部流程。
BOOL En umWi ndows(
WNDENUMPROC lpEnumFunc , // callback function
LPARAM lParam // applicatio n-defi ned value
)
{
BOOL bRet = TRUE;
此函数是假设的,查找第一个HWND hWnd = ::Fi ndFirstTopWi ndows(); //
此函数是假设的,查找第一个
顶级窗口
// 当hWnd 为0时表示再也找不到顶级窗口
while( hWnd )
{
bRet = ( *lpE numFu nc )( hWnd, value );
if( !bRet)
break; // 终止 EnumWindows 工作流;
此函数是假设的,查找下一个顶级窗hWnd = ::Fi ndNextWi ndow(); //
此函数是假设的,查找下一个顶级窗
口
在EnumWindows(..J 函数中,实现了窗口枚举的工作流,他通过回调机制把用户关心(顶级
窗口句柄)的和枚举工作流分开,用户不需要知道 En umWi ndows 的具体实现,用户只要知道,
设定了 lpEnumFunc 函数,然后把函数指针传给 EnumWindwos 就可以获得想要的窗口句柄。
2.回调机制应用
使用回调机制,可以为工作流实现扩展。 可以把工作流中需要用户干预的,或需要提供给用户
的数据以回调的模式提供给用户。而用户不需要知道整个工作的流程,只需知道回调函数的说明就 可以使用工作流模块提供的功能,这对信息的隐藏也
您可能关注的文档
最近下载
- 黑臭河道整治工程施工组织设计.doc VIP
- 天一大联考海南省2025—2026学年高三学业水平诊断(一)政治(含答案).docx
- 坑塘治理施工方案.docx VIP
- 猪、牛、羊定点屠宰项目环评(新格式)环境影响报告表.pdf VIP
- 2025美国心脏协会和美国儿科学会新生儿复苏、儿童基础生命支持和儿童高级生命支持指南更新解读.pptx VIP
- 工程流体力学名词解释和简答题大全.docx
- 大众奥迪诊断系统ODIS7.21用户手册.pdf VIP
- 小学数学与科学跨学科课程融合人工智能的实践研究教学研究课题报告.docx
- 福建奔驰-威霆-产品使用说明书-威霆 2013款 3.0L-FA6523-威霆用户手册.pdf VIP
- 闭合导线计算表(自动计算).xls VIP
原创力文档


文档评论(0)