- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
VC回调函数及使用方法
回调函数说白了就是事件响应程序,Windows的每个消息可以理解为一个事件,事件的响应代码要由用户自己来定义。用户定义了事件响应的代码,但还要Windows知道这段代码的位置(要不然Windows就不知道如何去调用,这也没有用),于是用户需要将回调函数的指针告诉Windows,最典型的例子是在窗口类的结构(WNDCLASS)中给lpfnWndProc分量赋回调函数指针值。
回调函数的参数格式是由回调函数的调用者(一般是Windows)来定义的,而回调函数的实现者必须遵循这种格式。Windows程序是以事件驱动模型为基础的,这就必然要用到回调函数这种机制。
要透彻了解回调函数,多看看SDKSamples。而MFC中的消息映射机制已经将窗口消息响应的回调函数隐藏起来了,这也符合C++的编程思想,回调函数终究是一种全局函数,它不能在类中实现,而消息映射机制的目的是使消息响应的代码最终封装在窗口类(CWnd类的子类)中。
如果有时间,不妨看看MESSAGE_MAP宏,消息映射是回调函数,只是这种回调函数的用法不同而已。普通的回调函数是要你提供地址,传进某个函数,由它去调用;而消息映射函数,却是由你定义函数,由MESSAGE_MAP宏去取得地址,并实现它的调用。
回调函数是一个程序员不能显式调用的函数;通过将回调函数的地址传给调用者从而实现调用。要实现回调,必须首先定义函数指针。尽管定义的语法有点不可思议,但如果你熟悉函数声明的一般方法,便会发现函数指针的声明与函数声明非常类似。
CODE:
typedefvoid(*f1)();//为函数指针声明类型定义
void(*p)();//p是指向某函数的指针
voidfunc1()
{
printf(Fromfunc1(),HelloWorld!\n);/*dosomething*/
}
voidcaller(void(*ptrfunc1)())
{
ptrfunc1();/*调用ptr指向的函数*/
}
//typedefbool(*f2)(int*);//为函数指针声明类型定义
//bool(*q)(int*);//p是指向某函数的指针
boolfunc2(int*t_i)
{
/*dosomething*/
printf(Fromfunc2()=%d,HelloWorld!\n,(*t_i)++);
returntrue;
}
voidcaller2(bool(*ptrfunc2)(int*),int*i)
{
ptrfunc2(i);/*调用ptr指向的函数*/
}
intmain(intargc,char*argv[])
{
printf(Frommain(),HelloWorld!\n);
printf(\n);
//无参数调用
p=func1;/*传递函数地址地址*/
caller(p);/*传递函数地址到调用者*/
//有参数调用
inti=0;
for(intj=0;j10;j++)
{
caller2(func2,i);//*传递函数地址到调用者*/
}
//有参数调用第二次
i=0;
//q=func2;/*传递函数地址地址*/
//caller2(q,i);/*传递函数地址到调用者*/
printf(\n);
printf(Frommain(),HelloWorld!\n);
getchar();
return0;
}
您可能关注的文档
最近下载
- 国家开放大学2025秋《形势与政策》形考任务大作业,如何理解“作风建设永远在路上,永远没有休止符”?.pdf VIP
- GB 2894-2025《安全色和安全标志》新旧版对比学习.pptx VIP
- 辽宁省名校联盟2025-2026学年高一上学期10月联合考试数学试卷(含答案).docx
- 能源与环境概论 教学课件 ppt 作者 李润东 可欣 主编第二章 温室效应.ppt VIP
- 超声科规培试题及答案.docx VIP
- DLT5210.1-2021 电力建设施工质量验收规程第1部分:土建工程.docx VIP
- 小学生辩论赛题目.docx VIP
- 电梯维保服务维保服务质量保障措施.doc VIP
- 0~6岁儿童健康管理服务规范国家基本公共卫生服务规范(第三版).docx VIP
- 《飞机构造基础》课件——第一章 飞机结构.pptx VIP
文档评论(0)