一 MFC的概念和作用
1 什么是MFC??
全称 Microsoft Foundation Class Library我们称之为微软基础类库
1)从硬盘的存在形式上来说 MFC就是一个库(静/动态库)
2)从原理上来说 MFC还是一个程序框架
2 为什么使用MFC??
基于框架编程提高工作效率,减少开发周期,节约开发成本。
二 几个重要的头文件
afx.h - 包含了MFC库中绝大部分类的声明
afxwin.h - 包含了afx.h和windows.h
afxext.h - 包含了扩展类的声明 例如:工具栏类,状态栏类....

附:*******************************************
以Afx....开头的函数,可以确定为MFC库中封装的全局函数
以::......开头的函数,可以确定为WIN32的API函数

三 MFC程序的分类
1 使用MFC库制作自己的控制台程序
多了一个全局对象 CWinApp theApp
入口函数不同于以往的入口
2 使用MFC库制作自己的静态库程序
3 使用MFC库制作自己的动态库程序
3.1 使用(静/动态)MFC库制作自己的规则动态库程序
3.2 使用MFC制作自己的扩展动态库
区别:规则动态库可以被所有程序调用
扩展动态库只能被支持MFC的程序调用
4 使用MFC库制作自己的窗口程序
单文档视图构架程序
CFrameWnd - 框架窗口类,封装了关于框架窗口的各种操作
CWinApp - 应用程序类,负责管理流程。
CDocument - 文档类,封装了关于数据的操作(提取/转换/存储..)
CView - 视图窗口类,封装了关于视图窗口的操作(显示数据)
多文档视图构架程序
CMDIChildWnd - 子框架窗口类,封装了子框架窗口的操作。
CMDIFrameWnd - 主框架窗口类,封装了关于主框架窗口的各种操作。
CWinApp - 应用程序类,负责管理流程。
CDocument - 文档类,封装了关于数据的操作(提取/转换/存储..)
CView - 视图窗口类,封装了关于视图窗口的操作(显示数据)
对话框构架程序
CWinApp - 应用程序类,负责管理流程。
CDialog - 对话框窗口类,封装了关于对话框窗口的各种操作。
四 MFC库中类的概述
1 CObject - MFC库中绝大部分类的最基类
运行时类信息机制 / 动态创建机制 / 序列化机制
2 CCmdTarget - 消息映射机制的最基类
3 CWinThread/CWinApp - 应用程序类,负责管理流程
4 CDocument及其子类 - 文档类,封装了关于各种数据的操作
5 Exceptions - 异常处理类,封装了MFC库中各种异常情况
6 CFile及其子类 - 文件操作类,封装了关于各种文件的 读/写 操作
7 CWnd - 所有窗口类的最基类。
8 Frame Windows - 框架窗口类,封装了关于各种框架窗口的操作
9 Dialog Boxes - 对话框窗口类,封装了关于各种对话框窗口的操作
10 Views - 视图窗口类,封装了各种视图窗口的操作
11 Controls - 控件窗口类,封装了各种控件窗口的相关操作
12 CDC及其子类 - 封装了各种绘图设备
13 CGdiObject及其子类 - 封装了关于各种绘图对象的操作。
14 Arrays / Lists / Maps - 封装了C++语法中相应数据结构的操作
15 非CObject类 - 封装了相应结构的操作。
例如: CPoint / CRect / CSize / CTime.....
五 第一个MFC程序
1 配置环境
1.1 将入口函数WinMain删除
1.2 将头文件更改为<afxwin.h>
1.3 Project-->Settings中设置为使用MFC库
2 代码的书写
2.1 从CFrameWnd类派生了一个自己的框架窗口类 CMyFrameWnd
2.2 从CWinApp类派生了一个自己的应用程序类CMyWinApp,并重写父类
的虚函数(InitInstance)
2.3 在InitInstance虚函数中,定义框架类对象并调用Create函数创建框架
窗口
3 程序的执行流程
3.1 构造全局对象theApp(爆破点)
1)将&theApp保存到 当前程序线程状态信息中。
2)将&theApp保存到 当前程序模块状态信息中。
3)AfxGetThread()/AfxGetApp() - 返回&theApp。
3.2 进入入口函数(WinMain)
1)利用AfxGetThread()/AfxGetApp()获取&theApp
2)利用theApp对象调用应用程序类的成员虚函数
InitApplication(初始化)
3)利用theApp对象调用应用程序类的成员虚函数
InitInstance(创建/显示窗口)
4)利用theApp对象调用应用程序类的成员虚函数Run(消息循环)
5)如果没有消息利用theApp对象调用应用程序类的成员虚函数
OnIdle(空闲处理)
6)程序退出时利用theApp对象调用应用程序类的成员虚函数
ExitInstance(善后处理)

易悦(深圳)科技有限公司

让快乐更简单

微信:EJoyYOJOY

微博:http://weibo.com/EJoyYOJOY

官网:http://www.ejoytec.com/

MFC - 微软基础类库和框架的更多相关文章

  1. JDK框架简析--java.lang包中的基础类库、基础数据类型

    题记 JDK.Java Development Kit. 我们必须先认识到,JDK不过,不过一套Java基础类库而已,是Sun公司开发的基础类库,仅此而已,JDK本身和我们自行书写总结的类库,从技术含 ...

  2. MFC编程基础

    http://www.cnblogs.com/lzmfywz/archive/2012/03/15/2399403.html 一.MFC类库概述 MFC(Microsoft Foundation cl ...

  3. Sangmado 公共基础类库

    Sangmado 涵盖了支撑 .NET/C# 项目开发的最基础的公共类库,为团队在不断的系统开发和演进过程中发现和积累的最公共的代码可复用单元. Sangmado 公共类库设计原则: 独立性:不与任何 ...

  4. 【PHP 基础类库】Prototype 原型版教学文章!

    前言 大家好我是:石不易,今天我为大家带来了PHP基础类库原型版的教学文章,至此本人的作品线已分为三大类,分别是:JavaScript前端框架(封装库).PHP模板引擎.以及PHP基础类库.该类库历时 ...

  5. C#-概念-基础类库:基础类库

    ylbtech-C#-概念-基础类库:基础类库 基础类库 (BCL) 是微软所提出的一组标准库可提供.NET Framework所有语言使用. 随着 Windows 以及 .NET Framework ...

  6. 深入浅出node.js游戏服务器开发1——基础架构与框架介绍

    2013年04月19日 14:09:37 MJiao 阅读数:4614   深入浅出node.js游戏服务器开发1——基础架构与框架介绍   游戏服务器概述 没开发过游戏的人会觉得游戏服务器是很神秘的 ...

  7. Java以基础类库

    Java以基础类库JFC(Java Foundation Class)的形式为程序员提供编程接口API,类库中的类按照用途归属于不同的包中. (一)java.lang包 Java最常用的包都属于该包, ...

  8. 转一个 C#基础类库

    转自:http://www.cnblogs.com/sufei/archive/2012/12/07/2807170.html http://www.sufeinet.com/thread-655-1 ...

  9. Java中基础类库使用

    Java中基础类库: 在这里我仅仅介绍几种我个人觉得会常常使用的 1:Object类中的Clone机制仅仅是对对象进行浅层次的克隆,假设须要进行深层次的克隆的话那么就要自己写(详细Clone方法请參考 ...

随机推荐

  1. 修改eclipse运行内存的大小

    一.    尝试修改Eclipse.ini 文件 (此方法不行) 找到eclipse 目录下的eclipse.ini 文件,修改下面的内容: -Xms40m -Xmx512m 修改后重启eclipse ...

  2. NodeJS 常用模块

    NodeJS 模块: n:NodeJS 版本管理/切换 参考: https://github.com/tj/n ExpressJS:Web 框架 参考: http://expressjs.com/ m ...

  3. windows下手动安装和配置xamarin

    安装xamarin xamarin官方给出了两种安装方式,自动安装和手动安装. 自动安装比较简单,到http://xamarin.com/download下载xamarininstaller.exe ...

  4. 手动部署servlet

    1.编写servlet,在tomcat\webapps目录下新建文件Test,Test目录如下 Test | classes   web.xml | test01 | Servletfirst.jav ...

  5. [软件工程] 查找二维数组最大子数组的之和 郭莉莉&李亚文

    一. 在主函数中实现二维数组的输入. 代码主要函数maxson(),主要利用for()循环先查找出最大字数组的四角的坐标xmin,xmax,ymin,ymax来确定最大子数组, 在循环中算出之和,编写 ...

  6. Servlet学习四——传输文本

    在最初使用Servlet时,觉得get方法很好用,也了解到传输一般性的变量,除了文件流和安全性外,都可以用get方法,所以,也就习惯用get方法了. 在实现一个注册方法过程中,中文注册都是乱码,跟踪后 ...

  7. 深入理解 NodeList

    在web前端编程中,我们通常会通过document.getElementsByTagName的方法取出一组相同标签的dom元素,比如: var list = document.getElementsB ...

  8. DirectX12 Samples 学习笔记 – PredicationQueries

    一.效果 这是一个比较简单的sample,运行sample可以看到,当红橙色长方形完全覆盖白色正方形时,白色正方形不显示,其他情况,均显示白色正方形. 二.实现 Render主要由三个部分组成 1.F ...

  9. PowerDesginer 生成的Oracle 11g 组合触发器代码编译错误(29): PLS-00103

    问题描述: 采用PowerDesigner15针对Oracle 11g 创建物理数据模型,想实现一个字段的自增,采用如下步骤: 1.创建序列,命名为Sequence_1; 2.在自增字段编辑窗口中,选 ...

  10. PTA Insert or Merge

    According to Wikipedia: Insertion sort iterates, consuming one input element each repetition, and gr ...