51Halcon机器视觉

 找回密码
 会员注册

QQ登录

只需一步,快速开始

扫一扫,微信登录

查看: 2662|回复: 4

[资料] MFC实现回调函数实例

[复制链接]

该用户从未签到

5

主题

11

帖子

572

积分

Rank: 6Rank: 6

积分
572
发表于 2016-4-24 23:55:14 | 显示全部楼层 |阅读模式

51Halcon诚邀您的加入,专注于机器视觉开发与应用技术,我们一直都在努力!

您需要 登录 才可以下载或查看,没有帐号?会员注册

x
接着上贴这里介绍如何一步步具体实现 MFC实现回调函数
源码链接: http://pan.baidu.com/s/1i4Kfunj密码:ipza
1.新建一个MFC程序取名为mfcMyCallBack

在CmfcMyCallBackDlg.cpp中写下回调函数SendFunctionNamet 的实现部分 和 OnBnClickedButton1事件调用
int _stdcall CALLBACK SendFunctionNamet(int Add_num)
{
        return Add_num+1;
}



2.然后创建一个新的类CTest


在Test.h文件中CTest定义之前定义 typedef  int (WINAPI * SendFunctionName)(int Add_num);用于声明一种指针类型,
也就是后面要用到的回调函数类型,这里int Add_num相当于一个普通函数传递的参数,在Test.h文件中定义一个成员函数int (WINAPI * SendFunctionName)(int Add_num);

这里注意
        typedef  int (WINAPI * SendFunctionName)(int Add_num);
typedef一定要放在Test.h文件里面,因为不放在此处会导致
        int  Testcall(SendFunctionName Sd,int Add_num);
此函数声明中编译器不知道SendFunctionName是什么鬼。不能放在CmfcMyCallBackDlg.cpp文件里

////////////////////////////////////////
//Test.h文件
#pragma once

typedef  int (WINAPI * SendFunctionName)(int Add_num);

class CTest
{
public:

        CTest(void);
        ~CTest(void);
        int a;                                                                        //新建一个CTest成员变量
        int  Testcall(SendFunctionName Sd,int Add_num);        //新建一个CTest成员函数
};


/////////////////////////////////////////
//Test.cpp文件

#include "Test.h"

CTest::CTest(void)
{

}

CTest::~CTest(void)
{
}

int CTest::Testcall(SendFunctionName Sd,int Add_num)
{
        return Sd(Add_num);

}


3.最后添加一个Button1实现代码如下

void CmfcMyCallBackDlg::OnBnClickedButton1()
{
        // TODO: 在此添加控件通知处理程序代码
        CTest m_test;
        m_test.a=0;
        m_test.a=m_test.Testcall(SendFunctionNamet,99);
}

调试运行程序可以一步步观察调用过程,最终m_test.a会变成100;


1.发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

2.提问请组织好自己的逻辑,标题注明大概是什么问题,问题内容写详细,需提供问题症状、错误代码、截图、位置等等信息,不要让别人去猜你想问啥;

3.如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子分类或者标题前面加上【已解决】

4.回报帮助你解决问题的坛友,右下角【免费评分】赠与对方视觉币和热心值,伸手党遭人唾弃,做一个热心并受欢迎的人!

该用户从未签到

5

主题

11

帖子

572

积分

Rank: 6Rank: 6

积分
572
 楼主| 发表于 2016-4-25 00:22:48 | 显示全部楼层
void CmfcMyCallBackDlg::OnBnClickedButton1()
{
        // TODO: 在此添加控件通知处理程序代码
        CTest m_test;
        CString str=NULL;

        m_test.a=0;
        m_test.a=m_test.Testcall(SendCmdt,12);
        str.Format( "%d",m_test.a);
        AfxMessageBox(str);
}

点评

吴老板讲的很好、、、、  详情 回复 发表于 2016-5-8 23:36

1.发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

2.提问请组织好自己的逻辑,标题注明大概是什么问题,问题内容写详细,需提供问题症状、错误代码、截图、位置等等信息,不要让别人去猜你想问啥;

3.如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子分类或者标题前面加上【已解决】

4.回报帮助你解决问题的坛友,右下角【免费评分】赠与对方视觉币和热心值,伸手党遭人唾弃,做一个热心并受欢迎的人!

该用户从未签到

1

主题

22

帖子

657

积分

Rank: 6Rank: 6

积分
657
发表于 2016-5-8 23:36:24 | 显示全部楼层
吴之听 发表于 2016-4-25 00:22
void CmfcMyCallBackDlg::OnBnClickedButton1()
{
        // TODO: 在此添加控件通知处理程序代码

吴老板讲的很好、、、、
不断努力,终于一天你会被自己感动
  • TA的每日心情
    耍酷
    2019-10-4 23:47
  • 签到天数: 67 天

    连续签到: 7 天

    [LV.6]常住居民II

    0

    主题

    10

    帖子

    104

    积分

    Rank: 1

    积分
    104

    切换助手验证会员

    发表于 2019-7-23 23:00:29 | 显示全部楼层
    是 CALLBACK SendFunctionNamet还是 CALLBACK SendFunctionName有t嘛?

    1.发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

    2.提问请组织好自己的逻辑,标题注明大概是什么问题,问题内容写详细,需提供问题症状、错误代码、截图、位置等等信息,不要让别人去猜你想问啥;

    3.如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子分类或者标题前面加上【已解决】

    4.回报帮助你解决问题的坛友,右下角【免费评分】赠与对方视觉币和热心值,伸手党遭人唾弃,做一个热心并受欢迎的人!

  • TA的每日心情
    振奋
    2020-6-11 14:20
  • 签到天数: 2 天

    连续签到: 1 天

    [LV.1]初来乍到

    0

    主题

    1

    帖子

    14

    积分

    Rank: 1

    积分
    14
    发表于 2020-6-8 11:26:41 | 显示全部楼层
    这好像不叫 回调函数?

    1.发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

    2.提问请组织好自己的逻辑,标题注明大概是什么问题,问题内容写详细,需提供问题症状、错误代码、截图、位置等等信息,不要让别人去猜你想问啥;

    3.如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子分类或者标题前面加上【已解决】

    4.回报帮助你解决问题的坛友,右下角【免费评分】赠与对方视觉币和热心值,伸手党遭人唾弃,做一个热心并受欢迎的人!

    您需要登录后才可以回帖 会员登录 | 会员注册

    本版积分规则

    建议您使用Chrome、Firefox、Edge、IE10及以上版本和360等主流浏览器浏览本网站

    51Halcon会员技术交流会员技术交流 | 51Halcon官方客服咨询官方客服咨询 | Halcon切换助手使用反馈切换助手使用

    有问题需要咨询站长?| 申请友链| 小黑屋| 手机版| Archiver|  

    粤ICP备15095995号-2 粤公网安备44030602000670号

    CopyRight © 2015-2020 51Halcon机器视觉. Tencent Cloud X3.4.

    快速回复 返回顶部 返回列表