VC入门教程.docx

上传人:b****5 文档编号:5771682 上传时间:2023-01-01 格式:DOCX 页数:120 大小:88.19KB
下载 相关 举报
VC入门教程.docx_第1页
第1页 / 共120页
VC入门教程.docx_第2页
第2页 / 共120页
VC入门教程.docx_第3页
第3页 / 共120页
VC入门教程.docx_第4页
第4页 / 共120页
VC入门教程.docx_第5页
第5页 / 共120页
点击查看更多>>
下载资源
资源描述

VC入门教程.docx

《VC入门教程.docx》由会员分享,可在线阅读,更多相关《VC入门教程.docx(120页珍藏版)》请在冰豆网上搜索。

VC入门教程.docx

VC入门教程

VC入门教程

vc入门教程

一走进VisualC++

1理解VC工程

2MFC编程特点

3使用Wizard

二MFC程序结构分析

1WINDOWS程序工作原理

2建立应用程序

3程序结构剖析

3(1类CMYAPP

3(2类CMAINFRAME

3(3类CMyView与CMyDoc

三深入MFC类库

1处理用户输入

1(1定义对话框资源

1(2定义对话框类

2有关屏幕输出

2(1设备上下文工作原理

2(2实例绘图原理剖析

2(3绘图操作实现

2(4有关屏幕映射方式

3文件处理

3(1对象持续化简述

3(2实例分析

3(3与文件处理关系密切的类CFile

4DAO技术

4(1DAO与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.1TRACE宏的利用

2.2ASSERT宏的利用

2.3ASSERT_VALID宏的利用以及类的AssertValid()成员函的重载

2.4对象的DUMP函数的利用

3内存漏洞的检查

五VisualC++与多媒体

1对声音的处理

1(1媒体控制接口

1(2波形混音器

2多媒体文件I/O

3多媒体图形图像技术;

4图像合成;

5FLC动画;

6热点;

一走进VisualC++

VisualC++作为一个功能非常强大的可视化应用程序开发工具,是计算机界公认的最优秀的应用开发工具之一。

Microsoft的基本类库MFC使得开发Windows应用程序比以往任何时候都要容易。

本光盘教学软件的目的就是为了让你学会在VisualC++环境下,利用微软的

基本类库MFC开发出功能强大的Windows应用程序。

在本章节的内容当中,我们将向您介绍使用VC开发软件需要用到的一些基本概念,使用MFC进行编程的基本特点,以及VISUALC++集成开发环境提供的一系列编程辅助工具--WIZARD的使用方法。

1理解VC工程

VisualC++作为一种程序设计语言,它同时也是一个集成开发工具,提供了软件代码自动生成和可视化的资源编辑功能。

在使用VisualC++开发应用程序的过程中,系统为我们生成了大量的各种类型的文件,在本节中将要详细介绍VisualC++中这些不同类型的文件分别起到什么样的作用,在此基础上对VisualC++如何管理应用程序所用到的各种文件有一个全面的认识。

首先要介绍的是扩展名为dsw的文件类型,这种类型的文件在VC中是级别最高的,称为Workspace文件。

在VC中,应用程序是以Project的形式存在的,Project文件以.dsp扩展名,在Workspace文件中可以包含多个Project,由Workspace文件对它们进行统一的协调和管理。

与dsw类型的Workspace文件相配合的一个重要的文件类型是以opt为扩展名的文件,这个文件中包含的是在Workspace文件中要用到的本地计算机的有关配置信息,所以这个文件不能在不同的计算机上共享,当我们打开一个Workspace文件时,如果系统找不到需要的opt类型文件,就会自动地创建一个与之配合的包含本地计算机信息的opt文件。

上面提到Project文件的扩展名是dsp,这个文件中存放的是一个特定的工程,也就是特定的应用程序的有关信息,每个工程都对应有一个dsp类型的文件。

以clw为扩展名的文件是用来存放应用程序中用到的类和资源的信息的,这些信息是VC中的ClassWizard工具管理和使用类的信息来源。

对应每个应用程序有一个readme.txt文件,这个文件中列出了应用程序中用到的所有的文件的信息,打开并查看其中的内容就可以对应用程序的文件结构有一个基本的认识。

在应用程序中大量应用的是以h和cpp为扩展名的文件,以h为扩展名的文件称为头文件。

以cpp为扩展名的文件称为实现文件,一般说来h为扩展名的文件与cpp为扩展名的文件是一一对应配合使用的,在h为扩展名的文件中包含的主要是类的定义,而在cpp为扩展名的文件中包含的主要是类成员函数的实现代码。

在应用程序中经常要使用一些位图、菜单之类的资源,VC中以rc为扩展名的文件称为资源文件,其中包含了应用程序中用到的所有的windows资源,要指出的一点是rc文件可以直接在VC集成环境中以可视化的方法进行编辑和修改。

最后要介绍的是以rc2为扩展名的文件,它也是资源文件,但这个文件中的资源不能在VC的集成环境下直接进行编辑和修改,而是由我们自己根据需要手工地编辑这个文件。

对于以ico,bmp等为扩展名的文件是具体的资源,产生这种资源的途径很多。

使用rc资源文件的目的就是为了对程序中用到的大量的资源进行统一的管理。

2MFC编程特点

如果你曾经使用过传统的windows编程方法开发应用程序,你会深刻地体会到,即使是开发一个简单的windows应用程序也需要对windows的编程原理有很深刻的认识,同时也要手工编写很多的代码。

因为程序的出错率几乎是随着代码长度的增加呈几何级数增长的,这就使得调试程序变得非常困难。

所以传统的windows编程是需要极大的耐心和丰富的编程经验的。

近几年来,面向对象技术无论是在理论还是实践上都在飞速地发展。

面向对象技术中最重要的就是“对象”的概念,它把现实世界中的气球、自行车等客观实体抽象成程序中的“对象”。

这种“对象”具有一定的属性和方法,这里的属性指对象本身的各种特性参数。

如气球的体积,自行车的长度等,而方法是指对象本身所能执行的功能,如气球能飞,自行车能滚动等。

一个具体的对象可以有许多的属性和方法,面向对象技术的重要特点就是对象的封装性,对于外界而言,并不需要知道对象有哪些属性,也不需要知道对象本身的方法是如何实现的,而只需要调用对象所提供的方法来完成特定的功能。

从这里我们可以看出,当把面向对象技术应用到程序设计中时,程序员只是在编写对象方法时才需要关心对象本身的细节问题,大部分的时间是放在对对象的方法的调用上,组织这些对象进行协同工作。

MFC的英文全称是MicrosoftFundationClasses,即微软的基本类库,MFC的本质就是一个包含了许多微软公司已经定义好的对象的类库,我们知道,虽然我们要编写的程序在功能上是千差万别的,但从本质上来讲,都可以化归为用户界面的设计,对文件的操作,多媒体的使用,数据库的访问等等一些最主要的方面。

这一点正是微软提供MFC类库最重要的原因,在这个类库中包含了一百多个程序开发过程中最常用到的对象。

在进行程序设计的时候,如果类库中的某个对象能完成所需要的功能,这时我们只要简单地调用已有对象的方法就可以了。

我们还可以利用面向对象技术中很重要的“继

承”方法从类库中的已有对象派生出我们自己的对象,这时派生出来的对象除了具有类库中的对象的特性和功能之外,还可以由我们自己根据需要加上所需的特性和方法,产生一个更专门的,功能更为强大的对象。

当然,你也可以在程序中创建全新的对象,并根据需要不断完善对象的功能。

正是由于MFC编程方法充分利用了面向对象技术的优点,它使得我们编程时极少需要关心对象方法的实现细节,同时类库中的各种对象的强大功能足以完成我们程序中的绝大部分所需功能,这使得应用程序中程序员所需要编写的代码大为减少,有力地保证了程序的良好的可调试性。

最后要指出的是MFC类库在提供的对象的各种属性和方法都是经过谨慎的编写和严格的测试,可靠性很高,这就保证了使用MFC类库不会影响程序的可靠性和正确性。

3使用Wizard

VisualC++是一种功能强大的通用程序设计语言,它提供了各种向导和工具帮助我们来实现所需的功能,在一定程度上实现了软件的自动生成和可视化编程。

下面就为你介绍VC集成环境中几个最主要的开发工具的使用方法。

首先要介绍的是Appwizard工具,这个工具的作用是帮助我们一步步地生成一个新的应用程序,并且自动生成应用程序所需的基本代码。

下面我们就介绍使用Appwizard生成一个应用程序的具体步骤。

单击File菜单New菜单项,系统弹出的对话让我们选择所要创建的文件类型,这里的文件分成了Files,Project,Workspaces,Other

documents四种大类型,每一个类型下面又包含许多具体的文件类型,选中Projects标签,标签下的工作区中列出的是各种不同的应用程序类型,比如dll类型的动态链接库,exe类型的可执行程序等,这里选中MFCAppwizard(exe)选项,表示要创建的是一个使用MFC基本类

库进行编程的可执行程序。

如下图1.1所示:

图1.1

选好后在projectname一栏中为程序起一个名字为test,在location一栏中为程序定义文件存放的目录,对话框右下角的platforms一栏中的Win32项表示要创建的程序是建立在32位的windows平台基础上。

单击,,按钮,就启动了使用,,,方式开发应用程序的Appwizard功能。

图1.2

Wizard让我们选择程序的类型和程序中的资源所用的语种,这里不妨选择程序类型为单文档界面,语种为英语,然后单击,,,,按钮。

图1.3

Wizard让我们选择是否需要提供数据库方面的支持,这里选择NONE,然后单击NEXT按钮。

图1.4

下面选择程序中对复合文档的支持,这里选择NONE。

图1.5

接着选择程序的其它一些特性,如提供对WINSOCK的支持等。

这里对系统的缺省值不作改变,如下图1.6所示。

单击NEXT按钮。

图1.6

在第五步中,对话框上部选择是否为程序自动生成注释,对话框的下部用来选择使用MFC类库的方式是动态链接库方式还是静态链接方式,使用动态链接库方式时在以后生成的可执行应用程序中并不真正包含MFC类库中的对象,而使用静态链接方式时,则把MFC库中的代码生成为应用程序的一部分,这时生成的应用程序也就相对大一些。

选好后单击NEXT按钮。

图1.7

进入APPWIZARD的最后一个步骤,对话框中的提示信息指明了系统将要自动创建的对象和相关文件,以及派生出这些对象的MFC的基类等内容。

在这一步当中,我们还可以对视图类的基类进行选择,单击FINISH按钮。

图1.8

游览一下对话框中对将要生成的程序的有关信息的描述后单击OK按钮。

系统就自动为我们生成一个使用MFC基本类库的应用程序的基本框架,在以后将会对这个框架的内容作详细的介绍。

图1.9

接下来介绍VC集成环境中提供的一个很重要的工具CLASSWIZARD,它主要是用来管理程序中的对象和消息的,这个工具对于MFC编程显得尤为重要。

单击VIEW菜单的CLASSWIZARD项,就可以运行MFCCLASSWIZARD,在这个对话框中就可以对程序中的对象和消息进行管理了。

图1.10

在对话框中的MESSAGEMAPS标签下,PROJECT栏中的内容代表当前程序的名字。

CLASSWNAME下拉列表框列出的就是程序当前用到的所有类的名字,在MESSAGE一栏中列出的就是一个选中的类所能接收到的所有的消息,在WINDOWS程序设计中,消息是个极为重要的概念,用户通过窗口界面的各种操作最后都转化为发送到程序中的对象的各种消息,下面就向您介绍在WINDOWS程序设计中最常用的一些消息:

1窗口消息:

WM_CREATE,WM_DESTROY,WM_CLOSE

我们创建一个窗口对象的时候,这个窗口对象在创建过程中收到的就是WM_CREATE消息,对这个消息的处理过程一般用来设置一些显示窗口前的初始化工作,如设置窗口的大小,背景颜色等,WM_DESTROY消息指示窗口即将要被撤消,在这个消息处理过程中,我们就可以做窗口撤消前的一些工作。

WM_CLOSEwm_close消息发生在窗口将要被关闭之前,在收到这个消息后,一般性的操作是回收所有分配给这个窗口的各种资源。

在windows系统中资源是很有限的,所以回收资源的工作还是非常重要的。

2键盘消息:

WM_CHAR,WM_KEYDOWN,WM_KEYUP

这三个消息用来处理用户的键盘数据,当用户在键盘上按下某个键的时候,会产生WM_KEYDOWN消息,释放按键的时候又回产生WM_KEYUP消息,所以WM_KEYDOWN与WM_KEYUP消息一般总是成对出现的,至于WM_CHAR消息是在用户的键盘输入能产生有效的ASCII码时才会发生。

这里特别提醒要注意前两个消息与WM_CHAR消息在使用上是有区别的。

在前两个消息中,伴随消息传递的是按键的虚拟键码,所以这两个消息可以处理非打印字符,如方向键,功能键等。

而伴随WM_CHAR消息的参数是所按的键的ASCII码,ASCII码是可以区分字母的大小写的。

而虚拟键码是不能区分大小写的。

3鼠标消息:

WM_MOUSEMOVE,WM_LBUTTONDOWN,WM_LBUTTONUP,WM_LBUTTONDBCLICK,WM_RBUTTONDOWN,WM_RBUTTONUP,WM_RBUTTONDBCLICK

这组消息是与鼠标输入相关的,WM_MOUSEMOVE消息发生在鼠标移动的时候,剩余的六个消息则分别对应于鼠标左右键的按下、释放、双击事件,要指出的是WINDOWS系统并不是在鼠标每移动一个像素

时都产生MOUSEMOVE消息,这一点要特别注意。

4另一组窗口消息:

WM_MOVE,WM_SIZE,WM_PAINT

当窗口移动的时候产生WM_MOVE消息,窗口的大小改变的时候产生WM_SIZE消息,而当窗口工作区中的内容需要重画的时候就会产生WM_PAINT消息。

5焦点消息WM_SETFOCUS,WM_KILLFOCUS

当一个窗口从非活动状态变为具有输入焦点的活动状态的时候,它就会收到WM_SETFOCUS消息,而当窗口失去输入焦点的时候它就会收到WM_KILLFOCUS消息。

6定时器消息:

WM_TIMER

当我们为一个窗口设置了定时器资源之后,系统就会按规定的时间间隔向窗口发送WM_TIMER消息,在这个消息中就可以处理一些需要定期处理的事情。

最后要指出的一点是,在WINDOWS环境下,消息的来源是多方面的,最常见的是用户的操作产生消息,系统在必要的时候也会向程序发送系统消息,其他在运行中的程序也可以向程序发送消息。

此外,在程序的内部,也可以根据需要在适当的时候主动产生消息,比如主动产生WM_PAINT消息以实现需要的重画功能。

上面介绍了MESSAGE栏中主要的消息,在MEMBERFUNCTION一栏中列出的是目前被选中的类已经有的成员函数。

这些成员函数一般说来是与这个类可以接收的消息一一对应的。

也就是说,一个成员函数一般总是用来处理某个特定的消息。

如果在MESSAGE栏中的某个

消息在程序中需要处理,但目前还没有相应的类成员函数,比如这里选中WM_TIMER这个消息,它目前还没有相应的对应的类的成员函数,

单击ADDFUNCTION按钮,

图1.11

系统就自动为WM_TIMER消息在类中添加了对应的成员函数ONTIMER,单击EDITCODE按钮,可以发现系统已经自动生成了完成ONTIMER函数所需的基本代码,我们只要在这些基本代码的基础上再添加所需要的代码就可以了。

注意对话框中的ADDCLASS按钮,它用来往当前应用程序中添加一个新的类。

单击后选中NEW菜单,

图1.12

系统弹出了NEWCLASS对话框用于生成一个新的类。

在这个对话框中需要为类起个名字,设置类文件的名字,另外还要在BASECLASS一栏的下拉列表框中选择某个已有的类作为基类,设好需要的信息后单击OK就生成了一个新的类。

图1.13

CLASSWIZARD还有一些很强大的功能,这里就不再详细介绍,你会

在不断的学习中慢慢地了解和掌握。

最后介绍一下集成环境提供的一个重要工具RESOUCREDITOR,也就是资源编辑器。

在VC开发的应用程序中要用到大量的位图,菜单,工具条,对话框等各种资源。

这些资源对于程序而言是相对独立的,所以可以对它们进行单独的编辑,然后使用在程序中。

而RESOUCEEDITOR正是为编辑资源提供了一种可视化的开发方法。

极大地减轻了程序员的负担。

单击FILE菜单的OPEN菜单项,然后在对话框中选择打开TEST.RC文件,就可以开始使用资源编辑器了。

在左边的工作区中按类型列出了程序中用到的所有的资源,双击其中的某个类型,比如双击MENU资源,MENU目录的下面列出的就是系统已经有的MENU类型的资源,选中其中一个并双击,在右边的工作区中列出了这个资源当前的样子,我们就可以在工作区中对资源进行可视化的编辑和修改了。

图1.14

如何添加一个资源呢,单击INSERT菜单,选中RESOURCE菜单项,系统弹出INSERTRESOURCE对话框。

如图1.15。

图1.15

在图1.15这个对话框,在这个对话框中选中一种资源类型,比如选择CURSOR类型,然后单击NEW按钮。

在左边的工作区中就出现了我们新生成的资源的标识符,双击这个标识符,在右边的工作区中就可以对这个新的指针形状资源进行可视化编辑了。

如图1.16。

通过这部分内容的介绍,相信您已经对使用VISUALC++开发MFC应用程序的

图1.16

基本步骤有了认识。

在下一章的内容当中,我们将结合WINDOWS的工作原理,详细地向您解释MFC类库的基本结构,以及MFC应用程序的基本框架--文档/视图结构。

二MFC程序结构分析

1WINDOWS程序工作原理

WINDOWS程序设计是一种完全不同于传统的DOS方式的程序设计方法,它是一种事件驱动方式的程序设计模式。

在程序提供给用户的界面中有许多可操作的可视对象。

用户从所有可能的操作中任意选择,被选择的操作会产生某些特定的事件,这些事件发生后的结果是向程序中的某些对象发出消息,然后这些对象调用相应的消息处

理函数来完成特定的操作。

WINDOWS应用程序最大的特点就是程序没有固定的流程,而只是针对某个事件的处理有特定的子流程,WINDOWS应用程序就是由许多这样的子流程构成的。

从上面的讨论中可以看出,WINDOWS应用程序在本质上是面向对象的。

程序提供给用户界面的可视对象在程序的内部一般也是一个对象,用户对可视对象的操作通过事件驱动模式触发相应对象的可用方法。

程序的运行过程就是用户的外部操作不断产生事件,这些事件又被相应的对象处理的过程。

下面是WINDOWS程序工作原理的示意图。

2建立应用程序

在介绍AppWizard的时候,我们已经建立了一个名字为TEST的工程,事实上这个框架程序已经可以编译运行了。

在BUILD菜单中选择REBUILDALL菜单项,系统开始编译由APPWIZARD自动生成的程序框架中所有文件中的源代码,并且链接生成可执行的应用程序。

在BUILD菜单中选择EXECUTE菜单项,应用程序就开始运行了,虽然我们没有编写一行代码,但是可以看出由系统自动生成的应用程序的界面已经有了一个标准WINDOWS应用程序所需的几个组成部分,我们要做的事情是往这个应用程序添加必要的代码以完成我们所需要的功能。

接下来将要对WINDOWS自动生成的这个应用程序框架作详细的介绍,让你对MFC方式的WINDOWS应用程序的工作原理有全面的认识,只有这样你才会知道应该如何往程序框架当中添加需要的代码。

图2.1

3程序结构剖析

为了让您对MFC方式的程序的框架有一个总体的认识,这里设计了一个表示程序中的主要类之间的关系的图表:

这个图表表示了使用MFC方式的应用程序的四个主要类之间的关系,从中可以看出,CMYAPP类主要的作用是用来处理消息的,它统一管理程序收到的所有的消息,然后把消息分配到相应的对象。

CMAINFRAME是CMYVIEW的父类,也就是说视窗VIEW显示在主框窗MAINFRAME的客户区中。

类CMYVIEW的作用是显示数据,而数据的来源是类CMYDOC,在MFC程序中,程序的数据是放在文档当中的,而显示数据则是利用视窗方式,文档与视窗分离带来的好处就是一个文档可以同时具有多个视窗,每个视窗只显示文档中的一部分数据,或者以特定的风格显示文档中的数据。

文档与视窗分离的另一个好处就是在程序中可以处理多个文档,通过对不同的视窗的处理达到对不同的文档分别处理的目的。

使用过传统的WINDOWS编程方法的人都知道,在应用程序中有一个重要的函数WINMAIN(),这个函数是应用程序的基础,用户的操作所产生的消息正是经过这个函数的处理派送到对应的对象中进行处理。

在MFC方式的WINDOWS应用程序中,用来处理消息的是系统自动生成的MFC中的类CWINAPP的派生类CMYAPP,下面就从这个类开始介绍应用程序的框架。

3(1类CMYAPP

类CMYAPP是应用程序运行的基础,注意这一行代码,可以看出这个类是由MFC中的类CWINAPP派生来的。

在这个类中除了有一般类都有的构造函数,一个重要的成员函数就是INITINSTANCE,我们知

道,在WINDOWS环境下面可以运行同一程序的多个实例,函数INITINSTANCE的作用就是在生成的一个新的实例的时候,完成一些初始化的工作。

注意这一行代码,它的作用就是生成一个CMYAPP类型的对象,生成的时候系统会主动调用INITINSTANCE函数完成一些必要的初始化工作。

下面研究INITINSTANCE函数所做的事情,注意这一行代码,它定义了一个文档模板对象指针PDOCTEMPLATE,通过NEW操作符,系统动态生成了这个文档模板对象,然后使用ADDDOCTEMPLATE函数把这个文档模板对象加入到应用程序所维护的文档模板链表当中,这个文档模板PDOCTEMPLATE的作用就是把程序用到的框架窗口,CMAINFRAME,文档CMYDOC,视窗CMYVIEW与应用对象CMYAPP联系起来。

CMYAPP类提供了用户与WINDOWS应用程序之间进行交流的界面。

在生成这个类的对象后,这个对象自动地把自身与WINDOWS系统建立联系,接收WINDOWS传送的消息,并交给程序中相应的对象去处理,这就免去了程序员许多的工作,使得开发C++的WINDOWS程序变得简单方便。

3(2类CMAINFRAME

类CMAINFRAME是由MFC中的CFRAMEWND派生来的,所以它也是一个框架窗口。

前面已经指出,CMAINFRAME是类CMYVIEW的父类,也就是说CMYVIEW类的对象显示在主框架窗口的客户区中。

在类CMAINFRAME中,系统已经从类CFRAMEWND那里继承了处理窗口的一般事件的WINDOWS消息,比如改变窗口的大小,窗口最小化等等的成员函数,因此编程的时候程序员不需要再关心此类消息的处理,从而减轻了程序员的负担。

当然,如果确实需要重新编写处理此类

消息的成员函数,则需要对原有的成员函数进行重载。

在MFC程序中,我们并不需要经常对CMAINFRAME类进行操作,更多的是对视窗类进行操作,达到对程序中的数据进行编辑和修改的目的。

最后要指出的是,在MFC方式的程序中,当程序的一个实例被运行的时候,系统根据前面在CMYA

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 医药卫生 > 基础医学

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

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