2017lck春季赛冠军:MFC是什么

来源:百度文库 编辑:神马品牌网 时间:2024/04/28 12:11:03
MFC是什么

微软基础类库,microsoft foundation class.
为了减少代码编写,微软把一些常用的类封装在一个库里,供大家公用,调用。即MFC。

什么是MFC?

如果你要建立一个 Windows 应用程序,应该如何下手?
好的开端是从设计用户界面开始。首先,你要决定什么样的用户能使用该程序并根据需要来设置相应的用户界面对象。Windows 用户界面有一些标准的控件,如按钮、菜单、滚动条和列表等,这对那些 Windows 用户已经是很熟悉了。 要记住的是,作为程序员必须选择一组控件并决定如何把它们安排到屏幕上。传统上,你需要在纸上做一下用户界面的草图,直到对各元素感到满意为止。这对于一些比较小的项目,以及一些大项目的早期原型阶段是可以的。下一步,是要实现代码。为任何 Windows 平台建立应用程序时,程序员都有两种选择:C 或 C++。 使用 C,程序员是在 Windows 应用程序界面 ( API ) 的水平上编写代码。该界面是由几百个 C 函数所组成,这些函数在Windows API 参考手册中都有介绍。对于Windows NT, API 被称为 "Win32 API",以区别于其用于Windows 3.1的16位 API, Microsoft 也提供了 C++ 库,它位于任何 Windows API 之上,能够使程序员的工作更容易。它就是Microsoft基本类库 (MFC),该库的主要优点是效率高。它减少了大量在建立 Windows 程序时必须编写的代码。同时它还提供了所有一般 C++ 编程的优点,例如继承和封装。MFC 是可移植的,例如,在 Windows 3.1下编写的代码可以很容易地移植到Windows NT 或 Windows 95 上。因此,MFC 很值得推荐的开发Windows 应用程序的方法。在本教程自始至终使用的都是 MFC。当是使用MFC时,你编写的代码是用来建立必要的用户界面控件并定制其外观。同时你还要编写用来响应用户操作这些控件的代码。例如,如果用户单击一个按钮时,你应该有代码来响应。这就是事件驱动代码,它构成了所有应用程序。一旦应用程序正确的响应了所有允许的控制,它的任务也就完成了 。
Visual C++ 应用程序开发程序环境特别适合于使用 MFC (也有其它开发环境使用MFC,如C++ builder也包含了对MFC的支持),所以一起学习 MFC和 Visual C++ 能够增强你的开发程序的能力。

Windows应用程序使用几个标准的控件:

静态文本标签
按钮
列表框
组合框(一种更高级的列表框)
单选按钮 (单选框)
检查按钮 (复选框)
编辑框(单行和多行)
滚动条

你可以通过代码或"资源编辑器"来建立这些控件,在资源编辑器中可以建立对话框和这些控件。在本教程中,我们将使用代码来建立它们。
Windows支持几种类型的应用程序窗口。一个典型的应用程序应该活动在称为"框架窗口"中。一个框架窗口是一个全功能的主窗口,用户可以改变尺寸、最小化、最大化等。Windows也支持两种类型的对话框:模式和无模式对话框。模式对话框一旦出现在屏幕上只有当它退出时,屏幕上该应用程序的其余部分才能响应。无模式对话框出现在屏幕上时,程序的其余部分也可以作出响应,它就象浮动在上面一样。
最简单的 Windows 应用程序是使用单文档界面(SDI),只有一个框架窗口。Windows的钟表、PIF 编辑器、记事本等都是 SDI 应用程序的例子。Windows 也提供了一种称为多文档界面的组织形式,它可用于更复杂的应用程序。MDI 系统允许用户在同一应用程序中同时可以查看多个文档。例如,一个文本编辑器可以允许用户同时打开多个文本文件。使用 MDI时,应用程序有一个主窗口,在主窗口中有一些子窗口,每个子窗口中各自包含有各自的文档。在MDI框架中,主窗口有一个主菜单,它对主框架中最顶端窗口有效。各子窗口都可以缩成图标或展开,MDI主窗口也可以变成桌面上的一个图标。MDI界面可能会给你一种第二桌面的感觉,它对窗口的管理和删除混乱的窗口有很大的帮助。
你所建立的每一个应用程序都会使用它自己的一套控件、菜单结构以及对话框。应用程序界面的好坏取决于你如何选择和组织这些界面对象。Visual C++ 中的资源编辑器可以使你能容易的建立和定制这些界面对象。

事件驱动软件和词汇

所有基于窗口的GUI 都包含相同的基本元素,它们的操作方式都是相同的。在屏幕上,用户所看到的是一组窗口,每个窗口都包含有控件、图标、对象以及一些处理鼠标和键盘的元素。从用户角度来看,各系统的界面对象都是相同的:按钮、滚动条、图标、对话框以及下拉菜单等等。尽管这些界面元素的"外观和感觉"可能有些不同,但这些界面对象的工作方式都是相同的。例如,滚动条对于Windows、Mac和Motif 可能有些不同,但他们的作用完全是一样的。

从程序员的角度来看,这些系统在概念上是相似的,尽管它们可能有很大的不同。为了建立GUI 程序,程序员第一步要把所有需要的用户界面控件都放到窗口上。例如,如果程序员要建立一个从摄氏到华氏的转换的简单程序,则程序员所选择的用户界面对象来完成并在屏幕上把结果显示出来。在这个简单的程序中,程序员可能需要用户在一个可编辑的编辑框中输入温度值,在一个不可编辑的编辑框中显示转换结果,然后让用户可以单击一个标有"退出"的按钮来退出应用程序。

因为是用户来操作应用程序的控制,所以程序必须作出响应。所做的响应依赖于用户使用鼠标或键盘在不同控制上的操作。屏幕上的每个用户界面对象对事件的响应是不同的。例如,如果用户单击退出按钮,则该按钮必须更新屏幕、加亮它自己。然后程序必须响应退出。
Windows 所用的模式也是类似的。在一个典型的应用程序中,你将建立一个主窗口,并且在其中放置了一些用户界面控件。这些控件通常被称为子窗口--它们就象一些在主窗口中的更小更特殊的子窗口。作为程序员,你应该通过函数调用来发送信息操作这些控件、通过把信息发送给你到代码来响应用户的操作。
如果你从未做过事件驱动程序设计,则所有这些对你来说可能是很陌生的。但是,事件驱动程序设计方式是很容易理解的。具体的细节对不同的系统可能有些不同,但是其基本概念是类似的。在一个事件驱动界面中,应用程序会在屏幕上绘制几个界面对象,如按钮、文本区和菜单。应用程序通常通过一段称为事件循环的的代码来响应用户的操作。用户可以使用鼠标或键盘来任意操作屏幕上的对象。例如,用户用鼠标单击一个按钮。用鼠标单击就称为一个事件。事件驱动系统把用户的动作如鼠标单击和键盘操作定义为事件,也把系统操作如更新屏幕定义为事件。
在比较低级的编程方法中,如用C直接编写Windows API应用程序,代码量是非常大的,因为你所要照顾的细节太多了。例如,你用某种类型的结构来接收单击鼠标事件。你的事件循环中的代码会查看结构中不同域,以确定哪个用户界面对象受到了影响,然后会完成相应的操作。当屏幕上有很多对象时,应用程序会变得很大。只是简单地处理哪个对象被单击和对它需要做些什么要花费大量的代码。
幸运的是,你可以在比较高级的方法来进行编程,这就是使用MFC。在MFC中,几乎所有的低级的细节处理都为你代办了。如果你把某一用户界面对象放在屏幕上,你只需要两行代码来建立它。如果用户单击一个按钮,则按钮自己会完成一切必要的操作,从更新屏幕上的外观到调用你程序中的预处理函数。该函数包含有对该按钮作出相应操作的代码。MFC 为你处理所有的细节:你建立按钮并告知它特定的处理函数,则当它被按下时,它就会调用相应的函数。第四部分介绍了怎样使用消息映射来处理事件。

microsoft foundation class是微软的类库,它是对api的封装,以便我们使用

C++的类库