ImageVerifierCode 换一换
格式:DOCX , 页数:48 ,大小:46.25KB ,
资源ID:8624359      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/8624359.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(Visual C MFC 一文说尽.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

Visual C MFC 一文说尽.docx

1、Visual C MFC 一文说尽第一部分:MFC导论 Visual C 不仅仅是一个编译器。它是一个全面的应用程序开发环境,使用它你充分利用具有面向对象特性的 C 来开发出专业级的 Windows 应用程序。为了能充分利用这些特性,你必须理解 C 程序设计语言。掌握了C ,你就必须掌握 Microsoft 基本类库 (MFC)的层次结构。该层次 结构包容了 Windows API 中的用户界面部分,并使你能够很容易地以面向对象的方式建立 Windows 应用程序。这种层次结构适用于所有版本的 Windows 并彼此兼容。你用 MFC 所建立的代码是完全可移植的。 该教程将向你介绍MFC的基本

2、概念和术语以及事件驱动程序设计方法。在本节中,你将会输入、编译和运行一个简单的MFC程序。下一节中将向你详细解释这些代码。第三部分讨论了MFC控制和如何定制它们。第四部分将介绍消息映射,你将会处理MFC的事件。 什么是MFC? 如果你要建立一个 Windows 应用程序,应该如何下手? 好的开端是从设计用户界面开始。首先,你要决定什么样的用户能使用该程序并根据需要来设置相应的用户界面对象。Windows 用户界面有一些标准的控制,如按钮、菜单、滚动条和列表等,这对那些 Windows 用户已经是很熟悉了。 要记住的是,作为程序员必须选择一组控制并决定如何把它们安排到屏幕上。传统上,你需要在纸上

3、做一下用户界面的草图,直到对各元素感到满意为止。这对于一些比较小的项目, 以及一些大项目的早期原型阶段是可以的。 下一步,是要实现代码。为任何 Windows 平台建立应用程序时,程序员都有两种选择:C 或 C 。 使用 C,程序员是在 Windows 应用程序界面 ( API ) 的水平上编写代码。该界 面是由几百个 C 函数所组成,这些函数在Windows API 参考手册中都有介绍。对于Windows NT, API 被称为 Win32 API,以区别于其用于Windows 3.1的16位 API。 Microsoft 也提供了 C 库,它位于任何 Windows API 之上,能够使程

4、序员的工作更容易 。它就是Microsoft基本类库 (MFC),该库的主要优点是效率高。它减少了大量在建立 Wind ows 程序时必须编写的代码。同时它还提供了所有一般 C 编程的优点,例如继承和封装 。MFC 是可移植的,例如,在 Windows 3.1下编写的代码可以很容易地移植到 Windows NT 或 Win dows 95 上。因此,MFC 很值得推荐的开发Windows 应用程序的方法,在本教程自始至终使 用的都是 MFC。 当是使用 MFC 时,你编写的代码是用来建立必要的用户界面控制并定制其外观。同时你还要编写用来响应 用户操作这 些控制的代码。例如,如果用户单击一个按钮

5、时,你应该有代码来响应。这就是事件驱动代码,它构成了所有应用程序 。一旦应用程序正确的响应了所有允许的控制,它的任务也就完成了 。 你可以看出,使用 MFC 进行 Windows 编程时是一件比较容易的的过程。本教程的目的是比 较详细地教你如何快速建立专业级的应用程序的技术。Visual C 应用程序开发程序环境特别适合于使用 MFC (也有其 它开发环境使用MFC,译者注),所以一起学习 MFC 和 Visual C 能够增强你的开发程序的能力。 Windows词汇 在 Windows 用户界面和软件开发中所要用到的词汇都是基本和唯一的。对于新接触该环境 的用户,下面复习几个定义以便使我们的

6、讨论更加容易。 Windows应用程序使用几个标准的控制: l 静态文本标签 l 按钮 l 列表框 l 组合框(一种更高级的列表框) l 单选按钮 l 检查按钮 l 编辑框(单行和多行) l 滚动条 你可以通过代码或资源编辑器来建立这些控制,在资源编辑器中可以建立对话框和这些控 制。在本教程中,我们将使用代码来建立它们。 Windows支持几种类型的应用程序窗口。一个典型的应用程序应该活动在称为框架窗口中 。一个框架窗口是一个全功能的主窗口,用户可以改变尺寸、最小化、最大化等。Windows 也支持两种类型的对话框:模式和无模式对话框。模式对话框一旦出现在屏幕上,只有当它 退出时,屏幕上该应用

7、程序的其余部分才能响应。无模式对话框出现在屏幕上时,程序的其余部分也可以作出响应,它 就象浮动在上面一样。最简单的 Windows 应用程序是使用单文档界面(SDI),只有一个框架窗口。Windows 的钟表、 PIF 编辑器、记事本等都是 SDI 应用程序的例子。Windows 也提供了一种称为多文档界面的组织形式,它可用于更复 杂的应用程序。MDI系统允许用户在同一应用程序中同时可以查看多个文档。例如,一个文本编辑器可以允许用户同时 打开多个文本文件。使用 MDI时,应用程序有一个主窗口,在主窗口中有一些子窗口,每个子窗口中各自包含有各自的 文档。在MDI框架中,主窗口有一个主菜单,它对主

8、框架中最顶端窗口有效。各子窗口都可以缩成图标或展开,MDI主窗 口也可以变成桌面上的一个图标。MDI界面可能会给你一种第二桌面的感觉,它对窗口的管理和删除混乱的窗口有很大 的帮助。 你所建立的没一个应用程序都会使用它自己的一套控制、菜单结构以及对话框。应用程序界 面的好坏取决于你如何选择和组织这些界面对象。Visual C 中的资源编辑器可以使你能容易的建立和定制这些界面对 象。 事件驱动软件和词汇 所有基于窗口的 GUI 都包含相同的基本元素,它们的操作方式都是相同的。在屏幕上,用户所看到的是一组窗口,每 个窗口都包含有控制、图标、对象以及一些处理鼠标和键盘的元素。从用户角度来看,各系统的界

9、面对象都是相同的: 按钮、滚动条、图标、对话框以及下拉菜单等等。尽管这些界面元素的外部特性可能有些不同,但这些界面对象的工作 方式都是相同的。例如,滚动条对于Windows、Mac和Motif可能有些不同,但他们的作用完全是一样的。从程序员的角 度来看,这些系统在概念上是相似的,尽管它们可能有很大的不同。为了建立 GUI程序,程序员第一步要把所有需要的 用户界面控制都放到窗口上。例如,如果程序员要建立一个从摄氏到华氏的转换的简单程序,则程序员所选择的用户界 面对象来完成并在屏幕上把结果显示出来。在这个简单的程序中,程序员可能需要用户在一个可编辑的编辑框中输入温 度值,在一个不可编辑的编辑框中显

10、示转换结果,然后让用户可以单击一个标有退出的按钮来退出应用程序。 因为是用户来操作应用程序的控制,所以程序必须作出响应。所做的响应依赖于用户使用鼠标或键盘在不同控制上的操 作。屏幕上的每个用户界面对象对事件的响应是不同的。例如,如果用户单击退出按钮,则该按钮必须更新屏幕、加亮 它自己。然后程序必须响应退出。Windows 所用的模式也是类似的。在一个典型的应用程序中,你将建立一个主窗口, 并且在其中放置了一些用户界面控制。这些控制通常被称为子窗口-它们就象一些在主窗口中的更小更特殊的子窗口。 作为程序员,你应该通过函数调用来发送信息操作这些控制、通过把信息发送给你到代码来响应用户的操作。 如果

11、你从未做过事件驱动程序设计,则所有这些对你来说可能是很陌生的。但是,事件驱动程序设计方式是很容易理解 的。具体的细节对不同的系统可能有些不同,但是其基本概念是类似的。在一个事件驱动界面中,应用程序会在屏幕上 绘制几个界面对象,如按钮、文本区和菜单。应用程序通常通过一段称为事件循环的的代码来响应用户的操作。用户可 以使用鼠标或键盘来任意操作屏幕上的对象。例如,用户用鼠标单击一个按钮。用鼠标单击就称为一个事件。事件驱动 系统把用户的动作如鼠标单击和键盘操作定义为事件,也把系统操作如更新屏幕定义为事件。 在比较低级的编程方法中,如用C直接编写WindowsAPI应用程序,代码量是非常大的,因为你所要

12、照顾的细节太多了。 例如,你用某种类型的结构来接收单击鼠标事件。你的事件循环中的代码会查看结构中不同域,以确定哪个用户界面对 象受到了影响,然后会完成相应的操作。当屏幕上有很多对象时,应用程序会变得很大。只是简单地处?哪个对象被单 击和对它需要做些什么要花费大量的代码。幸运的是,你可以在比较高级的方法来进行编程,这就是使用MFC。在MFC中 ,几乎所有的低级的细节处理都为你代办了。如果你把某一用户界面对象放在屏幕上,你只需要两行代码来 建立它。 如果用户单击一个按钮,则按钮自己会完成一切必要的操作,从更新屏幕上的外观到调用你程序中的预处理函数。该函 数包含有对该按钮作出相应操作的代码。MFC

13、为你处理所有的细节:你建立按钮并告知它特定的处理函数,则当它被按 下时,它就会调用相应的函数。 第四部分介绍了怎样使用消息映射来处理事件。 例子 理解一个典型的 MFC 程序的结构和样式的最好方法是输入一段小程序,然后编译和运行它 。下面的程序是一段简单的 hello world程序。这对很多C程序员都是很熟悉了,让我们看一下如何用MFC方法来实现。如果你是第一次看到这类程 序,也许比较难理解。这没关系,我们后面会详细介绍。现在你只要用Visual C 环境中建立、编译和运行它就可以了 。 /hello.cpp #include / 说明应用程序类 class CHelloApp : publ

14、ic CWinApp public: virtual BOOL InitInstance(); ; / 建立应用程序类的实例 CHelloApp HelloApp; / 说明主窗口类 class CHelloWindow : public CFrameWnd CStatic* cs; public: CHelloWindow(); ; / 每当应用程序首次执行时都要调用的初始化函数 BOOL CHelloApp:InitInstance() m_pMainWnd = new CHelloWindow(); m_pMainWnd-ShowWindow(m_nCmdShow); m_pMainWn

15、d-UpdateWindow(); return TRUE; / 窗口类的构造函数 CHelloWindow:CHelloWindow() / 建立窗口本身 Create(NULL, Hello World!, WS_OVERLAPPEDWINDOW, CRect(0,0,200,200); / 建立静态标签 cs = new CStatic(); cs-Create(hello world, WS_CHILD|WS_VISIBLE|SS_CENTER, CRect(50,80,150,150), this); 上面的这段程序如果用C来实现,得需要几页的代码。这个简单的例子做了三件事。第一,它

16、建立了一个应用程序对象 。你所编写的每个 MFC 程序都有一个单一的程序对象,它是处理 MFC 和 Windows的初始细节的。第二,应用程序建立 了一个窗口来作为应用程序的主窗口。最后,在应用程序的窗口中建立了一个静态文本标签,它包含有hello world几 个字。在第二部分中我们会仔细研究这段程序,以理解其结构。 启动 VC ,如果你是刚刚安装好,则你会在屏幕上看 到一个带有工具栏的空窗口。如果 VC 已经在该机器上使用过了,则所显示的窗口可能有些不同,因为 VC 会记忆和自 动重新打开上次使用后退出时的项目和文件。我们需要的是它没有装如任何项目和代码。如果程序启动后弹出对话框指 示不能

17、打开某些文件,你只要单击No即可。在Win dow菜单中选取Close All选项关闭所有窗口。在File菜单中选取 Close选项来关闭其它窗口。现在,你就处于开始状态了。如果你安装VC 后,第一次运行,则屏幕应如下所示: 如果你以后不希望看到InfoViewer Topic窗口,你可以用按钮把它关掉。如果以后需要的话,你还可以单击工具栏上的 主页按钮来打开该窗口。现在一切都正常了。正如你所看到的,顶部是菜单和几个工具栏。左边的窗口所显示的是在线 帮助内容,你可以双击某项标题来浏览其内容。在线帮助的内容是十分丰富的。现在该做什么了?你所要做的是输入上 面的程序,然后便宜并运行它。开始之前,要

18、检查以下你的硬盘上至少要留有5MB的剩余空间。 建立项目和编译代码 为了在 Visual C 中编译代码,你必须要建立一个项目。为了这么小的程序来建立一个项 目可能有点小题大作,但是 ,在任何实际的程序中,项目的概念是非常有用的。一个项目主要保存着下面三种不同类型的信息: 1. 它可以记住建立一个可执行程序所需要的所有源程序代码文件。在这个简单的例子中.文件 HELLO.CPP 是唯一的源 文件,但是在一个大型的应用程序中,为了便于管理和维护,你可以会有许多个不同的源文件。项目会维护这些不同文 件的列表,并当你要建立下一个新的可执行程序时,在必要时编译它们。 2. 它会记住针对你的应用程序所使

19、用的编译器和连接器选项。例如,它会记住把哪个库连接到了执行程序中,你是否 预编译了头文件等等。 3. 它会记住你想要建立的项目类型: 一个控制台应用程序,或一个窗口应用程序等等。如果你已经对项目文件有所了 解,则会很容易明白作为机器产生的项目文件的作用。现在,我们来建立一个简单的项目,并用它来编译 HELLO.CPP。 为此,首先从File菜单中选择New选项。在Projects标签中,加单击Win32 Application。在Location域中输入一个合适 的路径名或单击Browse按钮来选择一个。在Project name中入hello作为项目名称。这时候你会看到hello也会出现在

20、Location域中。单击OK按钮。Visual C 会建立一个新的称为HELLO的目录,并把所有的项目文件 HELLO .OPT、 HELLO.NCB、HELLO.DSP 和 HELLO.DSW 都放到该目录中。如果你退出,以后再重新打开该项目,则可选择 HELLO.DSW。 现在,在屏幕的左边,出现了三个标签。InfoView 标签仍然在,又新出现了 ClassView 和 FileView 标签。 ClassView 标签会把你程序中所有的类都列出来,FileView 标签给出了项目中文件的列表。现在可以输入程序的代码 了。在File菜单中选择New选项来建立一个编辑窗口。在出现的对话框

21、中,选择Files标签和Text File。则会出现 Visual C 的智能编辑器,你可以用它来输入上面的程序代码。输入代码时,你会发现编辑器会自动把不同类型的文本 变成不同的颜色,如注释、关键字字符串等的颜色都不同。如果你要改变其颜色或关闭颜色功能,可选择Tools菜单中 Options选项,然后选择Format标签和Sou rce Windows选项就可以修改。 输入完代码后,选择File菜单中的Save选项来保存。在 Visual C 新建立的目录中,把它存成 HELLO.CPP 文件。现在 选择在Project菜单中选择Add To Project选项,再选Files.。你会看到一个

22、对话框供你选择要添加的文件。在本例 子中,选择 HELLO.CPP 文件。在屏幕的左边,单击 FileView 标签,并双击标有 HELLO 的图标。你会看到名为 HELLO.CPP 的文件。单击 ClassView 标签,并双击文件夹图标,你会看到程序中所有的类。任何时候你都可以使用 FileView 来删除项目的文件,你只要单击该文件,然后按键盘上的 delete 键。此时你必须告诉项目要使用MFC库。如 果你忽略了这一步,则项目在连接时会出错,而出错信息对你毫无帮助。选择Project菜单的Settings。在出现的对话 框中选择General标签。在Microsoft Foundati

23、on Classes组合框中,选择Use MFC in a Shared DLL。然后关闭对话框 。 我们已经建立了项目文件,并调整了设置,你现在可以准备编译 HELLO.CPP 程序了。在Build菜单中,你会发现有三个 不同的编译选项: 1. Compile HELLO.CPP (只有当含有 HELLO.CPP 的窗口处于激活状态时才可) 2. Build HELLO.EXE 3. Rebuild All 第一个选项只是编译源文件并形成它们的目标文件。该选项不能完成连接任务,所以它只对快速编译一些源文件以检查 错误有用。第二个选项编译自上次编译后所修改的所有源文件,并连接形成可执行文件。第

24、三个选项要重新编译和连接 所有的源文件。我们可以选择Build HELLO.EXE来编译和连接代码。Visual C 会建立一个名为Debug 的新子目录,并把 HELLO.EXE 放在该目录中。该子目录的文件都是可以再产生的,所以你可以任意删除它们。 如果你发现了编译错误,双击输出窗口中的错误信息。这时编辑器会把你带到出错的位置处 。检查你的代码是否有问 题,如果有,就修改之。如果你看到大量的连接错误,则可能你在建立项目对话框中所指定的项目类型不对。你可以把 该项目所在的子目录删除,然后再重新按上面的步骤来建立。 为了执行该程序,你可选则Build菜单中的Execute HELLO.EXE选

25、项。你就可以看到你的第一个MFC程序了 - 出现一个 带有hello world的窗口。该窗口本身带有:标题栏、尺寸缩放区、最大和最小按钮等等。在窗口上,有一个标有hello world。请注意,该程序是完整的。你可以移动窗口、缩放窗口、最小化等。你只使用了很少的代码就完成了一个完整 的 Window 应用程序。这就是使用 MFC 的优点。所有的细节问题都有MFC来处理。 结论 在本讲中,你已经成功地编译和执行了你的第一个 MFC 程序。你将来会用类似的步骤来建立的应用程序。你可以为每 个项目建立单独的目录,或建立一个单独的项目文件,然后再添加或删除不同的源文件。在下一讲中,我们将仔细研究 该

26、程序,你会更完整的理解它的结构。 第二部分:一个简单的MFC程序 在本将中,我们将一段一段地来研究上一将中提到的 MFC 应用程序,以便能理解它的结构和概念框架。我们将先介绍 MFC,然后在介绍如何用 MFC 来建立应用程序。 MFC简介 MFC 是一个很大的、扩展了的 C 类层次结构,它能使开发 Windows 应用程序变得更加容易。MFC 是在整个 Windows 家族中都是兼容的,也就是说,无论是 Windows3.x、Windows95 还是 Windows NT,所使用的 MFC 是兼容的。每当新 的 Windows 版本出现时,MFC 也会得到修改以便使旧的编译器和代码能在新的系统

27、中工作。MFC 也回得到扩展,添加 新的特性、变得更加容易建立应用程序。 与传统上使用 C 语言直接访问 Windows API相反,使用 MFC 和 C 的优点是 MFC 已经包含和压缩了所有标准的样板文 件代码,这些代码是所有用 C 编写的 Windows 程序所必需的。因此用 MFC 编写的程序要比用C语言编写的程序小得多 。另外,MFC所编写的程序的性能也毫无损失。必要时,你也可以直接调用标准 C 函数,因为 MFC 不修改也不隐藏 Windows 程序的基本结构。 使用 MFC 的最大优点是它为你做了所有最难做的事。MFC 中包含了上成千上万行正确、优化和功能强大的 Windows

28、代 码。你所调用的很多成员函数完成了你自己可能很难完成的工作。从这点上将,MFC 极大地加快了你的程序开发速度。 MFC 是很庞大的。例如,版本4.0中包含了大约200个不同的类。万幸的是,你在典型的程序中不需要使用所有的函数。 事实上,你可能只需要使用其中的十多个 MFC 中的不同类就可以建立一个非常漂亮的程序。该层次结构大约可分为几 种不同的类型的类: l 应用程序框架 l 图形绘制的绘制对象 l 文件服务 l 异常处理 l 结构 - List、Array 和 Map l Internet 服务 l OLE 2 l 数据库 l 通用类 在本教程中,我们将集中讨论可视对象。下面的列表给出了部

29、分类: l CObject l CCmdTarget l CWinThread l CWinApp l CWnd l CFrameWnd l CDialog l CView l CStatic l CButton l CListBox l CComboBox l CEdit l CscrollBar 在上面的列表中,有几点需要注意。第一,MFC 中的大部分类都是从基类 CObject 中继承下来的。该类包含有大部分 MFC类所通用的数据成员和成员函数。第二,是该列表的简单性.CWinApp 类是在你建立应用程序是要用到的,并且任何 程序中都只用一次。CWnd 类汇集了 Windows中的所有通

30、用特性、对话框和控制。CFrameWnd 类是从 CWnd 继承来的, 并实现了标准的框架应用程序。CDialog 可分别处理无模式和有模式两种类型的对话框。CView 是用于让用户通过窗口 来访问文档。最后,Windows 支持六种控制类型:静态文本框、可编辑文本框、按钮、滚动条、列表框和组合框(一种扩 展的列表框)。一旦你理解了这些,你也就能更好的理解 MFC 了。MFC 中的其它类实现了其它特性,如内存管理、文档 控制等。 为了建立一个MFC应用程序,你既要会直接使用这些类,而通常你需要从这些类中继承新的类。在继承的类中,你可以 建立新的成员函数,这能更适用你自己的需要。你在第一讲中的简

31、单例子中已经看到了这种继承过程,下面会详细介绍 。CHelloApp 和 CHelloWindow 都是从已有的 MFC 类中继承的。 设计一个程序 在 讨论代码本身之前,我们需要花些工夫来简单介绍以下 MFC 中程序设计的过程。例如,假如你要编一个程序来向用 户显示Hello World信息。这当然是很简单的,但仍需要一些考虑。hello world应用程序首先需要在屏幕上建立一个窗 口来显示hello world。然后需要实际把hello world放到窗口上。我们需要但个对象来完成这项任务: 1. 一个应用程序对象,用来初始化应用程序并把它挂到 Windows 上。该应用程序对象处理 所有的低级事件。 2. 一个窗口对象来作为主窗口。 3. 一个静态文本对象,用来显示hello world。 你用 MFC 所建立的每个程序都会包含头两个对象。第三个对象是针对该应用程序的。每个应用程序都会定义它自己的 一组用户界面对象,以显示应用程序的输出和收集应用的输入信息.一旦你完成了界面的设计,并决定实现该界面所需 要的

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1