欢迎来到天天文库
浏览记录
ID:35997934
大小:33.19 KB
页数:6页
时间:2019-04-29
《mfc应用程序框架入门》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、找家教,到阳光阳光家教网全国最大家教平台MFC应用程序框架入门摘要:本文主要对VC++6.0的MFC编程方法及MFC应用程序框架进行简要介绍。 关键词:VC++6.0;MFC;程序框架 1MFC概述 顾名思意,MFC应用程序框架是以MFC作为框架基础的,以此程序框架模式搭建起来的应用程序在程序结构组织上是完全不同于以前的Win32SDK编程方式的。自20世纪90年代初问世以来,MFC一直试图把WindowsAPI函数封装到类库中个各个逻辑类中。MFC的这种封装并非简单地对API函数进行分组与打包,而是更多地通过类来试图实现全部的系统策略。随
2、着越来越多系统功能的加入,MFC的规模也在不断拓展,目前已包括有200多个类,涵盖了通用Windows类、文档/视框架、OLE、数据库、Internet以及分布式功能等多方面的基本内容。这样一个坚实的程序开发基础无疑从很大程度上方便了程序设计人员对Windows程序的开发。 MFC提供了相当多不同功能的类以适合尽可能广泛的需求。这里绝大多数的MFC类都是直接或间接从CObject类派生出来的,CObject类为其派生类提供了三个重要的特性支持:持久性(Serialization)支持、运行时(Run-time)类信息支持和诊断(Diagnost
3、ic)调试支持等。其中持久性是以流的方式将某个类对象中的持久性数据输出或输入到外部存储介质如磁盘文件等的过程;运行时类信息(Run-timeClassInformation,RTCI)则可以重新获取一个对象的类名及其他一些有关对象在运行时的信息。RTCI也是C++中除运行时类型信息(Run-timeTypeInformation,RTTI)机制外的另一个重要工具;诊断和调试支持作为CObject类的一个组成部分,可以在实现CObject派生类时执行有效性检查并可向调试窗口输出状态信息。 并非MFC提供的所有函数都是类成员函数,MFC也提供了一系
4、列以Afx为前缀的全局函数。类成员函数只能在其所属类对象所在的上下文中使用,但是这些AFX函数却可以在任何时候的任何地方直接使用。下表列出的是几个比较重要AFX函数:函数名函数说明AfxAbout无条件终止一个应用程序;通常在发生无法回复的错误时使用AfxBeginThread创建一个新的线程并开始执行AfxEndThread终止当前正在执行的线程AfxMessageBox显示一个Windows消息窗口AfxGetApp返回一个指向应用程序对象的指针AfxGetAppName返回应用程序名AfxGetMainWnd返回一个指向应用程序主窗口的指针
5、AfxGetInstanceHandle返回一个标识当前应用程序实例的句柄AfxRegisterWndClass为一个MFC应用程序注册一个用户自定义的窗口类2MFC对API函数的封装 如果读者曾经有过SDK的开发经历,一定会对其烦琐的编程方式和大量的Win32API函数调用深有感触。所有不同功能的API函数均是以全局函数的形式放在一起的,由于API函数数目比较庞大,因此无论是学习还是使用都是有一定难度的。相比而言,建立在API函数基础之上的MFC类库则通过把相关APIhttp://www.ygjj.com家教网找家教上阳光家教网找家教,到阳光
6、阳光家教网全国最大家教平台函数的分类封装而可以大大简化编程的难度,用MFC类编写的Windows应用程序完成相同的任务只需要进行少量的工作。 众多的API函数根据功能的不同而被MFC封装到200多个类中,这些类基本涵盖了进行Windows编程大部分可能用到的功能。由于封装后的MFC类太多,这里不能一一介绍,下面就以其中比较重要的CObject类和CWnd类为例对API函数的封装情况做一简要介绍。 CObject类是MFC中最主要也是最基本的类之一,该类不支持多重继承,派生的类只能有一个CObject基类。CObject类是位于类层次结构最顶层
7、的,绝大多数MFC类都是从CObject类派生出来的。CObject类包含了所有MFC类必须具备的几个基本功能:持久性支持、运行时类信息支持和诊断调试支持。其中持久性支持功能由成员函数IsSerializable()和Serialize()提供。前者用于检测对象是否支持序列化。如果一个类能够被序列化,就必须在声明时包含DECLARE_SERIAL宏、在实现时包含IMPLEMENT_SERIAL宏。Serialize()函数则可以将对象写入档案文件(Archive)或从档案文件读出对象。成员函数GetRuntimeClass()可以获取到一个指向C
8、runtimeClass类对象的指针,通过该指针可以得到对象的运行时类信息。CObject类在诊断调试支持方面提供了成员函数Assert
此文档下载收益归作者所有