MFC算法概述

2017-05-05 01:16庄鸿昌
艺术科技 2016年11期
关键词:C语言

庄鸿昌

摘 要:MFC是微软基础类库的缩写(Microsoft Foundation Classes library),包含了用来开发C++程序和Windows程序的基础类,MFC提供了大量的工具类,可以提高程序员的编程效率,如简单数据类、文件服務类、集合类、Internet工具类等。大部分Windows应用程序框架来源于MFC,定义了应用程序的结构,实现了应用程序的公共部分,封装了大部分的Windws API函数,降低了编程难度,大大地提高了应用程序的开发速度和质量。本文着重对MFC类、MFC的应用框架和MFC的消息映射与处理三个方面来分析。

关键词:MFC;C++;C语言;面向对象程序设计

1 MFC类

类的构成。MFC库中的类按层次关系可分为根类(COjbect)、应用程序结构体类、窗口对话框和控件类等很多常用的类。下面简单介绍几种类:

1.1 根类

CObject类是MFC的抽象基类,是MFC中大多数类的根类,它提供了许多编程所需的公共操作,例如,对象的建立和删除、串行划支持、对象诊断输出、运行时信息以及集合类的兼容等。

CObject类有三种特性,对运行时类信息的支持,确定对象是否属于某一特定的类,运行时的类型信息机制允许程序检索对象的类名及其他信息。对序列化的支持,从文件中读取对象或把对象存入文件的过程。串行化的支持层,串行化是对象本身往返于介质的一个存储过程。

1.2 应用程序体系结构类

该类用于构造应用程序框架的结构,一般用来填充框架,添加应用程序。提供通用功能大多数应用程序,通常情况下,通过派生类从体系结构型类,将新成员添加或重写现有成员函数执行此操作。命令相关类、线程基类、窗口应用程序类都属于应用程序体系结构类。

1.3 MFC常用的类

CString(字符串类),封装了字符串操作的大部分功能,使用起来非常方便,可以用如下方法定义并使用CString类:

CString s1(“Hello”),s2; //定义两个字符串对象s1,s2

S2.Format(“C++ %d.”,100) //s2按格式生成字符串(类似于printf函数)

S1+=s2;

CFile类(文件类),封装了文件操作的基本功能,适合于文件的二进制读写,如下代码实现文件读操作:

CFile file; //建立文件对象

Char *pbuf =Null; //定义数据缓冲区指针

UINT ulen =0; //定义变量存储读取的内容字节数

If(file.open(“C:\\test.txt”,CFile::madeRead)) //用读方式打开文件

{

//打开文件成功

Ulen=file.GetLength(); //得到文件长度

Pubf=new char[ulen]; //定义一个动态缓冲区,和文件长度相同

File.Read(buf,ulen); //把文件内容读入数据缓冲区

File.Close(); //关闭文件

}

CArchive(存档类),是一个高级的文件类,在基本数据类型和自定义类的对象中,它能实现能面向文件进行输入和输出操作,能够读写字符串,然而CObject类本身具有序列化能力,可以实现派生类对象的文件I/O。

2 MFC的应用程序框架

目前在计算机软件领域,很多的程序框架已经逐步地被开发出来,有的用于编写单机程序,有的适合网络应用,有的针对游戏编程等。

MFC程序框架充分利用了C++语言中虚函数与多态的功能特性,首先定义好了一些常用的基类,然后用这些类的对象指针构建程序框架,并且这些类中声明了许多虚函数,在框架中的关键位置利用对象指针调用这些函数。我们在编程的时候需要继承这些基类,为派生类添加新的代码,根据需要编写基类提供的虚函数,接着把应用程序框架中的基类指针替换成派生类指针即可。

3 MFC的消息映射与处理

如何在应用程序中添加消息映射呢?首先选择一个类的派生类,再为这个类添加消息处理成员函数,消息映射以宏定义的代码实现。可以使用类向导Class Wizard工具来进行消息管理,如添加、删除消息或命令的响应函数,还可以添加消息映射代码实现。

下面介绍利用Class Wizard在程序中添加鼠标左键按下时的窗口消息处理函数的基本方法。第一步,运行VC++程序,新建EX11-2项目,启动Class Wizard。第二步,在Class name的组合框中选择CEX11-2View类,Object IDs的对象列表页随之改变,列出类名和能提供消息界面对象的ID。第三步,因为目的是在视图窗口单击鼠标并响应消息,所以在Object IDs列表中选择CEX11-2View,Messages列表中列出了该类能够响应的窗口消息和可以重写的虚函数,在其中找到并选择中WM-LBUTTONDOWN。第四步,可以看到Add Function 由原来的禁用状态变为可用状态,单击此按钮,或者双击WM-LBUTTONDOWN消息,在CEX11-2View类中就会添加一个消息响应函数OnLButtonDown(),在Member functions 成员函数列表中会添加对应的项目。第五步,单击OK按钮,完成消息响应函数的添加过程。

在这里,我们只对MFC算法做一个大体的分析和表达。随着科技和各种电子产品的更新。MFC技术也在飞速的发展。十几年的雄厚技术已经奠定了MFC的生存基础。它被设计成可移植于众多的平台,允许其应用程序适用于多种不同平台。对于多种编译器,MFC也是可以移植的,而且有许多软件开发公司已经把它作为一种基于Windows开发标准的应用程序框架。而我们需要深入学习MFC的知识。实现自我价值。获得更高能力。

参考文献:

[1] Scott Meyer . Effective C++ 改善程序设计的具体55个做法(第2版)[M].侯捷,译.北京:电子工业出版社,2007.

[2] Scott Meyer. Effective C++ 35个改善编程与设计的有效方法(第3版)[M].侯捷,译.北京:电子工业出版社,2014.

猜你喜欢
C语言
基于Visual Studio Code的C语言程序设计实践教学探索
51单片机C语言入门方法
基于C语言的计算机软件编程
C语言程序设计课程教学与学科专业相结合的探索
《C语言程序设计》翻转课堂教学改革要点
浅谈基于C语言的计算机软件程序设计
高职高专院校C语言程序设计教学改革探索
基于C语言的学生成绩管理系统的设计与实现
基于C语言的常用排序算法比较研究
论子函数在C语言数据格式输出中的应用