码迷,mamicode.com
首页 > 其他好文 > 详细

回调函数

时间:2017-05-05 17:14:48      阅读:119      评论:0      收藏:0      [点我收藏+]

标签:指针   结构   htm   模块   oid   stat   this   static   arc   

http://www.cnblogs.com/ioleon13/archive/2010/03/02/1676621.html

1 类A想告诉类B一件事情,通过回调函数来实现,而不在是通过

 

1)在B类模块定义了回调函数a()的原型

  typedef void (*SCT_XXX)(LPVOID lp, const CBParamStruct& cbNode); SCT_XXX是回调函数名称,lp是回调上下文,CBParamStruct是回调参数,一般由于要回调的参数不止一个,所以定义一个结构体比较方便。

2)注册回调函数

  为了让模块B知道自己将要使用的回调函数,必须有一个函数或语句来注册回调函数

  注册回调函数的定义遵循void RCF_XXX(SCT_XXX pfn, LPVOID lp); RCF_XXX是注册函数名,pfn是回调函数名称(是指针),lp是回调上下文。一般在A模块初始化完B模块后调用,将A模块中定义的回调函数地址赋值给pfn,lp赋值为this。 

3)

  首先将回调函数声明成静态的,static void  CF_XXX(LPVOID lp, const CBParamStruct& cbNode); 函数的参数必须与B模块中回调函数原型的参数保持一致。

  初始化B模块时,调用注册函数将模块A中声明的回调函数CF_XXX的地址传给pfn,即pfn=CF_XXX;(函数名称CF_XXX其实是个指针,指向回调函数的地址) 。

回调函数

标签:指针   结构   htm   模块   oid   stat   this   static   arc   

原文地址:http://www.cnblogs.com/liuzhipenglove/p/6813603.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!