VC入门必备--基础知识(三)

VC入门必备--基础知识(三)

MFC简介

微软基础类库(Microsof Foundation Class Library)和Visual C++提供了一个创建各种各样应用程序的环境,并简化了其中部分工作。MFC Library是Class的集合,大约有250个Class,在很大程度上扩展了C++语言;MFC Library也是一个应用程序框架(Application Framework),它定义了应用程序的结构(当然你也可以用源程序一行一行地写出自己的应用程序结构,不过这样比较麻烦),并可以处理应用程序的一些常规任务。

如果你想用MFC进行程序开发,首先你必须熟悉MFC所包含的Class以及各个Class之间的关系。MFC Class是有层次的(MFC的层次图请看http://msdn.microsoft.com/library/devprods/vs6/visualc/vcmfc/_mfc_hierarchy_chart.htm,请大家务必要看,最好把它保存下来,以便日后查找),有些Class可以直接使用,而有些Class是作为其他Class的基类(Bass Class)一般不直接使用。为了学习的方便,一般将MFC Class划分为以下几个种类:
CObject-Derived Classes
Application Architecture Classes
User-Interface Classes
General-Purpose Classes
ActiveX Classes
Database Classes
Internet Classes
Global Afx Functions
以上划分的种类之间决不是相互独立的,大多数的MFC Classes是直接或间接从CObject Class派生的,CObject Class是MFC Library中最基本的Class。

下一节我将会分别对以上几个种类的Classes做一个简单的介绍,然后我还会分别用1至2章来详细介绍上面的几种Classes。这一节的内容比较少,请大家仔细看看MFC的层次图。MFC的命名规则是:Class名以C开头,其他地方顾名思义。

以下是本节新出现的专业名词
微软基础类库 = Microsof Foundation Class Library
微软基础类 = Microsof Foundation Class (即MFC)
应用程序框架 = Application Framework
基类 = Bass Class

 

MFC的层次、分类和作用

心情随笔:本节有很多专业名词,其实这些单词从字面上并不难理解,例如”Document”,中文是” 文本”的意思,但假如把”Document Class”直接翻译成”文本类”的话,可能会把很多人搞混淆了,我觉得”文本类”比”Document Class”更难理解,正因为如此,所以我决定不把那些容易搞混淆的专业名词直译成中文了。我非常反感市面上的一些电脑书完全直译国外作品,可能是由于翻 译者的电脑水平不行,把一些专业名词凭空想象,例如有的把”Serialization”翻译成”序列化”,有的又翻译成”串行化”,完全脱离了原意。

本节将简要介绍MFC所包含的主要几种Class,大家最好要记住MFC的分类和各个Class的作用(特别是CObject派生的(CObject-Derived) Classes应用程序结构(Application Architecture) Classes用户界面(User-Interface) Classes这三种,一定要记住),这是后面章节的基础。大家现在无需知道各个Class的使用方法,因为我会在后面详细说明的。注:以下内容有部分摘自MSDN,其实我也记不住那么多Class,一般是有需要才去查帮助文件的。

一、CObject派生的(CObject-Derived) Classes

CObject是MFC大多数Class的基类,它主要提供了一些基本功能,主要包括:
Serialization,指把对象(Object)从存储媒体(例如磁盘上的文件)中读出或写入的过程;
Run-time Class信息,指从CObject派生的对象包含有在运行时可以访问的信息;
诊断输出,指CObject提供了一些输出函数,这些函数可以输出程序执行过程中的一些信息,可以帮助你调试程序。

从CObject派生的类为MFC应用程序提供了基本的结构和功能,重要的有以下几种:
 

类别基类描述
Command TargetsCCmdTarget用于处理用户请求
ApplicationsCWinApp代表应用程序的核心
DocumentsCDocument包含应用程序的数据集
WindowsCWnd主要用于图形用户界面(GUI)的对象,可以处理常见的Windows Messages
FramesCFrameWnd用于应用程序的主要Window框架
ViewsCView用于显示数据并于Document对象交互

此外,CObject-Derived Class还包括用于菜单、文件服务、图形等方面的Class。

MFC也包含了一些不是从CObect派生的类,这些类相对来说可以节省开销,主要分为以下几种:
1、用于常规编程的实用类,例如:CString, CTime, CTimeSpan, CRec, CPoint, CSize;
2、MFC结构的支持类,例如CArchive, CDumpContext, CRuntimeClass, CFileStatue, CMemoryState
3、用户定义指针的集合类,例如CTypedPointerArray

二、应用程序结构(Application Architecture) Classes

应用程序结构Class代表应用程序的基本结构元素,主要包括CWinApp, CDocument, CCmdTarget和CWinThread。当应用程序开始运行时,这些Class是最先被初始化的,它们都有很重要的作用。

1、CWinApp, 代表应用程序自己,所有的MFC应用程序都从CWinApp派生一个Class。根据应用程序框架(Framework)的种类,应用程序的对象(Object)要完成以下工作:
(1) 初始化(Initialize)应用程序
(2) 建立Document Template结构
(3) 循环检索Message Queue中的Message并派送这些Message到相应的地方
(4) 当应用程序退出时要进行”清理”工作

2、CDocument, 它是使用Document/View结构的应用程序中的Document的基类。这里的Document代表程序中的数据,是一个抽象概念,我们在开发程序时必须考虑数据如何储存到Document中。

3、CCmdTarget,它是MFC的Message映射的基础Class,从CCmdTarget派生的类可以成为Command Messages的目标。Command Messages是指由用户选择菜单或按钮等行为产生的Messages。

4、CWinThread,它的成员函数可以使MFC应用程序创建和管理线程。

三、用户界面(User-Interface) Classes

用户界面Classes主要包含Windows-based应用程序的一些可视性元素,例如:窗口、菜单、对话框、控件(Control)等,它还封装(Encapsulate)了Windows Device Context对象和Graphics Device Interface(GDI)对象。

用户界面Class包括CWnd, CView, CGdiObject和Menu这几个主要Class:

CWnd,它是所有MFC Windows的基类,它定义了Window的基本功能和Window对大部分Message的默认响应。CWnd可以直接用来派生其他Class,但通常情况下,Class是从CWnd派生的Class派生的,从CWnd派生的Class主要有:
CFrameWnd,主要用于单文档界面(Single Document Interface, 例如写字板之类的程序,一次只能打开一个Window);
CControlBar,是工具栏,状态栏等控件的基类;
CDialog,提供对话框的功能;
CButton, CListBox, CScrollBar等,主要用于按钮,列表框,滚屏栏等控件。

CView,是Document/View(一种应用程序的结构,下节再讲)应用程序的视图的基类;

CGidObject,它包含一些用于显示输出的对象(例如Pen, Brush, Font等),使MFC应用程序可以创建和使用这些对象。GDI最大的好处就是提供了设备无关性(Device-Independent),使到开发人员无需考虑不同设备的问题。

CMenu,主要用于提供菜单界面,通过CMenu,应用程序可以在运行时动态改变菜单的内容。

四、常规用途(General-Purpose) Classes

General-Purpose Classes包括各种各样的数据类型,常用的有:
CFile,用于文件的输入/输出
CString,用于管理字符串变量
CException,用于处理Exception
CByteArray, CIntArray, CStringArray, CStringList, CObList, 用于数据结构,例如数组和列表
CPoint, CSize, CRect, CTime, CTimeSpan,杂项

五、ActiveX Classes

多谢你阅读我的csdn blog,我已经建立了个人博客,基本把这里的文章都转到个人博客了,欢迎交流指教!

VC入门必备--基础知识(三)
http://www.jeanva.cn/post/56.html

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值