一 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. modelsim(3) - summary ,issue,tips

    1) the OEM of modelsim is 10 times slower than offical questa 2)how to the file full path in the mod ...

  2. git 忽视大小写

    git config core.ignorecase false http://stackoverflow.com/questions/3011625/git-mv-and-only-change-c ...

  3. [Qt系列] 何处下载,如何安装!

    时间:2016.07.29 -------------------------------------------- 其实方法有很多! 我的思路是想独立使用它,不想联合VS. 下载地址:http:// ...

  4. 缓存工具CacheUtil - 并发环境的缓存值存取

    缓存工具CacheUtil - 并发环境的缓存值存取 目的 适合并发环境的缓存值存取 读取缓存值时,只需关注数据来源.不用再关注将源数据存入缓存等后续处理. 应用程序N次读取数据时,数据源读取一次,缓 ...

  5. Python全栈开发day9

    一.面向对象进阶 1.利用python反射查看面向对象成员 对于对象:反射既可以找对象,类的成员 对于类:反射只能找类中的成员 2.利用反射操作模块(查找类,创建对象,查找对象中字段) 1 2 3 4 ...

  6. Delphi2010中DataSnap高级技术(7)—TDSServerClass中Lifecycle生命周期三种属性说明

    Lifecycle 三种属性: Session.Invocation.Server 这三种属性都用在什么情况,有什么要注意的事项,Delphi2010中罕有说明. 如果乱用这三种属性,你的服务程序有可 ...

  7. UVa 1354 天平难题 Mobile Computing

    整个题考虑起来 最主要要计算的状态 是树的状态 于是要计算出所有可能挂坠可能组成的树的所有形态 tree 用于保存这些状态 考虑不要重复计算,有一个vis 数组 预处理可以先计算出一棵树的重量,简化计 ...

  8. UIButton中setTitleEdgeInsets和setImageEdgeInsets的使用

    UIButton内有两个控件titleLabel和imageView,可以用来显示一个文本和图片,这里的图片区别于背景图片.给UIButton设 置了title和image后,它们会图片在左边,文本在 ...

  9. EBS 追前台最后一个执行的sql

    首先 从前台获取sid 然后 获取sql地址 ; 最后 获取sql文本 select * from v$sqltext_with_newlines t where t.ADDRESS = '07000 ...

  10. CSS考试题目

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...