MFC类库简介(一)

来源:互联网 发布:北邮 校园网络电视 编辑:程序博客网 时间:2024/06/05 18:41

 说明:本文是我学习MFC时写的笔记,引用了《Visual C++ 6.0编程实用技术与案例》(清华大学出版社 陈元琰 邓宗明 张睿哲 张晓竞 编著),因此本文仅用于相互交流,切勿用于商业用途,本人不承担任何责任!

1、概要

   微软基础类库(Microsoft Class Library,MFC)由两大部分组成:一是通常所说的C++类库,是MFC类库的主体部分,这些类构成了MFC应用程序框架。二是MFC预定义宏、全局变量和全局函数,是MFC类库的辅助部分,它们都是用MFC进行Windows应用程序开发的不可缺少的组成部分。
2、MFC类库简介

2.1 根类

    CObject类是大多数MFC类的最终基类,它们都继承了CObject类的三个主要特征:
    (1)在运行时识别对象所属的类
     (2) 支持串行化,把对象存入文件中及从文件中读取对象
    (3) 在运行时打印诊断信息

    每个从CObject类派生的类还有一个相关的CRuntimeClass结构,可以在运行时获取对象的信息。通过对RUNTIME_CLASS宏的调用可获得与指定类对应的CRuntimeClass结构。

    用户也可以直接从CObject类派生自已的类以获得这些特性。为此,应遵循以下步骤:
    (1) 在类声明中包含宏DECLARE_SERIAL;
    (2) 为类提供一个默认的构造函数,这是一个无参数的构造函数。
    (3) 在用来定义类成员函数的C++源文件中,包含宏IMPLEMENT_SERIAL。
    (4) 重载成员函数Serialize()。

2.2 命令发送类

    命令发送类CCmdTarget封装了用户通过选择菜单或工具栏按钮向应用程序发送命令的界面。封装了MFC消息映射机制,支持命令和消息的自动发送,保证命令和消息正确发送到目的地。命令发送类CCmdTarget从CObject类派生,是应用程序结构类和窗口类的基类。但CCmdTarget类在应用程序中很少直接使用。

    CCmdUI类是一个与CCmdTarget类相关的有特殊用途的支持类,它封装了用于更新用户接口对象(如菜单项和工具栏按钮)的可编程界面,用在CCmdTarget类派生类的ON_UPDATE_COMMAND_UI控制函数中,该类没有任何基类。

2.3 应用程序结构类

     应用程序结构类(Application Architecture Class)提供了应用程序的几乎所有通用功能,它们构成了windows应用程序的主要框架。我们通过这些类的派生类,添加新成员函数或重载现有成员函数以实现需要的功能,从而构造应用程序框架。

   1、应用程序线程支持类

   MFC支持多线程。所有的应用程序至少有一个线程,这个线程由CWinApp类的对象使用,被称为主线程。每个应用程序有且只有一个CWinApp类或其派生类的全局对象,它在程序运行中协调基他对象的动作。

   CWinThread类是所有线程类的基类,封装了操作应用程序的多线程功能。CWinThread类是多线程应用程序的线程类的直接基类。

   CWinApp是CWinThread类的派生类,封装了基于MFC的windows应用程序的初始化、运行及终止等功能。CWinApp的全局对象控制着整个应用程序的流程。

   2、文档类

   文档类封装了应用程序的数据管理,文档类对象由由文档模板创建。

   CDocument 类是文档类的基类,用户应用程序文档类可从CDocument类直接派生。CDocument类支持一些标准操作,如:新建文档,打开文档、和存储文档等。

   3、文档模板类

   文档模板类将文档、视图及边框窗口相互联系起来,在创建新文档或视图时协调文档、视图及边框窗口的创建。

   CDocTemplate类是一个抽象基类,它为文档模板封装了基本功能,用户不能直接使用该类。

   CMultiDocTemplate为多文档接口(MDI)提供了模板。

   CSingleDocTemplate为单文档接口(SDI)提供模板。
 应用程序结构类还包括其他一些主要与OLE有关的类。

原创粉丝点击