MFC类的组织结构及主要的类简介

本文介绍了MFC类库的组织结构,包括Cobject根类,应用程序体系结构类如CWinApp,窗口、对话框和控件类,绘图和打印类,文件和数据库类等。MFC通过层次结构将类划分为不同类别,简化了Windows应用程序的开发。文章详细阐述了Cobject的串行化和运行时类型信息,CWinApp在应用程序框架中的作用,以及文档/视图类在数据和用户界面交互中的角色。此外,还涵盖了窗口类CWnd,对话框类CDialog,以及控件类如CButton和CEdit。MFC还提供了文件I/O、绘图对象、数据库支持和OLE类,为开发者提供了全面的工具集。
摘要由CSDN通过智能技术生成
8.2.1  MFC类的组织结构
        目前的MFC版本中包含了100多个类,不同的类实现不同的功能,类之间既有区别又有联系。MFC同时还是一个应用程序框架,它帮助定义应用程序的结构以及为应用程序处理许多杂务,事实上,MFC封装了一个程序操作的每一个方面。在MFC程序中,程序员很少需要直接调用Windows  API函数,而是通过定义MFC类的对象并通过调用对象成员函数来实现相应的功能。
        MFC类库中类是以层次结构的方式组织起来的,几乎每个子层次结构都于一具体的Windows实体相对应,一些主要的接口类管理了难以掌握的Windows接口。这些接口包括:窗口类、GDI类、对象连接和嵌入类(OLE)、文件类、对象I/O类、异常处理类、集合类等。
        MFC库中的类之间按层次关系划分可分为如下若干类:
        (1) 根类:Cobject
        (2) 应用程序体系结构类
                应用程序和线程支持类
                命令相关类
                文档类
                视类(体系结构)
                框架窗口(体系结构)
                文档模板类
        (3) 窗口、对话框和控件类
                框架窗口类(窗口)
                视类(窗口)
                对话框类
                控件类
                控件条类
        (4) 绘图和打印类
                输出(设备相关类)
                        绘图工具类
        (5) 简单数据类型类
        (6) 数组、列表和映射类
                  数组类
                  列表类
                  映射类
        (7) 文件和数据库类
                  文件I/O类
                  DAO类
                  ODBC类
        (8) Internet和网络工作类
                  ISAPI类
                  Windows  Socket类
                  Win32  Internet类
        (9) OLE类
                  OLE容器类
                  OLE服务器类
                  OLE拖放和数据传输类
                  OLE普通对话框类           
                  OLE控件类
                  OLE动画类
                  活动文档类
                  其他文档类
        (10) 调试和异常类 
                  调试支持类
                  异常类
      下面简单介绍一下MFC中一些主要的类和某些子层次结构。

8.2.2 根类
       Cobject类是MFC的抽象基类,是MFC中多数类和用户自定义子类的根类,它为程序员提供了许多编程所需的公共操作。这些操作包括:对象的建立和删除、窜行化支持、对象诊断输出、运行使信息以及合类的兼容等。
        窜行化是对象本身往返于存储介质过程。窜行化的结果是使数据“固定”在介质上。Cobject类定义两个在窜行化操作中起重要作用的成员函数:Serialize和IsSeializable。程序可以调用一个由Cobject派生的对象的IsSeializable函数来确定该对象是否支持窜行化操作。建立一个支持窜行化的类的步骤之一是重载继承自Cobject类的Serialize函数,并提供窜行化数据成员的派生的专用代码。
        Cobject的派生类同时还支持运行时类型信息。运行时类型信息机制允许程序检索对象的类名及其他信息。Cobject提供两个成员函数来支持运行时的类型信息;IsKindOf和GetRuntineClass。函数IsKindOf指示一个对象是属于规定的类或者是从规定的类中派生出来的。CRuntimeClass类对象中包含了一个类的运行时信息,包括这个类的类名,基类名等信息。通过它可以很容易获得一个指定的运行时刻信息。

8.2.3 应用程序体系结构类
        该类用于构造应用程序框架的结构,它能提供多数应用程序公用的功能。编写程序的任务是填充框架,添加应用程序专用的功能。应用程序体系结构类主要有与命令相关的类,窗口应用程序类,文档/视图和线程基类等。
        CWinApp表示应用程序本身,几乎所有的基于MFC的应用程序都是从它派生一个类,并通过创建这个派生类的对象来创建一个应用程序对象。CWinApp类继承关系如图8-1所示。
1. 命令相关类:CCmdTarget类
        该类是Cobject的子类,它是MFC库中所有具有消息映射属性的基类。消息映射规定了当一个对象接收到消息命令时,应调用哪一个函数对该消息进行处理。程序员很少需要从CCmdTarget类中派生出新类如窗口类(CWnd),应用程序类(CWinApp),视图类(Cview)及框架窗口类(VFrameWnd)等。
2. 线程基类:CWinThread类
        所有线程的基类直接使用。它封装操作系统的线程化功能。CWinTread对象表示一个执行的线程,成员函数如CreateThread,SetThreadPriority和SuspendThread提供MFC程序用来创建和操作线程的工具。CWinApp类就是从CWinThread类中派生的。
3. 窗口应用程序类:CWinApp类
        每个应用程序有且只有一个应用程序对象,在运行程序中对象与其他对象相互协调,该对象从CWinApp类中派生。CWinApp类封装了初始化,运行,终止应用程序的代码。
        CWinApp类中包含了若干个共有的数据成员,部分数据成员如表8-1所示。

                                                表8-1  CWinApp类中定义的部分数据成员
          数据成员                                                                                      功能描述
    m_pszAppName                             
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值