深入编程内幕--VisualC++.docx
《深入编程内幕--VisualC++.docx》由会员分享,可在线阅读,更多相关《深入编程内幕--VisualC++.docx(122页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、深入编程内幕-Visual C+一走进 Visual C+ + *1理解VC工程*2 MFC编程特点*二MFC程序结构分析*3 使用 Wizard *1 WINDOWS程序工作原理*2建立应用程序 *3程序结构剖析 *3. 1 类 CMYAPP *3. 2 类CMAINFRAME *三深入MFC类库*3. 3 类CMyView 与CMyDoc *1处理用户输入 *1. 1定义对话框资源*1. 2定义对话框类*2有关屏幕输出 *2. 1设备上下文工作原理 *2. 2实例绘图原理剖析*2. 3绘图操作实现*2. 4有关屏幕映射方式*3 文件处理*3. 1对象持续化简述*3. 2实例分析*3. 3与
2、文件处理关系密切的类CFVe *4 DAO技术 *4. 1 DAO 与ODBC *4. 2使用MFC实现DAO技术*5打印*5.1 打印和显示*5.2 打印分页*5.3 打印工作的开始和结束*5.4 打印程序实例*四、VC程序调试*1. 1调试环境的建立*1. 2调试的一般过程 *1. 3如何设置断点”1. 4控制程序的运行*1. 5查看工具的使用*2高级调试技术 *2.1 TRACE宏的利用 *2.2 ASSERT宏的利用*2.3 ASSERT_ yAUD 宏的利用以及类的Assert Valid() 成员函的重载*2.4 对象的DUMP函数的利用*五Visual C+ +与多媒体*2.5
3、漏洞的检查*2.6 音的处理 *1. 1媒体控制接口 *1. 2波形混音器 *2多媒体文件I/O *3多媒体图形图像技术*4图像合成*5 FLC动画 *6热点 *走进 Visual C+Visual C+ +作为一个功能非常强大的可视化应用程序开发工具,是计算机界公认的最优秀的应 用开发工具之一。Microsoft的基本类库MFC使得开发Windows应用程序比以往任何时候都 要容易。本光盘教学软件的目的就是为了让你学会在Visual C+ +环境下,利用微软的基本类库 MFC开发出功能强大的Windows应用程序。在本章节的内容当中,我们将向您介绍使用VC 开发软件需要用到的一些基本概念,使
4、用MFC进行编程的基本特点,以及VISUAL C+ +集成 开发环境提供的一系列编程辅助工具WIZARD的使用方法。1理解VC工程Visual C+ +作为一种程序设计语言,它同时也是一个集成开发工具,提供了软件代码自动生成 和可视化的资源编辑功能。在使用Visual C+ +开发应用程序的过程中,系统为我们生成了大量 的各种类型的文件,在本节中将要详细介绍Visual C+ +中这些不同类型的文件分别起到什么样 的作用,在此基础上对Visual C+ +如何管理应用程序所用到的各种文件有一个全面的认识。首先要介绍的是扩展名为dsw的文件类型,这种类型的文件在VC中是级别最高的,称为 Work
5、space文件。在VC中,应用程序是以Project的形式存在的,Project文件以.dsp扩展 名,在Workspace文件中可以包含多个Project,由Workspace文件对它们进行统一的协调 和管理。与dsw类型的Workspace文件相配合的一个重要的文件类型是以opt为扩展名的文件,这个 文件中包含的是在Workspace文件中要用到的本地计算机的有关配置信息,所以这个文件不能 在不同的计算机上共享,当我们打开一个Workspace文件时,如果系统找不到需要的。pt类 型文件,就会自动地创建一个与之配合的包含本地计算机信息的opt文件。上面提到Project文件的扩展名是dsp
6、,这个文件中存放的是一个特定的工程,也就是特定的应 用程序的有关信息,每个工程都对应有一个dsp类型的文件。以clw为扩展名的文件是用来存放应用程序中用到的类和资源的信息的,这些信息是VC中的 Classwizard工具管理和使用类的信息来源。对应每个应用程序有一个readme.txt文件,这个文件中列出了应用程序中用到的所有的文件 的信息,打开并查看其中的内容就可以对应用程序的文件结构有一个基本的认识。在应用程序中大量应用的是以h和cpp为扩展名的文件,以h为扩展名的文件称为头文件。以 cpp为扩展名的文件称为实现文件,一般说来h为扩展名的文件与cpp为扩展名的文件是一一 对应配合使用的,在
7、h为扩展名的文件中包含的主要是类的定义,而在cpp为扩展名的文件中 包含的主要是类成员函数的实现代码。在应用程序中经常要使用一些位图、菜单之类的资源,VC中以rc为扩展名的文件称为资源文 件,其中包含了应用程序中用到的所有的windows资源,要指出的点是rc文件可以直接在 VC集成环境中以可视化的方法进行编辑和修改。最后要介绍的是以rc2为扩展名的文件,它也是资源文件,但这个文件中的资源不能在VC的集 成环境下直接进行编辑和修改,而是由我们自己根据需要手工地编辑这个文件。对于以ico.bmp等为扩展名的文件是具体的资源,产生这种资源的途径很多。使用rc资源文件 的目的就是为了对程序中用到的大
8、量的资源进行统的管理。2 MFC编程特点 如果你曾经使用过传统的windows编程方法开发应用程序,你会深刻地体会到,即使是开发一 个简单的windows应用程序也需要对windows的编程原理有很深刻的认识,同时也要手工编 写很多的代码。因为程序的出错率几乎是随着代码长度的增加呈几何级数增长的,这就使得调试 程序变得非常困难。所以传统的windows编程是需要极大的耐心和丰富的编程经验的。近几年来,面向对象技术无论是在理论还是实践上都在飞速地发展。面向对象技术中最重要的就 是“对象”的概念,它把现实世界中的气球、自行车等客观实体抽象成程序中的“对象”。这种“对 象”具有一定的属性和方法,这里
9、的属性指对象本身的各种特性参数。如气球的体积,自行车的 长度等,而方法是指对象本身所能执行的功能,如气球能飞,自行车能滚动等。一个具体的对象 可以有许多的属性和方法,面向对象技术的重要特点就是对象的封装性,对于外界而言,并不需 要知道对象有哪些属性,也不需要知道对象本身的方法是如何实现的,而只需要调用对象所提供 的方法来完成特定的功能。从这里我们可以看出,当把面向时象技术应用到程序设计中时,程序 员只是在编写对象方法时才需要关心对象本身的细节问题,大部分的时间是放在对对象的方法的 调用上,组织这些对象进行协同工作。MFC的英文全称是Microsoft Fundation Classes,即微软
10、的基本类库,MFC的本质就是一个 包含了许多微软公司已经定义好的对象的类库,我们知道,虽然我们要编写的程序在功能上是千 差万别的,但从本质上来讲,都可以化归为用户界面的设计,对文件的操作,多媒体的使用,数 据库的访问等等一些最主要的方面。这一点正是微软提供MFC类库最重要的原因,在这个类库 中包含了一百多个程序开发过程中最常用到的对象。在进行程序设计的时候,如果类库中的某个 对象能完成所需要的功能,这时我们只要简单地调用已有对象的方法就可以了。我们还可以利用 面向对象技术中很重要的“继承”方法从类库中的已有对象派生出我们自己的对象,这时派生出来 的对象除了具有类库中的对象的特性和功能之外,还可
11、以由我们自己根据需要加上所需的特性和 方法,产生一个更专门的,功能更为强大的对象。当然,你也可以在程序中创建全新的对象,并 根据需要不断完善对象的功能。正是由于MFC编程方法充分利用了面向对象技术的优点,它使得我们编程时极少需要关心对象 方法的实现细节,同时类库中的各种对象的强大功能足以完成我们程序中的绝大部分所需功能, 这使得应用程序中程序员所需要编写的代码大为减少,有力地保证了程序的良好的可调试性。最后要指出的是MFC类库在提供的对象的各种属性和方法都是经过谨慎的编写和严格的测试, 可靠性很高,这就保证了使用MFC类库不会影响程序的可靠性和正确性。3 使用 WizardVisual C+
12、+是一种功能强大的通用程序设计语言,它提供了各种向导和工具帮助我们来实现所 需的功能,在一定程度上实现了软件的自动生成和可视化编程。下面就为你介绍VC集成环境中 几个最主要的开发工具的使用方法。首先要介绍的是Appwizard工具,这个工具的作用是帮助我们一步步地生成一个新的应用程序, 并且自动生成应用程序所需的基本代码。下面我们就介绍使用Appwizard生成一个应用程序的 具体步骤。 单击File菜单New菜单项,系统弹出的对话让我们选择 所要创建的文件类型,这里的文件分成了 Files,Project, Workspaces, Other documents 四种大类型,每一 个类型下面
13、又包含许多具体的文件类型,选中Projects 标签,标签下的工作区中列出的是各种不同的应用程序 类型,比如dll类型的动态链接库,exe类型的可执行程 序等,这里选中MFCAppwizard(exe)选项,表示要创 建的是一个使用MFC基本类库进行编程的可执行程序。如下图1.1所示:图1.1选好后在project name -栏中为程序起一个名字为 test,在location -栏中为程序定义文件存放的目录, 对话框右下角的platforms 一栏中的Win32项表示要 创建的程序是建立在32位的windows平台基础上。单 击0K按钮,就启动了使用MFC方式开发应用程序的 Appwiza
14、rd 功能。图1.2 Wizard让我们选择程序的类型和程序中的资源所用的语 种,这里不妨选择程序类型为单文档界面,语种为英语, 然后单击NEXT按钮。图1.3图1.4Wizard让我们选择是否需要提供数据库方面的支持,这 里选择NONE,然后单击NEXT按钮。下面选择程序中对复合文档的支持,这里选择NONE。图1.5接者选择程序的其它一些特性,如提供对WINSOCK的 支持等。这里对系统的缺省值不作改变,如下图1.6所示。 单击NEXT按钮。图1.6在第五步中,对话框上部选择是否为程序自动生成注释, 对话框的下部用来选择使用MFC类库的方式是动态链接 库方式还是静态链接方式,使用动态链接库方
15、式时在以 后生成的可执行应用程序中并不真正包含MFC类库中的 对象,而使用静态链接方式时,则把MFC库中的代码生 成为应用程序的部分,这时生成的应用程序也就相对 大一些。选好后单击 NEXT按钮。图1.7 进入APPWIZARD的最后一个步骤,对话框中的提示信 息指明了系统将要自动创建的对象和相关文件,以及派 生出这些对象的MFC的基类等内容。在这一步当中,我 们还可以对视图类的基类进行选择,单击FINISH按钮。图1.8游览一下对话框中对将要生成的程序的有关信息的描述 后单击0K按钮。系统就自动为我们生成个使用MFC 基本类库的应用程序的基本框架,在以后将会对这个框 架的内容作详细的介绍。I
16、接下来介绍VC集成环境 中提供的一个很重要的工具CLASSWIZARD,它主要是用来管理程序中的对象和消息的,这个 工具对于MFC编程显得尤为重要。单击VIEW菜单的CLASSWIZARD项,就可以运行MFC CLASSWIZARD,在这个对话框中就可以对程序中的对象和消息进行管理了。图 1.10在对话框中的MESSAGE MAPS标签下,PROJECT栏中的内容代表当前程序的名字。CLASSWNAME下拉列表框列出的就是程序当前用到的所有类的名字,在MESSAGE 一栏中 列出的就是一个选中的类所能接收到的所有的消息,在WINDOWS程序设计中,消息是个极为 重要的概念,用户通过窗口界面的各
17、种操作最后都转化为发送到程序中的对象的各种消息、,卜面 就向您介绍在Wl NDOWS程序设计中最常用的一些消息:1 窗口消息:WM_CREATE, WM_DESTROY, WM_CLOSE我们创建一个窗口对象的时候,这个窗口对象在创建过程中收到的就是WM_CREATE消息,对 这个消息的处理过程一般用来设置一些显示窗口前的初始化工作,如设置窗口的大小,背景颜色 等,WM_DESTROY消息指示窗口即将要被撤消,在这个消息处理过程中,我们就可以做窗口 撤消前的一些工作。WM_CLOSEwm_close消息发生在窗口将要被关闭之前,在收到这个消 息后,一般性的操作是回收所有分配给这个窗口的各种资源
18、。在windows系统中资源是很有限 的,所以回收资源的工作还是非常重要的。2 键盘消息:WM_CHAR, WM_KEYDOWN, WM_KEYUP这三个消息用来处理用户的键盘数据,当用户在键盘上按下某个键的时候,会产生WM_KEYDOWN消息,释放按键的时候又回产生WM_KEYUP消息,所以WM_KEYDOWN 与WM_KEYUP消息一般总是成对出现的,至于WM_CHAR消息是在用户的键盘输入能产生 有效的ASCII码时才会发生。这里特别提醒要注意前两个消息与WM_CHAR消息在使用上是 有区别的。在前两个消息中,伴随消息传递的是按键的虚拟健码,所以这两个消息可以处理非打 印字符,如方向键,
19、功能键等。而伴随WM_CHAR消息的参数是所按的键的ASCII码,ASCII 码是可以区分字母的大小写的。而虚拟键码是不能区分大小写的。3 鼠标消息:WM_MOUSEMOVE, WM_LBUTTONDOWN, WM_LBUTTONUP, WM_LBUTTONDBCLI CK, WM_RBUTTONDOWN, WM_RBUTTONUP,WM_RBUTTONDBCLICK这组消息是与鼠标输入相关的,WM_MOUSEMOVE消息发生在鼠标移动的时候,剩余的六个 消息则分别对应于鼠标左右键的按下、释放、双击事件,要指出的是WINDOWS系统并不是在 鼠标每移动一个像素时都产生MOUSEMOVE消息,这
20、一点要特别注意。4 另一组窗口消息:WM_MOVE , WM_SIZE , WM_PAINT当窗口移动的时候产生WM_MOVE消息,窗口的大小改变的时候产生WM_SIZE消息,而当 窗口工作区中的内容需要重画的时候就会产生WM_PAI NT消息。5 焦点消息 WM_SETFOCUS, WM_KI LLFOCUS当一个窗口从非活动状态变为具有输入焦点的活动状态的时候,它就会收到WM_SETFOCUS 消息,而当窗口失去输入焦点的时候它就会收到WM_KILLFOCUS消息。6定时器消息:WM_TI MER当我们为一个窗口设置了定时器资源之后,系统就会按规定的时间间隔向窗口发送WM_TIMER 消息
21、,在这个消息中就可以处理一些需要定期处理的事情。最后要指出的一点是,在WINDOWS环境F,消息的来源是多方面的,最常见的是用户的操作 产生消息,系统在必要的时候也会向程序发送系统消息,其他在运行中的程序也可以向程序发送 消息。此外,在程序的内部,也可以根据需要在适当的时候主动产生消息,比如主动产生 WM_PAINT消息以实现需要的重画功能。上面介绍了 MESSAGE栏中主要的消息,在MEMBER FUNCTION 栏中列出的是目前被 选中的类已经有的成员函数。这些成员函数一般说来是与这个类可以接收的消息一一对应的。也 就是说,一个成员函数般总是用来处理某个特定的消息。如果在MESSAGE栏中
22、的某个消息 在程序中需要处理,但FT前还没有相应的类成员函数,比如这里选中WM_TIMER这个消息, 它目前还没有相应的对应的类的成员函数, 单击ADD FUNCTION按钮,系统就自动为WM_TIMER消息在类中添加了对应的成员函数ONTIMER,单击EDITCODE 按钮,可以发现系统已经自动生成了完成ONTIMER函数所需的基本代码,我们只要在这些基 本代码的基础上再添加所需要的代码就可以了。注意对话框中的ADDCLASS按钮,它用来往当前应用程序中添加一个新的类。单击后选中NEW菜单,图 1.12I系统弹出了 NEWCLASS对话框用于生成一个新的类。在这个对话框中需要为类起个名字,设
23、置类文件的名字, 另外还要在BASE CLASS 一栏的下拉列表框中选择某个已有的类作为基类,设好需要的信息 后单击0K就生成了一个新的类。图 1.13CLASS WIZARD还有一些很强大的功能,这里就不再详细介绍,你会在不断的学习中慢慢地 了解和掌握。最后介绍一下集成环境提供的一个重要工具RESOUCR EDITOR,也就是资源编辑器。在VC 开发的应用程序中要用到大量的位图,菜单,工具条,对话框等各种资源。这些资源对于程序而 言是相对独立的,所以可以对它们进行单独的编辑,然后使用在程序中。而RESOUCEEDITOR 正是为编辑资源提供了一种可视化的开发方法。极大地减轻了程序员的负担。单
24、击Fl LE菜单的OPEN菜单项,然后在对话框中选择打开TEST.RC文件,就可以开始使用资 源编辑器了。在左边的工作区中按类型列出了程序中用到的所有的资源,双击其中的某个类型, 比如双击MENU资源,MENU目录的下面列出的就是系统已经有的MENU类型的资源,选中 其中一个并双击,在右边的工作区中列出了这个资源当前的样子,我们就可以在工作区中对资源 进行可视化的编辑和修改了。图 1.14图115如何添加一个资源呢?单击INSERT菜单,选中RESOURCE菜单项,系统弹出INSERT RESOURCE对话框。如图1.15。在图1.15这个对话框,在这个对话框中选中一种资源类型,比如选择CUR
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 深入 编程 内幕 VisualC
限制150内