/*2019-04-16*/
1、定义:
网上定义:
回调函数是应用程序提供给Windows系统DLL或其它DLL调用的函数,一般用于截获消息、获取系统信息或处理异步事件。应用程序把回调函数的地址指针告诉DLL,而DLL在适当的时候会调用该函数。
详细解释:在模块A在调用模块B(比如.dll)中的函数b(),将自己的一个函数a()(这个函数的地址)作为参数传递给b()。b()在需要的时候,利用传递的a()的地址,调用a()函数。这时你可以利用这个机会在回调函数中处理消息或完成一定的操作。
注意:1、回调函数要么是全局函数,要么是静态函数!
2、回调函数由系统调用,所以可以认为它属于WINDOWS系统,不要把它当作你的某个类的成员函数。
3、回调函数必须遵守事先规定好的参数格式和传递方式,否则DLL一调用它就会引起程序或系统的崩溃。
2、例子(使用QT工程):
#pragma once
#include
#include "ui_guidemo.h"
class guidemo : public QMainWindow
{
Q_OBJECT
public:
guidemo(QWidget *parent = Q_NULLPTR);
public slots:
void onBtnClicked();
private:
private:
Ui::guidemoClass ui;
};
#include "guidemo.h"
#include
#include "../guilib/guiStart.h"
voidtestCallback(const std::string& strName, const std::string& strAge)
{
qDebug() << "----------" << QString::fromStdString(strName) << "------" << QString::fromStdString(strAge);
}
uidemo::guidemo(QWidget *parent)
: QMainWindow(parent)
{
ui.setupUi(this);
connect(ui.pushButton,&QPushButton::clicked, this, &guidemo::onBtnClicked);
}
void guidemo::onBtnClicked()
{
initGuiDll(testCallback);
}
.dll库中文件
#include
#define ExportFun extern "C" _declspec(dllexport)
typedef void(* pCallBack)(const std::string& strName, const std::string& strAge);
ExportFun void initGuiDll(pCallBack pfun);
#include "guiStart.h"
void initGuiDll(pCallBack pfun)
{
pfun("haha","18");
}
【C++回调函数--简单使用】上面这个实例中也包含.dll库的创建和使用.
推荐阅读
- 个人日记|K8s中Pod生命周期和重启策略
- 学习分享|【C语言函数基础】
- C++|C++浇水装置问题
- 数据结构|C++技巧(用class类实现链表)
- C++|从零开始学C++之基本知识
- 步履拾级杂记|VS2019的各种使用问题及解决方法
- leetcode题解|leetcode#106. 从中序与后序遍历序列构造二叉树
- 动态规划|暴力递归经典问题
- 麦克算法|4指针与队列
- 遇见蓝桥遇见你|小唐开始刷蓝桥(一)2020年第十一届C/C++ B组第二场蓝桥杯省赛真题