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 ...
随机推荐
- IDEA插件和快捷设置
前言 IDEA全名Intellij IDEA,是Java开发的集成环境,它有两个版本,专业版(Ultimate)和社区版(Community),专业版需要注册,而社区版不用注册,同时需要注意的是社区版 ...
- MySQL ID排序乱了的解决办法
可能在整理表中数据的时候删除了某一行数据,导致ID空缺,下面是我用到的解决办法:(请先备份,MySQL备份方法见 MySQL->MySQL备份) 使用ALTER DROP删除原有的ID字段: A ...
- Mybatis的原始dao开发方法
在进入主题之前先提一下sqlSession.sqlSession是一个面向用户(程序员)的接口. sqlSession中提供了很多操作数据库的方法,如: selectOne(返回单个对象).selec ...
- Python-字符串及列表操作-Day2
1.数据类型 1.1 变量引出数据类型 变量:用来记录状态变量值的变化就是状态的变化,程序运行的本质就是来处理一系列的变化 1.2 五大基本数据类型: 数字 字符串 列表 元组 字典 1.2.1 数字 ...
- css3中的动画 @keyframes animation
动画的运用比较重要.接下来我希望针对我自己学习遇到的问题,再总结一下这个属性的使用方法. 创建一个动画: @keyframes 动画名 {样式} 引用自己创建的动画: animation:动画名 时 ...
- Python之进程
进程 进程(Process)是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,是操作系统结构的基础.在早期面向进程设计的计算机结构中,进程是程序的基本执行实体:在当代 ...
- Spring之AOP编程
一.AOP简介 AOP的英文全称是Aspect Oriented Programming,意为:面向切面编程. AOP采取横向抽取的机制,取代了传统纵向继承体系的代码复用.AOP常用于 ...
- Django多级评论
一.原理 #多级评论原理简单原理,弄完之后发现基础白学了 msg_list = [ {'id':1,'content':'xxx','parent_id':None}, {'id':2,'conten ...
- ZOJ-1456 Minimum Transport Cost---Floyd变形+路径输出字典序最小
题目链接: https://vjudge.net/problem/ZOJ-1456 题目大意: Spring国家有N个城市,每队城市之间也许有运输路线,也可能没有.现在有一些货物要从一个城市运到另一个 ...
- Python将excel文件从xls转换为xlsx
本文使用场景:将一个xls格式Excel文件转换为xlsx文件格式.接下来将一步一步演示该操作.你也可以对代码进行修改使其适用于你所需的场景. 安装Python3 首先需要安装Python,我这里安装 ...