C++ + MFC 写一个程序参数修改器(四、回调函数)

37 篇文章 3 订阅
32 篇文章 0 订阅

一、说明

上一节,我们简单的提了一下,为了得知搜索的进度,我们采用了回调函数的方式来实现进度条,当然你也可以开个线程或者定时器来实现,但是这一篇,我们主要来谈一谈回调函数

二、一个简单的回调函数

#include <stdio.h> 
 
typedef void(*lpFunc)(void *, char *);  // 函数指针 
// 回调函数的宿主函数,在这里回调用函数被使用, 
void GetCallBack(void * lpVoid, lpFunc callback) 
{ 
    callback(lpVoid, "test"); 
} 
  
  
class A{ 
public: 
    A(){}; 
    
    void outName(char szAlarm[]){ 
       printf("my name is %s /n", szAlarm);    
    } 
    
    // 被宿主调用的回调函数 
    static void fCallback(void *lpVoid, char szAlarm[]){ 
       A * p = (A*)(lpVoid); 
       p->outName(szAlarm); 
    } 
    
    //调用外部宿主函数,当Test函数调用过宿主函数以后,Test就再也不关心宿主函数 
    //什么时候调用回调函数了,因为那时宿主函数自己的事了 
    void Test(){ 
       GetCallBack(this, fCallback); 
    } 
}; 
 
int main(void) 
{ 
    A a; 
    a.Test(); 
} 

三、本程序中的回调

3.1 声明

首先声明一个函数指针,并声明两个此函数指针类型的回调函数,一个用来首次扫描,一个用来再次扫描,其中有三个参数,分别为:参数(进度条指针)、页数(内存需要查的页数)、索引(当前查找的位置),即 索引/页数 = 当前已经搜索的比例
在这里插入图片描述

3.2 传递指针

这个就相当于成员变量的set写法,只是为了传递一下指针。
在这里插入图片描述

3.3 回调函数

这是两个回调函数的实现,
在这里插入图片描述

3.4 调用

OnInitDialog中调用set传递指针,m_pFinder为search类的句柄。
在这里插入图片描述

四、运行

在这里插入图片描述

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值