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 ...
随机推荐
- HTML 字符集
在 HTML 中,正确的字符编码是什么? HTML5 中默认的字符编码是 UTF-8. 这并非总是如此.早期网络的字符编码是 ASCII 码.后来,从 HTML 2.0 到 HTML 4.01,I ...
- Python 简单聊天室
#coding=utf-8 from socket import * from threading import Thread import time udpSocket = socket(AF_IN ...
- 外网访问本地服务器下的web应用
让本地服务器可以在外网访问的方式有很多,介绍其中一种: 由于本人是在自己电脑上装了一个虚拟机, 测试环境为:虚拟机作为服务器,服务器中装了一个禅道,虚拟机IP192.168.2.221,本人通过tpl ...
- js 中bind
function fn(a){ this.innerHTML = a; console.log(this); } //fn("hello"); span1.onclick =fun ...
- python 模块部分补充知识
一.hashlib hashlib 模块主要用于加密相关的操作,代替了md5模块和sha模块,主要提供 SHA1, SHA224, SHA256, SHA384, SHA512 ,MD5 算法. 实例 ...
- python 之 列表list && 元组tuple
目录: 列表 列表基本操作 列表的操作符 列表的函数和方法 元组 介绍: 列表是一种可变的有序集合,可以进行访问.添加和删除操作. 元组是一种不可变的有序集合,可以访问. 1.列表的基本操作 创建列表 ...
- 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 'like '%逸%'' at line 1
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE mapper PUBLIC "-/ ...
- Spring Security入门(3-1)Spring Security的登录页面定制
- Codeforces Round #436 (Div. 2) B. Polycarp and Letters
http://codeforces.com/contest/864/problem/B 题意: 给出一个字符串,要求找到一个集合S,使得从S中选出的所有数,在这些数的位置上的字母全部为小写且是不同的字 ...
- 'gbk' codec can't encode character解决方法
使用Python写文件的时候,或者将网络数据流写入到本地文件的时候,大部分情况下会遇到:UnicodeEncodeError: 'gbk' codec can't encode character ' ...