MFC程序设计小结
由于毕业设计要用到MFC,因此本人这段时间开始学习MFC编程,边学边做,现将一些重要的知识点总结如下:
- 创建一个MFC程序,操作步骤很简单,要点就是选择MFC AppWizard(exe)、单文档或者多文档,然后点击完成。这样一个基本MFC框架代码就生成了。
- 用户通过使用资源编辑器来生成图形用户界面,VC++6.0可以处理的资源有Accelerator(快捷键)、Bitmap(位图)、Dialog(对话框)、Icon(图标)、Menu(菜单)、Toolbar(工具栏)、Version(版本信息)、String Table(字符串表)等。用户可以自主添加这些控件来制作图形界面。
- MFC编程的核心思想是消息映射、事件驱动。消息一般指用户向应用程序传递的信息,例如用户单击鼠标左键,这就是一个消息。应用程序接受到消息后,就会做出相应的反应。这里的反应是通过消息处理函数实现的。在用户添加控件后,通过为其建立类向导,设置好相应的消息类型,添加消息处理函数。最后由用户来实现这些消息处理函数。关键字afx_msg来表明某函数为消息处理函数。
- 除了给控件建立相应的消息映射函数,我们还需要给控件建立相应的变量,给控件添加建立类向导,选择成员变量一项,确定变量名、变量类型,之后class wizard会自动添加相应的DDX函数,这是用来给指定对象建立数据交换的环境。
- MFC是用c++将win32API以类的形式封装起来了。MFC提供了几个很重要的类:CWINApp类、CDocument类、CDialog类、CFrameWnd类、CView类等,其中CWINApp类及其派生类负责整个程序的执行与终止,这也是我们看不到MFC程序入口的原因。CDocument类负责应用程序的数据管理。CDialog类负责显示和管理对话框。CFrameWnd类是边框窗口类的基类,单文档接口的边框窗口类是直接从CFrameWnd类派生的。CMDIFrameWnd类和CMDIChildWnd类都是从CFrameWnd类派生的,分别用来支持多文档接口的主边框窗口与子窗口。CView类提供了用户自定义视图类的公共接口。
- MFC新建的子对话框没有用于初始化对话框的OnInitDialog()函数,可以手动添加,也可以通过类向导添加。添加方法参考:https://jingyan.baidu.com/article/1974b289a697daf4b1f77495.html 注意要选择类对话框对应的类名,不是对话框的ID。
- 使用组框需要注意一些问题,建立一个组框之后,然后选择样式,在类型一栏先选择简单,确定下拉框的大小范围,然后再选择下移类型,这样一个下拉列表就完成了。
- MFC中可以给单文档程序添加背景图片,操作方法如下:https://blog.csdn.net/menshu1892/article/details/69569647
- MFC程序中,通过AfxMessageBox()这个函数来输出信息,相当于控制台程序里的printf()函数,这是一个非常重要的函数,在调试程序的过程中常常需要使用到这个函数。
- MFC程序中设置主窗口标题的方法:
在C项目名App::InitInstance()中,找到m_pMainWnd所在的位置(在函数返回前)添加一句代码:
m_pMainWnd->SetWindowText("Your Title");即可。
- 在新建一个对话框时,会自带‘确定‘与‘取消‘按钮。确定按钮默认ID是IDOK,取消按钮默认ID是IDCANCEL,如果你没有在你的对话框类中重载OnOK,OnCancel函数的话,就调用基类的OnOk,OnCancel函数。这两个函数都调用EndDialog();函数来结束对话框。
- 有时候可能会遇到这样一种情况:在编译的时候,提示对话框的ID没有定义,但是这个这个时候明明定了对话框的ID,这种情况一般出现在一个对话框里调用另一个对话框这种情况。解决办法有两种:1、将对应的对话框ID换成数字,数字可以在资源文件resource.h里查看。2、在对话框的实现文件里包含resource.h。
这里我个人推荐一片关于MFC新手入门,写的很不错,链接:https://wenku.baidu.com/view/bcc4a34000f69e3143323968011ca300a6c3f6a5.html
MFC程序设计小结的更多相关文章
- MFC学习小结
2019/1/13 视频来源 一. MFC框架中一些重要的函数 1. InitInstance函数 应用程序类的一个虚函数,MFC应用程序的入口.初始化的作用. 2. PreCreateWindo ...
- MFC消息响应机制分析
---- 摘要: ---- MFC是Windows下程序设计的最流行的一个类库,但是该类库比较庞杂,尤其是它的消息映射机制,更是涉及到很多低层的东西,我们在这里,对它的整个消息映射机制进行了系统的分析 ...
- VC++/MFC(VC6)开发技术精品学习资料下载汇总
工欲善其事,必先利其器,VC开发MFC Windows程序,Visual C++或Visual Studio是必须的,恩,这里都给你总结好了,拿去吧:VC/MFC开发必备Visual C++.Visu ...
- 基于MFC的Opengl实现动画
对于了解MFC程序设计的来说,就太简单了.像我这种的,还是有必要记下来. OnCreate设置定时:SetTimer(1, 10, NULL);//设置#1定时器 key point void COp ...
- vc++深入跟踪MFC程序的执行流程
在MFC程序设计的学习过程中最令人感到难受,甚至于有时会动摇学习者信心的就是一种对于程序的一切细节都没有控制权的感觉.这种感觉来源于学习者不知道一个MFC程序是如何运行起来的(即一个MFC程序的执行流 ...
- vs2015c++/MFC入门知识全集/实例规范书籍视频下载孙鑫c++对话框计算器基础控件使用教程系列
VIP教程可免费看.可免费下载前部分试看教程地址:http://dwz.cn/4PcfPk免费下载地址:http://dwz.cn/mfc888 本课程目录 67章 [MFC项目开发第01天]Wind ...
- 图像处理程序框架—MFC相关知识点
CDC:Windows使用与设备无关的图形设备环境(DC :Device Context) 进行显示 . MFC基础类库定义了设备环境对象类----CDC类. CDC与CGdiObject的关系 说道 ...
- 201771010126 王燕《面向对象程序设计(Java)》第十周学习总结
实验十 泛型程序设计技术 实验时间 2018-11-1 1.实验目的与要求 (1) 理解泛型概念: 泛型:也称参数化类型(parameterized type),就是在定义类.接口和方法时,通过类型 ...
- MFC用串行化实现文档存储和读取功能
在面向对象的程序设计中,一般都是用二进制文件来保存文档资料.在VC++中控制和使用文件流的方法很多,MFC程序设计中常用的有两种方法:用CFile对象存储和读取文件:利用串行化存取文件.其中用CFil ...
随机推荐
- CSS揭秘(三)形状
Chapter 3 1. 椭圆 椭圆的实现主要依靠 border-radius 属性,该属性确定边框切圆角的半径大小,可以指定数值 px,也可以使用百分比显示 而且该属性非常灵活,四个角可以分别设置 ...
- Django REST framework+Vue 打造生鲜超市(二)
三.Models设计 3.1.项目初始化 (1)进虚拟环境下安装 django2.0.2 djangorestframework和相关依赖mark,filter pillow 图片处理 pip in ...
- OAuth2.0学习(2-1)Spring Security OAuth2.0 开发指南
开发指南:http://www.cnblogs.com/xingxueliao/p/5911292.html Spring OAuth2.0 提供者实现原理: Spring OAuth2.0提供者实际 ...
- api-gateway实践(05)新网关工作 - 缓存定义
一.缓存分类 1.服务注册信息 1.1.[GroupCode_VersionCode]对应[Version定义]的缓存 缓存类型:hash ...
- SpringCloud的服务消费者 (二):(rest+feign/ribbon)声明式访问注册的微服务
采用Ribbon或Feign方式访问注册到EurekaServer中的微服务.1.Ribbon实现了客户端负载均衡,Feign底层调用Ribbon2.注册在EurekaServer中的微服务api,不 ...
- 新概念英语(1-51)A pleasant climate
新概念英语(1-51)A pleasant climate Does it ever snow in Greece? A:Where do you come from? B:I come from G ...
- C# word文档转换成PDF格式文档
最近用到一个功能word转pdf,有个方法不错,挺方便的,直接调用即可,记录下 方法:ConvertWordToPdf(string sourcePath, string targetPath) so ...
- django 配置URLconf和获取值
django中正确配置url匹配找到视图: 1 在项目下的settings.py中ROOT_URLCONF = "项目名.urls" 表示 前台发来请求会先去项目下的test3/u ...
- Python之线程
操作系统线程理论 线程概念的引入背景 进程 之前我们已经了解了操作系统中进程的概念,程序并不能单独运行,只有将程序装载到内存中,系统为它分配资源才能运行,而这种执行的程序就称之为进程.程序和进程的区别 ...
- SpringMVC(一):搭建一个SpringMVC helloword项目
操作步骤: 1)下载spring framework开发包,给eclipse安装spring开发插件,如何安装开发插件&下载开发包请参考我的博文:<Spring(一):eclipse上安 ...