科技时代新浪首页 > 科技时代 > 软件 > 正文

C++中建立对象间消息连接的系统方法(2)


http://www.sina.com.cn 2005年02月23日 10:10 天极yesky

  文/项飞

  事件对象

  事件名 回调对象指针 回调函数指针

“event” pointerCBO pointerToCBF或

pointerTOCBSF

- - - - - -


  AddCallBack: 注册事件名和指向回调函数,回调对象的指针

  CallCallBack: 在回调表中,检索注册在指定事件上回调函数并调用它们

  事件发生时,调用CallCallBack函数

  对事件event进行处理的成员函数

  从CallBack类继承的回调表callBackList, 成员函数AddCallBack和CallCallBack。

  当回调函数为静态成员函数或普通C函数时, pointerToCBO为NULL。

  事件名是回调表callBackLis中的检索关键字。

  回调对象中其它成员函数

  CallBack类的成员函数AddCallBack用来将回调函数注册到事件对象的回调表中。它有两个重载版本:

void CallBack::AddCallBack(char *event,CallBackFunction cbf,CallBack *p);
void CallBack::AddCallBack(char *event,CallBackStaticFunction cbsf);


  其中,第一个AddCallBack用来将某回调对象的成员函数注册到事件对象的回调表中。第二个AddCallBack用来将或某回调类的静态成员函数注册到事件对象的回调表中。在上参数表中,event是指向事件名字符串的指针,p是指向回调对象的指针,cbf和cbsf分别是指向成员函数及静态成员函数(或普通函数)的指针。当回调函数来自某回调对象SomeObject时,传递成员函数指针应采用如下格式:

(CallBackFunction)&SomeObject::MemberFunctionName; 传递SomeObject类的某静态成员函数指针应采用格式:
(CallBackStaticFunction)& SomeObject::FunctionName;传递程序中普通函数指针时,只需传递函数名即可。


  CallBack类的成员函数void CallBack::CallCallBack(char *ename, CallData calldata = NULL)用来调用注册在事件ename上的所有回调函数。其中,calldata为数据指针(CallData实际上就是void*,详见程序清单)。事件对象可通过它向回调对象传递有用的数据。该成员函数通常在事件对象的成员函数中调用,因为通常只有事件对象的成员函数才能改变对象的内部数据,从而使某些事件发生。

  成员函数RemoveCallback用来删除注册在事件对象上的回调函数。它的三个重载版本依次为:

void CallBack::RemoveCallBack(char *event,CallBackFunction cbf,CallBack *p);

void CallBack::RemoveCallBack(char *event,CallBackStaticFunction cbsf);

void CallBack::RemoveCallBack(char *event);


  其中,event,cbf,cbsf,p等参数和成员函数AddCallBack中各参数一样。第一个RemoveCallBack用于删除注册在事件event上某回调对象的一个成员函数。第二个RemoveCallBack用于删除注册在事件event上的某普通函数或某回调类的一个静态成员函数。第三个RemoveCallBack用于删除注册在事件event上的全部回调函数。

  二、CallBack类的使用方法

  使用CallBack类,可按以下步骤进行:

  1.确定程序中哪些对象间存在关系,需要建立消息连接。并确定在各特定消息连接关系中,哪个对象是事件对象,哪个对象是回调对象。

  2.事件对象类和回调对象类都必须从CallBack类继承,以获得回调支持。

  3.为事件对象注册回调数据。包括:事件名,回调函数名,指向回调对象的指针。

  4.当你感兴趣的事件发生时,在事件对象类引发事件的成员函数中调用CallCallBack函数。

  下面是一个具体的例子。通过它你会对Callback类的使用方法有进一步的了解。

[上一页]  [1]  [2]  [3]  [4]  [下一页]


  点击此处查询全部C++新闻

评论】【应用软件】【推荐】【 】【打印】【下载点点通】【关闭
 

 
新 闻 查 询
关键词



彩 信 专 题
东方美女
迷人风情性感姿态
金鸡送福
恭喜发财图铃拿来
请输入歌曲/歌手名:
更多专题   更多彩信
 
 



科技时代意见反馈留言板 电话:010-82628888-5828   欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 会员注册 | 产品答疑

Copyright © 1996 - 2005 SINA Inc. All Rights Reserved

版权所有 新浪网