MFC中关于消息映射函数定义的问题

MFC中有那么多的消息,每个消息都要定义一个消息映射函数么?能不能简化到一个函数中定义,消息函数和普通函数的区别是什么?

mfc

2个回答

消息映射的作用就是告诉系统我们关心哪一些消息,当这样的消息产生时就调用我们自己写的的消息响应函数,比如下面的消息映射:

BEGIN_MESSAGE_MAP(MessageMapDlg, CDialogEx)
    ON_BN_CLICKED(IDC_BTN_1, OnBnClicked_Hello)
    ON_BN_CLICKED(IDC_BTN_2, OnBnClicked_Hello)
END_MESSAGE_MAP()

我们自己的消息响应函数:

 void MessageMapDlg::OnBnClicked_Hello()
{
    // TODO: 在此添加控件通知处理程序代码
    MessageBox(_T("Hello!"));
}

当我们点击按钮1(IDC_BTN_1)或者按钮2(IDC_BTN_2)时就会发送_BN_CLICKED消息,而这个消息正是我们通过消息映射ON_BN_CLICKED告诉系统我们关心的也是这个消息,系统检测到这个消息后就会调用我们的OnBnClicked_Hello函数,从而弹出一个消息框显示“Hello!”。
消息响应函数(OnBnClicked_Hello)和普通函数没有什么区别,前者是产生特定消息后被执行的函数,后者是我们想调用的时候自己调用的。

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
MFC中自定义消息响应函数和重写OnWndMsg函数处理自定义消息有什么区别

如题,MFC中自定义消息响应函数和重写OnWndMsg函数处理自定义消息有什么区别,求大佬指教

MFC中回调函数怎么定义

我找了一个关于MFC表头排序的代码,想运用到自己的程序中,但是在运行时不知道这个static int CALLBACK CompareFunc怎么定义,下面也报错这个东西

MFC的消息映射采用机制问题

MFC的消息映射函数是通过消息映射宏实现的,这个消息映射宏的作用是什么?我觉得用了宏代码就复杂了,它的意义是什么?

想用MFC实现类似c++中自定义函数及调用功能

我学了C++,就是想用MFC实现类似C++的函数功能,比如我在主函数外部定义了一个自己的函数,然后再主函数里边调用这个函数。 比如我定义了一个函数max(int a, int b)来返回a和b中最大的那个数,我在主函数里直接调用这个函数,z=max(x,y)就直接把x和y中最大那个值给z,我想用MFC来实现,但是不知道怎么弄 谢谢大佬们!

MFC怎样添加消息响应函数呢。。比如添加OnKeyDown

MFC怎样添加消息响应函数呢。。比如添加OnKeyDown 我想知道具体操作步骤。。新手。。不好意思。。

MFC关于消息映射冲突的问题

如果两个消息同时发送给一个窗口,MFC中是同时执行这两个消息函数的么?那么局部变量的冲突怎么办?

mfc中消息处理函数中的操作问题

最近在做基于UDP的可靠传输服务,遇到了一点问题,希望能够得到各位大神的指点 大体就是希望在一个“send”按钮消息处理函数中,当消息发出去以后,服务端会收到客户端的信息然后返回ACK表示收到。所以客户端在“send”按钮消息处理函数中需要一直监听这个信号的标志位,一旦没有改变需要重复发送,一旦改变就可以结束。但是现在问题是标志位一直不变,直到程序完成以后才会发生变化,求教原因和解决方案!谢谢! while (!ACK) { Sleep(1000); S.Format("%d", n); S = "Time:" + S; GetDlgItem(IDC_STATIC_TIME)->SetWindowText(S); ++n; if (n == 2) { len = sendto(sock, strtext.GetBuffer(0), strlen(strtext.GetBuffer(0)),0, (struct sockaddr *)&seraddr, addrlen); if (len >= 0) { strtext1 = strtext1 + name + "\r\n(第一次超时重传)" + str + "\r\n"; } } if (n == 4) { len = sendto(sock, strtext.GetBuffer(0), strlen(strtext.GetBuffer(0)),0, (struct sockaddr *)&seraddr, addrlen); if (len >= 0) { strtext1 = strtext1 + name + "\r\n(第二次超时重传)" + str + "\r\n"; } } if (n == 10) { strtext1 = strtext1 + "发送失败,请检查网络设置!\r\n"; break; } }其中的n是作为计时的标志,一旦2,4,10秒之后无回复就会重新发送

mfc中定义大量宏的问题

我定义了大量的宏,在cmainframe和一个共有类(用于存放一些静态函数和变量,主要是为了线程函数中使用全局变量)中里面的一个函数中需要使用到,我直接把它们放在一个头文件中然后include,就报了 error LNK2005: "struct Zeni_MTS_Rolypon_InOut InOutRoly" (?InOutRoly@@3UZeni_MTS_Rolypon_InOut@@A) already defined in bowei.obj这样一堆问题。 还想问问,线程函数只能是全局或者静态函数,那在MFC它们应该在哪被定义。我之前是定义在Cxxxapp的theapp下面,不知道这样对不对。求教!!!!!!

有关于MFC映射多重消息的问题

用MFC的消息映射调用消息的响应,同时调用多个消息函数,每个函数可以得到自己的调用顺序么?怎么同时调用呢?

关于MFC中变量的定义问题

我已经定义了一个的标识符, 在不同函数中引用,为啥会出现这个情况 请问怎么解决呢 ![图片说明](https://img-ask.csdn.net/upload/201806/19/1529342837_488249.png)![图片说明](https://img-ask.csdn.net/upload/201806/19/1529342849_452963.png)![图片说明](https://img-ask.csdn.net/upload/201806/19/1529342862_72095.png)

vs2010写mfc自己额外写的main函数怎么加进mfc中啊

vs2010写mfc自己额外写的main函数怎么加进mfc中啊

MFC语言中的消息和函数之间的关系

MFC中的消息和函数之间的关系是什么,比如OnSize这个是一个函数吧,怎么变成消息的?

谁能详细解释下MFC消息映射的原理是什么?

宏不是代码替换么?那么MFC是怎么把消息循环和消息处理函数对接在一起的?我想同时关联几个消息函数到一个消息,怎么做呢?

我是新人,怎样实现中mfc中实现对自己DLL中回调函数的接收

我在消息函数中执行自己的DLL中的函数。正确的话是系统会执行该函数的响应函数,可在MFC中我的响应函数未被执行,这是为什么??

MFC消息机制之自定义消息中参数传递问题

MFC消息输送,能不能传递自己的参数,比如说OnDaw中给出绘图的坐标点之类的,或者消息发生的顺序?

MFC自定义消息中出现的问题

MFC自定义消息函数时提示can't find the definition(implementation) of this function,定义消息和映射都没问题啊

急!MFC CTreeCtrl双击消息函数的问题

单文档建的树,想实现双击展开/闭合,且图标要变化 ``` void TreeView::OnLButtonDblClk(UINT nFlags, CPoint point) { HTREEITEM hItem = ptheTree->HitTest(point, &nFlags); //获得鼠标点击相关项 CString s = ptheTree->GetItemText(hItem); if (hItem != NULL && !JudgeIsNotebook(hItem) && s !="回收站") { if (isExpand == false) //还没展开,将其展开 { changeRootBitmap(point, nFlags); //切换图标 ptheTree->SetItemState(hItem, 0, LVIS_SELECTED | LVIS_FOCUSED); //取消根项高亮 if (ptheTree->GetChildItem(hItem)) { HTREEITEM hChildItem = ptheTree->GetChildItem(hItem); ptheTree->SetItemState(hChildItem, LVIS_SELECTED | LVIS_FOCUSED, LVIS_SELECTED | LVIS_FOCUSED); //将子项高亮 } } else //已经展开,将其闭合 { changeRootBitmap(point, nFlags); //切换图标 ptheTree->SetItemState(hItem, LVIS_SELECTED | LVIS_FOCUSED, LVIS_SELECTED | LVIS_FOCUSED); //将根项高亮 } isExpand = !isExpand; //更改状态标识 } //HTREEITEM item = ptheTree->GetSelectedItem(); //ptheTree->SetItemState(item, 0, TVIS_SELECTED); CTreeView::OnLButtonDblClk(nFlags, point); } ``` 在根项未展开时,双击后一切正常,根项展开了,图标1也切换为了图标2,但再次双击时(想要闭合根项)就不行了,图标2也切换不回图标1了。 以下是用到的切换图标的函数: ``` void TreeView::changeRootBitmap(CPoint point, UINT nFlags) { HTREEITEM hItem = ptheTree->HitTest(point, &nFlags); if (hItem != NULL && !JudgeIsNotebook(hItem) && isExpand == false) { ptheTree->SetItemImage(hItem, 1, 2); } else ptheTree->SetItemImage(hItem, 2, 1); /*CMainFrame *pMain = (CMainFrame *)AfxGetApp()->m_pMainWnd; CDocument * pCurrentDoc = (CDocument *)pMain->GetActiveDocument(); pCurrentDoc->UpdateAllViews(NULL);*/ } ```

MFC有没有讲解消息映射方面的书么

MFC有没有讲解消息映射方面的书么,感觉这方面需要巩固下,最好是可以免费看的电子书,谢谢了

mfc引用对话框类之外的cpp中的函数

mfc中xxxxdlg.cpp想用一个xxxx.cpp中的函数,如何引用?这个函数定义在了xxxx.cpp中而没有在xxxxdlg.cpp中定义

C/C++学习指南全套教程

C/C++学习的全套教程,从基本语法,基本原理,到界面开发、网络开发、Linux开发、安全算法,应用尽用。由毕业于清华大学的业内人士执课,为C/C++编程爱好者的教程。

定量遥感中文版 梁顺林著 范闻捷译

这是梁顺林的定量遥感的中文版,由范闻捷等翻译的,是电子版PDF,解决了大家看英文费时费事的问题,希望大家下载看看,一定会有帮助的

YOLOv3目标检测实战:训练自己的数据集

YOLOv3是一种基于深度学习的端到端实时目标检测方法,以速度快见长。本课程将手把手地教大家使用labelImg标注和使用YOLOv3训练自己的数据集。课程分为三个小项目:足球目标检测(单目标检测)、梅西目标检测(单目标检测)、足球和梅西同时目标检测(两目标检测)。 本课程的YOLOv3使用Darknet,在Ubuntu系统上做项目演示。包括:安装Darknet、给自己的数据集打标签、整理自己的数据集、修改配置文件、训练自己的数据集、测试训练出的网络模型、性能统计(mAP计算和画出PR曲线)和先验框聚类。 Darknet是使用C语言实现的轻型开源深度学习框架,依赖少,可移植性好,值得深入探究。 除本课程《YOLOv3目标检测实战:训练自己的数据集》外,本人推出了有关YOLOv3目标检测的系列课程,请持续关注该系列的其它课程视频,包括: 《YOLOv3目标检测实战:交通标志识别》 《YOLOv3目标检测:原理与源码解析》 《YOLOv3目标检测:网络模型改进方法》 敬请关注并选择学习!

sql语句 异常 Err] 1064 - You have an error in your SQL syntax; check the manual that corresponds to your

在我们开发的工程中,有时候会报 [Err] 1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ------ 这种异常 不用多想,肯定是我们的sql语句出现问题,下面...

浪潮集团 往年的软件类 笔试题 比较详细的哦

浪潮集团 往年的软件类 笔试题 比较详细的哦

2019 AI开发者大会

2019 AI开发者大会(AI ProCon 2019)是由中国IT社区CSDN主办的AI技术与产业年度盛会。多年经验淬炼,如今蓄势待发:2019年9月6-7日,大会将有近百位中美顶尖AI专家、知名企业代表以及千余名AI开发者齐聚北京,进行技术解读和产业论证。我们不空谈口号,只谈技术,诚挚邀请AI业内人士一起共铸人工智能新篇章!

I2c串口通信实现加速度传感器和FPGA的交流

此代码能实现加速度传感器与FPGA之间的交流,从而测出运动物体的加速度。

Python可以这样学(第一季:Python内功修炼)

董付国系列教材《Python程序设计基础》、《Python程序设计(第2版)》、《Python可以这样学》配套视频,讲解Python 3.5.x和3.6.x语法、内置对象用法、选择与循环以及函数设计与使用、lambda表达式用法、字符串与正则表达式应用、面向对象编程、文本文件与二进制文件操作、目录操作与系统运维、异常处理结构。

微信公众平台开发入门

本套课程的设计完全是为初学者量身打造,课程内容由浅入深,课程讲解通俗易懂,代码实现简洁清晰。通过本课程的学习,学员能够入门微信公众平台开发,能够胜任企业级的订阅号、服务号、企业号的应用开发工作。 通过本课程的学习,学员能够对微信公众平台有一个清晰的、系统性的认识。例如,公众号是什么,它有什么特点,它能做什么,怎么开发公众号。 其次,通过本课程的学习,学员能够掌握微信公众平台开发的方法、技术和应用实现。例如,开发者文档怎么看,开发环境怎么搭建,基本的消息交互如何实现,常用的方法技巧有哪些,真实应用怎么开发。

机器学习初学者必会的案例精讲

通过六个实际的编码项目,带领同学入门人工智能。这些项目涉及机器学习(回归,分类,聚类),深度学习(神经网络),底层数学算法,Weka数据挖掘,利用Git开源项目实战等。

eclipseme 1.7.9

eclipse 出了新的eclipseme插件,官方有下载,但特慢,我都下了大半天(可能自己网速差)。有急需要的朋友可以下哦。。。

Spring Boot -01- 快速入门篇(图文教程)

Spring Boot -01- 快速入门篇 今天开始不断整理 Spring Boot 2.0 版本学习笔记,大家可以在博客看到我的笔记,然后大家想看视频课程也可以到【慕课网】手机 app,去找【Spring Boot 2.0 深度实践】的课程,令人开心的是,课程完全免费! 什么是 Spring Boot? Spring Boot 是由 Pivotal 团队提供的全新框架。Spring Boot...

HoloLens2开发入门教程

本课程为HoloLens2开发入门教程,讲解部署开发环境,安装VS2019,Unity版本,Windows SDK,创建Unity项目,讲解如何使用MRTK,编辑器模拟手势交互,打包VS工程并编译部署应用到HoloLens上等。

最简单的倍频verilog程序(Quartus II)

一个工程文件 几段简单的代码 一个输入一个输出(50Mhz倍频到100Mhz)

计算机组成原理实验教程

西北工业大学计算机组成原理实验课唐都仪器实验帮助,同实验指导书。分为运算器,存储器,控制器,模型计算机,输入输出系统5个章节

4小时玩转微信小程序——基础入门与微信支付实战

这是一个门针对零基础学员学习微信小程序开发的视频教学课程。课程采用腾讯官方文档作为教程的唯一技术资料来源。杜绝网络上质量良莠不齐的资料给学员学习带来的障碍。 视频课程按照开发工具的下载、安装、使用、程序结构、视图层、逻辑层、微信小程序等几个部分组织课程,详细讲解整个小程序的开发过程

面试了一个 31 岁程序员,让我有所触动,30岁以上的程序员该何去何从?

最近面试了一个31岁8年经验的程序猿,让我有点感慨,大龄程序猿该何去何从。

基于RSA通信密钥分发的加密通信

基于RSA通信密钥分发的加密通信,采用pycrypto中的RSA、AES模块实现

不同变质程度煤尘爆炸残留气体特征研究

为分析不同变质程度煤尘爆炸残留气体成分的特征规律,利用水平管道煤尘爆炸实验装置进行了贫瘦煤、肥煤、气煤、长焰煤4种不同变质程度的煤尘爆炸实验,研究了不同变质程度煤尘爆炸后气体残留物含量的差异,并对气体

设计模式(JAVA语言实现)--20种设计模式附带源码

课程亮点: 课程培训详细的笔记以及实例代码,让学员开始掌握设计模式知识点 课程内容: 工厂模式、桥接模式、组合模式、装饰器模式、外观模式、享元模式、原型模型、代理模式、单例模式、适配器模式 策略模式、模板方法模式、观察者模式、迭代器模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式 课程特色: 笔记设计模式,用笔记串连所有知识点,让学员从一点一滴积累,学习过程无压力 笔记标题采用关键字标识法,帮助学员更加容易记住知识点 笔记以超链接形式让知识点关联起来,形式知识体系 采用先概念后实例再应用方式,知识点深入浅出 提供授课内容笔记作为课后复习以及工作备查工具 部分图表(电脑PC端查看):

MySQL数据库面试题(2020最新版)

文章目录数据库基础知识为什么要使用数据库什么是SQL?什么是MySQL?数据库三大范式是什么mysql有关权限的表都有哪几个MySQL的binlog有有几种录入格式?分别有什么区别?数据类型mysql有哪些数据类型引擎MySQL存储引擎MyISAM与InnoDB区别MyISAM索引与InnoDB索引的区别?InnoDB引擎的4大特性存储引擎选择索引什么是索引?索引有哪些优缺点?索引使用场景(重点)...

软件测试2小时入门

本课程内容系统、全面、简洁、通俗易懂,通过2个多小时的介绍,让大家对软件测试有个系统的理解和认识,具备基本的软件测试理论基础。 主要内容分为5个部分: 1 软件测试概述,了解测试是什么、测试的对象、原则、流程、方法、模型;  2.常用的黑盒测试用例设计方法及示例演示;  3 常用白盒测试用例设计方法及示例演示;  4.自动化测试优缺点、使用范围及示例‘;  5.测试经验谈。

几率大的Redis面试题(含答案)

本文的面试题如下: Redis 持久化机制 缓存雪崩、缓存穿透、缓存预热、缓存更新、缓存降级等问题 热点数据和冷数据是什么 Memcache与Redis的区别都有哪些? 单线程的redis为什么这么快 redis的数据类型,以及每种数据类型的使用场景,Redis 内部结构 redis的过期策略以及内存淘汰机制【~】 Redis 为什么是单线程的,优点 如何解决redis的并发竞争key问题 Red...

手把手实现Java图书管理系统(附源码)

【超实用课程内容】 本课程演示的是一套基于Java的SSM框架实现的图书管理系统,主要针对计算机相关专业的正在做毕设的学生与需要项目实战练习的java人群。详细介绍了图书管理系统的实现,包括:环境搭建、系统业务、技术实现、项目运行、功能演示、系统扩展等,以通俗易懂的方式,手把手的带你从零开始运行本套图书管理系统,该项目附带全部源码可作为毕设使用。 【课程如何观看?】 PC端:https://edu.csdn.net/course/detail/27513 移动端:CSDN 学院APP(注意不是CSDN APP哦) 本课程为录播课,课程2年有效观看时长,大家可以抓紧时间学习后一起讨论哦~ 【学员专享增值服务】 源码开放 课件、课程案例代码完全开放给你,你可以根据所学知识,自行修改、优化

jsp+servlet入门项目实例

jsp+servlet实现班级信息管理项目

winfrom中嵌套html,跟html的交互

winfrom中嵌套html,跟html的交互,源码就在里面一看就懂,很简单

Java面试题大全(2020版)

发现网上很多Java面试题都没有答案,所以花了很长时间搜集整理出来了这套Java面试题大全,希望对大家有帮助哈~ 本套Java面试题大全,全的不能再全,哈哈~ 一、Java 基础 1. JDK 和 JRE 有什么区别? JDK:Java Development Kit 的简称,java 开发工具包,提供了 java 的开发环境和运行环境。 JRE:Java Runtime Environ...

python实现数字水印添加与提取及鲁棒性测试(GUI,基于DCT,含测试图片)

由python写的GUI,可以实现数字水印的添加与提取,提取是根据添加系数的相关性,实现了盲提取。含有两种攻击测试方法(高斯低通滤波、高斯白噪声)。基于python2.7,watermark.py为主

Xshell6完美破解版,亲测可用

Xshell6破解版,亲测可用,分享给大家。直接解压即可使用

你连存活到JDK8中著名的Bug都不知道,我怎么敢给你加薪

CopyOnWriteArrayList.java和ArrayList.java,这2个类的构造函数,注释中有一句话 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 public ArrayList(Collection<? ...

相关热词 c#中如何设置提交按钮 c#帮助怎么用 c# 读取合并单元格的值 c#带阻程序 c# 替换span内容 c# rpc c#控制台点阵字输出 c#do while循环 c#调用dll多线程 c#找出两个集合不同的
立即提问