我们知道如果试图直接使用c++的成员函数作为回调函数将会发生错误,甚至编译就不能通过。其错误的原因是普通的c++成员函数都隐含了一个传递函数作为参数,亦即“this”指针,由于this指针的作用,使得回掉函数与普通的C++成员函数参数个数不匹配,从而导致回调函数安装失败。要解决这一问题的关键就是不让this指针起作用,通过采用以下两种典型技术可以解决在C++中使用回调函数所遇到的问题。

一、利用全局函数来实现回调函数,因为全局函数不属于任何类。那当然就不再拥有this指针,配合一个全局缓冲区则可以实现全局函数与捕获窗口的数据通信。

二、利用静态成员函数机制来实现,静态成员函数不使用this指针作为隐含参数,满足回调函数的条件,但是不能访问非静态成员变量。为了实现与捕获窗口的数据通信可以通过使用一个静态类指针作为类成员,通过在类创建时初始化该静态指针,如pThis—this,然后在回调函数中就可以通过该静态指针访问所有成员变量和成员函数了。

设为全局函数或类中static函数就可以了

回调函数在MFC中的使用相关推荐

  1. 【FFmpeg】自定义回调函数处理AVIOContext中的数据

    1.简述 AVIOContext是FFmpeg管理输入输出数据的结构体,它的成员变量有指向数据的指针.大小以及处理数据的回调函数指针等等.如果使用avio_open或avio_open2来创建,它会根 ...

  2. linux timer 回调函数,Linux内核中关于定时器Timer的应用

    在Touchscreen驱动中 1 声明 Ad7877.c (\linux-2.6.30.4\drivers\input\touchscreen):struct timer_listtimer;/* ...

  3. python ctypes 回调函数_Python ctypes中具有自定义类型的回调

    那里有一些错误,有些是基本的Python错误: from ctypes import * class A(Structure): _fields_ = [ ("a1", c_cha ...

  4. 理解与使用Javascript中的回调函数

    在Javascript中,函数是第一类对象,这意味着函数可以像对象一样按照第一类管理被使用.既然函数实际上是对象:它们能被"存储"在变量中,能作为函数参数被传递,能在函数中被创建, ...

  5. 【JavaScript】理解与使用Javascript中的回调函数

    在Javascript中,函数是第一类对象,这意味着函数可以像对象一样按照第一类管理被使用.既然函数实际上是对象:它们能被"存储"在变量中,能作为函数参数被传递,能在函数中被创建, ...

  6. keras中的回调函数

    keras训练 fit(self, x, y, batch_size=32, nb_epoch=10, verbose=1, callbacks=[], validation_split=0.0, v ...

  7. C语言 函数指针做函数参数(即回调函数)

    文章目录 函数指针做函数参数(回调函数) 回调函数概念 一般有三种调用方式 回调函数的作用 回调函数调用时刻 回调函数的语法: 1.简单的函数类型为:无参数.无返回值的函数. 2.完全形式的回调函数 ...

  8. javascript回调函数笔记

    来源于:https://github.com/useaname/blog-study 在Javascript中,函数是第一类对象.意味函数可以像对象一样按照第一类被管理使用. 回调函数是从一个叫函数式 ...

  9. WPF如何获得变量异步回调函数时产生的异步回调

    有这样的问题,WPF当使用异步回调,需要使用产生的异步变量中的回调函数.数据库中查询诸如异步函数来获得一DataTable.怎样传递给回调函数呢? [方案一]使用全局变量 非常easy想到的是用全局变 ...

最新文章

  1. Java list三种遍历方法性能比较
  2. idea运行两个tomcat_IDE里的Tomcat是如何工作的
  3. CodeProject 文章概览:ASP.NET 模板相关内容
  4. 用户组修改工具samusrgrp
  5. textarea限制输入长度
  6. android 插补器Interpolator的使用
  7. mcse 2000 认证介绍
  8. Nacos(四)之安装
  9. 【Python】Pandas在数据库中执行SQL语句并加载结果
  10. 【ElasticSearch】Es 源码之 NamedWriteableRegistry 源码解读
  11. JAVA-ZIP和GZIP压缩实现
  12. 服务器管理器添加php,为web服务器添加php的支持
  13. 房屋出租管理软件,打造一体化的管理模式
  14. 最新emoji表情代码大全_8张最新创意好看的早上好表情图片大全 秋日温馨的早安祝福图片带字精选...
  15. 航测和倾斜摄影处理软件汇总
  16. [A133 Android11] 连接pc板子掉电
  17. 一个程序员的真实故事上
  18. iphone数据传输已取消怎么办_iPhone停用怎么办?如何解除iPhone已停用
  19. opcode php 缓存,PHP Opcode 缓存
  20. 关于错误: [Error] ld returned 1 exit status

热门文章

  1. jquery then
  2. shell特殊符号cut命令,sort_wc_uniq命令,tee_tr_split命令
  3. C#Winform窗体中传值
  4. Android 5.0新特性ToolBar
  5. java 和 flash socket通信封装
  6. 最锋利的Visual Studio Web开发工具扩展:Web Essentials详解
  7. 使用eclipse生成html格式注释文档 [ javadoc ]
  8. 在GHOST的WINXPSP2安装SQL SERVER2000个人版时出现“以前的某个程序安装已在安装计算机上创建挂起的文件操作。运行安装之前,必须重新启动计算机。”错误的解决方法...
  9. BCH易于使用不只是说说而已
  10. 在echarts中自定义提示框内容