最近经常使用回调函数,有时感觉有点混乱,对回调函数理解不透,昨天花点时间深深品味了一下回调函数,写下博客记录一下,言规正转,VC中的定时器是一种特殊的回调函数,只要我们设置好了定时器,我们就不用管什么时候调用定时器处理函数,是操作系统负责调用,定时器的处理函数还是我们自己去写实现。

为什么 要用回调函数呢,这个问题我也想过,现在先说说回调函数的定义 和使用,过下在回答为什么 要使用回调函数,

下面这个例子是处理从一个普通的C++类CTest中把数据传到一个对话框类CTestCALLDlg中去,这里不能用消息来处理,因为消息只能处理线程和对话框之间的数据传输,对纯C++不起作用,这种情况 下,就只能用回调函数来处理了,

在Test.h文件中CTest定义之前定义 typedef  bool (WINAPI * SendCmd)(WORD NodeID);用于声明一种指针类型,也就是后面要用到的回调函数类型,在在Test.h文件中定义一个成员函数void Testcall(SendCmd);注意这个成员函数的参数,在Test.cpp中:

void CTest::Testcall(SendCmd Sd)
{
 Sd(10);

}

在CTestCALLDlg.cpp中写下回调函数SendCmdt 的实现部分 和 OnBnClickedButton1事件调用

bool _stdcall CALLBACK SendCmdt(WORD NodeID)
{
 return true;
}

void CTestCALLDlg::OnBnClickedButton1()
{
 // TODO: 在此添加控件通知处理程序代码
 CTest m_test;
 m_test.Testcall(SendCmdt);
}

此时程序运行,就进入了回调函数中去了,这样做的目的是把NodeID变量 的值从CTest类传到CTestCALLDlg类中,回调函数的一个好处是 在CTest 中不知道NodeID 有什么用,只能通过回调作用,传出来到要使用的地方进行处理,只是在回调函数声明时告诉系统有这么一个函数,实现部分在外面 。。。。 上面的问题也应该 不用回答了,,

就写到这了, 文字写的不够流畅,希望回调函数的使用和作用表达清楚 了,呵呵

转载于:https://www.cnblogs.com/tianlangshu/archive/2011/03/20/1989439.html

VC回调函数定义和使用相关推荐

  1. ajax 成功回调函数,jQuery的阿贾克斯成功回调函数定义jQuery的阿贾克斯成功回调函数定义(jQuery ajax...

    我想使用jQuery的ajax从服务器获取数据. 我希望把成功的回调函数定义外面.ajax()块像下面这样. 所以,我需要声明变量dataFromServer像下面这样我就能从成功回调使用返回的数据? ...

  2. 基于MFC相机采集的实现与采集回调函数的应用实例

    整理工程代码的时候发现有一段代码(因为按照调用关系写流程图,这一段没有被写上): //--------------------------------------------------------- ...

  3. 理解javascript 回调函数

    理解javascript 回调函数 原文:理解javascript 回调函数 ##回调函数定义 百度百科:回调函数 回调函数就是一个通过函数指针调用的函数.如果你把函数的指针(地址)作为参数传递给另一 ...

  4. 【校招面试 之 C/C++】第15题 C 回调函数

    转自:https://segmentfault.com/a/1190000008293902 做略微改动 什么是回调函数 我们先来看看百度百科是如何定义回调函数的: 回调函数就是一个通过函数指针调用的 ...

  5. 回调函数与Delphi的事件模型

    回调函数: 回调函数是这样一种机制:调用者在初始化一个对象(这里的对象是泛指,包括OOP中的对象.全局函数等)时,将一些参数传递给对象,同时将一个调用者可以访问的函数地址传递给该对象.这个函数就是调用 ...

  6. javascript~callback回调函数

    函数是对象,所以它可以作为一个参数传递给其他函数. 回调函数作为一个参数传递给其他函数时是没有括号的,只有函数名:使用括号表示立即执行回调函数callback.我们只希望传递一个函数的引用,让其他函数 ...

  7. js中函数的参数为函数的情况即回调函数

    js中函数的参数可以是数组对象也可以是函数,当参数为函数时我们叫做回调函数 //定义回调函数 function B() { console.log("函数B") setTimeou ...

  8. OPENCV回调函数

    OPENCV回调函数 回调函数 回调函数就是一个通过函数指针调用的函数.如果你把函数的指针(地址)作为参数传递给另一个函数,当这个指针被用来调用其所指向的函数时,我们就说这是回调函数.回调函数不是由该 ...

  9. 【C/C 】浅谈C/C 中函数指针与回调函数

    01.函数指针 1.1.函数指针定义 一个函数总是占用一段连续的内存区域,函数名在表达式中有时也会被转换为该函数所在内存区域的首地址,这和数组名非常类似.我们可以把函数的这个首地址(或称入口地址)赋予 ...

最新文章

  1. h5列表 php,H5的标签使用详解
  2. hibernate 的第一个工程
  3. android+ndk+libevent,android ndk 编译 libevent
  4. 和函数问题的细节思考
  5. ArcCatalog中连接SDE数据库
  6. 【c语言】【inline】鸡肋关键字?inline-函数调用的加速器
  7. 洛克菲勒写给儿子的38封信
  8. 公民委托诉讼代理人的注意事项
  9. FTP+Cyberduck+服务器部署项目+pm2
  10. 华为擎云 W510 鲲鹏 920 24 核工作站使用体验
  11. 信息安全保障人员(CISAW)工控网络安全方向认证介绍
  12. body与html 会有间隙,css – thead和tbody之间的间距
  13. PC端微信dat还原工具源码分享【福利】
  14. ZOC7 Terminal 首次安装无法 上传/下载文件
  15. IDEA中maven项目dependencies报错飘红问题解决
  16. ad电阻原理图_arduino传感器专辑之光敏电阻模块
  17. [转载From少数派] 码字必备:18 款优秀的 Markdown 写作工具 | 2015 年度盘点
  18. C++函数重载(6) - main函数重载
  19. FutureTask
  20. 终于有人把3D打印讲明白了

热门文章

  1. Python攻克之路-random模块
  2. 【贪心】【codeforces】651A Joysticks
  3. Python(2.7.6) 列表推导式
  4. jQuery css()选择器使用说明
  5. javascript随机生成GUID
  6. 地址空间和虚拟内存(转载)http://topic.csdn.net/u/20090619/10/4c62a13b-536b-4b0a-af09-2271c6a104e1.html...
  7. ubuntu下docker使用GPU
  8. 图像去模糊(逆滤波)
  9. TCP/IP五层参考模型及其对应设备--运维笔记
  10. mongodb学习参考博文