请问回调函数的注册问题!

xhbpla 2006-09-12 10:49:16
如题,回调函数一般在什么地方注册?
注册后,怎么使用?
...全文
566 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
icao 2006-09-13
  • 打赏
  • 举报
回复
我的说法有误,CALLBACK不是关键词,只是一个说明调用约定和命名约定的宏。具体定义在windef.h中。
muroachanf 2006-09-12
  • 打赏
  • 举报
回复
回调函数的意思是,你向某一个系统注册一个函数地址,然后该系统会自动调用这个函数,

反正就是一个回调函数指针的过程.
OOPhaisky 2006-09-12
  • 打赏
  • 举报
回复
没太理解楼主的意思
xhbpla 2006-09-12
  • 打赏
  • 举报
回复
楼上说什么啊
iryuiu 2006-09-12
  • 打赏
  • 举报
回复
徭協吶芙曝頼撹・萩嶷仟鞠村芙曝・・・
xhbpla 2006-09-12
  • 打赏
  • 举报
回复
GciStatus AdInit(const GciAddress* address_vector)
{
int number_of_pcos;
int i;

ACMTime max_timeout;
max_timeout.time_val = 60;
max_timeout.unit = Gcimin;

/* Init the ACM module set the max timeout to one hour and the internal
time scale to micro seconds. */
if(ACMInit(&max_timeout, Gcius) == GciNotOk) {
AdPrintErrorMessage();
return GciNotOk;
}
/* register timeout handler typically the GciTimeout function */
if(ACMRegisterTimeoutHandler(&GciTimeout) == GciNotOk) {
AdPrintErrorMessage();
return GciNotOk;
}

/* register a Receive handler, typically the GciReceive function */
if(ACMRegisterReceiveHandler(&GciReceive) == GciNotOk) {
AdPrintErrorMessage();
return GciNotOk;
}

/* Register default Decode handler */
if(ACMRegisterDefaultDecodeHandler(&ACMDefaultDecoder) == GciNotOk) {
AdPrintErrorMessage();
return GciNotOk;
}


/* Connect all pcos */
number_of_pcos = GciGetNoOfPCOs();
for(i = 0;i < number_of_pcos; i++) {
if(ACMConnect(GciGetPCO(i), &(address_vector[i]), ACMClient, MAX_ENCODING_BUFFER) != GciOk) {
AdPrintErrorMessage();

return GciNotOk;
}
}



return GciOk;
}

比如在上面这段初始化的程序中,注册了好几个处理函数,
我不明白的是,象这一点注册函数『比如ACMRegisterDefaultDecodeHandler(&ACMDefaultDecoder)』是怎么实现的?
healer_kx 2006-09-12
  • 打赏
  • 举报
回复
CALLBACK可不是啥关键词啊。。。很普通的,无非是一个stdcall而已。


回调说白了,只是一个概念上的东西而已,函数,函数指针,仿函数,函数对象,delegate,普通接口,连接点,都可能是回调的。

至于注册,就是把上面那些玩意保存下来而已。
YoungBee611 2006-09-12
  • 打赏
  • 举报
回复
结合相关的API"注册"
icao 2006-09-12
  • 打赏
  • 举报
回复
先说明一下回调函数的定义。
回调函数就是在模块A中定义注册,在B运行时被调用的函数。
定义中关键的是必须是在B运行时被调用,如果被模块A自己调用,那就不算了。这也是回调call back的意义。
如:
Windows应用程序算作A的话,Windows系统就是B。
WndProc对窗口消息的处理例程就是典型的回调函数,它在注册窗口类时被定义。

wc.lpfnWndProc = MainWndProc;
RegisterClass( &wc );

定义回调函数,VC++提供了关键词CALLBACK,
type CALLBACK WndProc(){...};


64,281

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧