第 1章 Visual C++ 6.0开发环境
1.1开发环境概述
1.2开发环境的菜单功能
1.3开发环境的工具栏
1.4项目和项目工作区
1.5资源
1.6一个控制台应用程序
1.7程序调试作业
1.1开发环境概述界面由标题栏、菜单栏、工具栏、项目工作区窗口、文档窗口、输出窗口以及状态栏等组成,如图。
图 1.2 Visual C++ 6.0开发环境工具栏 菜单栏项目工作区窗口输出窗口文档窗口输出窗口标签标题栏状态栏
1.2开发环境的菜单功能
1.2.1 File菜单
File菜单中的命令主要用来对文件和项目进行操作。如图是 File菜单中的各条命令,其中各项命令的功能描述如表。
图 1.3 File菜单
1.2开发环境的菜单功能
1.2.2Edit菜单
Edit菜单中的命令是用来使用户便捷地编辑文件内容,如图,其中的各项命令的快捷键及它们的功能描述如表。
图 1.4 Edit菜单
1.2开发环境的菜单功能
1.2.3View菜单
View菜单中的命令主要用来改变窗口和工具栏的显示方式,激活调试时所用的各个窗口等。如图,其中的各项命令的功能描述如表。
图 1.5 View菜单
1.2开发环境的菜单功能
1.2.4 Insert菜单
Insert菜单中的命令主要用于项目及资源的创建和添加,如图。表列出了
Insert菜单的各项命令的快捷键及它们的功能。
图 1.6 Insert菜单
1.2开发环境的菜单功能
1.2.5 Project菜单
Project菜单中的命令主要用于项目的一些操作。图所示的是 Project菜单中的各个命令。表列出了 Project菜单的各项命令的快捷键及功能。
图 1.7 Project菜单
1.2开发环境的菜单功能
1.2.6Build菜单
Build菜单中的命令主要用来应用程序的编译、连接、调试、运行,如图。
表列出了 Build菜单的各项命令的快捷键及它们的功能。
图 1.8 Build菜单
1.2开发环境的菜单功能
1.2.7Tools菜单
Tools菜单中的命令主要用于选择或定制开发环境中的一些实用工具,如图;
其中除了 Visual C++ 6.0的组件外,其余的各项命令的快捷键及功能描述如表所示。
图 1.9 Tools菜单
1.2开发环境的菜单功能
1.2.8 Windows菜单
Windows菜单中的命令主要用于文档窗口的操作,如图是 Windows菜单中的各条命令,其中的各项命令的快捷键及它们的功能描述如表。
图 1.10 Windows菜单
1.2开发环境的菜单功能
1.2.9 Help菜单
Visual C++ 6.0 提供了大量详细的帮助信息,而 Help菜单便是得到这些帮助信息最有效和最主要的途径。图显示了 Help菜单中的各命令项,其中的各项功能如表。
图 1.11 Help菜单
1.3开发环境的工具栏
1.3.1工具栏概述
标准工具栏图 1.12 标准工具栏
New Text File Cut
Paste
Redo
Output
Find in Files
Search
Open
Save All
Copy
Undo
Workspace
Window List
Find
1.3开发环境的工具栏
类向导工具栏
小型编连工具栏图 1.13 WizardBar
Class Filter Members Actions
图 1.14 Build MiniBar
Compile Stop Build Go
Build Execute Add/Remove breakpoints
1.3开发环境的工具栏
1.3.2工具栏的显示与隐藏
,Customize”对话框方式
(1) 选择,Tools”菜单?,Customize”菜单项 。
(2) 如图;单击 Toolbars标签项,将显示出所有的工具栏名称,那些显示在开发环境上的工具栏名称前面将带有选中标记 (?)。
(3)要显示某工具栏,鼠标左击该工具栏名称,使得前面的复选框带有选中标记;同样的操作再进行一次,工具栏名称前面的复选框的选中标记将去除,该工具栏就会从开发环境中消失 。
快捷菜单方式在开发环境中任何工具栏处右击鼠标,如图。表列出了各个菜单命令的功能。
1.3开发环境的工具栏
1.3.3工具栏的浮动与停泊图 1.17 浮动的标准工具栏
1.4项目和项目工作区
1.4.1项目基本概念在 VC中,项目中所有的源文件都是采用文件夹的方式进行管理的,它将项目名作为文件夹名,在此文件夹下包含源程序代码文件 (.cpp,.h),项目文件 (.dsp)以及项目工作区文件 (.dsw)等,下面列出了其他一些文件类型的的含义:
.opt 关于开发环境的参数文件,如工具条位置等信息
.aps(AppStudio File) 资源辅助文件,二进制格式
.clw ClassWizard信息文件
.dsp(DeveloperStudio Project) 项目文件
.plg 编译信息文件
.hpj(Help Project) 帮助文件项目
.mdp(Microsoft DevStudio Project) 旧版本的项目文件
.bsc 用于浏览项目信息
.map 执行文件的映像信息纪录文件
.pch(Pre-Compiled File) 预编译文件,可以加快编译速度,但是文件非常大
.pdb(Program Database) 记录程序有关的一些数据和调试信息
.exp 记录 DLL文件中的一些信息,只有在编译 DLL才会生成
.ncb 无编译浏览文件 (no compile browser)
1.4项目和项目工作区
还有相应的 Debug或 Release,Res等子文件夹 。 若创建的单文档应用程序项目名是 Ex_Sdi,则各文件的布局如图 。
VC应用程序向导创建项目时,系统会自动为项目创建 Win32 Debug的运行程序,并使用相应的缺省配置 。 和 Win32 Release版本的区别在于,Debug
版本的运行程序有相应的调试信息码,Release版本的运行程序没有,但
Release版本的运行程序经过代码的优化,其程序的运行速度被最大加速 。
注意,在开发环境中,VC是通过左边的项目工作区窗口来对项目进行各种管理 。 项目工作区窗口包含三个页面,是 ClassView页,ResourceView页和
FileView页 。
图 1.18 项目文件的布局
Ex_Sdi文件夹
Debug或 Release
文件夹
Res文件夹类文件,cpp,.h
资源文件 Ex_Sdi.rc
项目及项目工作区文件其他文件编连过程产生的文件运行文件 Ex_Sdi.exe
图标文件 Ex_Sdi.ico等工具栏资源 Toolbar.bmp
其他资源 Ex_Sdi.rc2等
1.4项目和项目工作区
1.4.2 ClassView
用以显示项目中的所有的类信息。假设打开的项目名为 Ex_Sdi,单击项目区窗口底部的 ClassView,则显示出,Ex_Sdi classes”的树状结点,在它的前面是一个图标和一个套在方框中的符号,+”,单击符号,+”或双击图标,
Ex_Sdi中的所有类名将被显示,如 CMainFrame,CEx_SdiApp,CEx_SdiDoc、
CEx_SdiView等 (如图所示 )。
图 1.19 ClassView 图 1.20 ResourceView 图 1.21 FileView
1.4项目和项目工作区
1.4.3ResourceView
包含了项目中所有资源的层次列表。每一种资源都有自己使用的图标。
1.4.4FileView
FileView可将项目中的所有文件分类显示,如图 。
每一类文件在 FileView页面中都有自己的目录项 (节点 )。 可以在目录项中移动文件,还可以创建新的目录项以及将一些特殊类型的文件放在该目录项中 。
创建一个新目录项,可在添加目录项的地方右击,选择,New Folder”,如图,输入目录项名称和相关的文件扩展名,单击 [OK]。
图 1.22,New Folder”对话框
1.5资源
1.5.1资源与资源标识
资源的分类
(1)快捷键列表
(2)工具栏按钮
(3)鼠标指针
(4)对话框
(5)HTML
(6)图标
(7)菜单
(8)字符串列表
(9)版本信息
标识符标识符的命名规则:
(1) 在标识符名称中允许使用字母 a~z,A~Z,0~9以及下划线 。
(2) 标识符名称不区分大小写字母 。
(3) 不能以数字开头,如 8BIT是不合法的标识符名 。
(4) 字符个数不得超过 247个 。
1.5资源
1.5.2资源基本操作
创建资源
(1)从,Insert”菜单选取,Resource”;或用快捷键 Ctrl+R打开对话框,如图。
[New]用来创建一个由 Resource Type列表中指定类型的新资源,[Custom]按钮用来创建 Resource Type列表中没有的新类型的资源,[Import]按钮用于将外部已有的位图、图标、光标或其他定制的资源添加到当前应用程序中。
(2) 从 Resource Type列表中选择一种资源类型,而后按 [New]按钮 。
(3) 在项目工作区窗口的 ResourceView页面中,看到了刚才选中的资源的缺省标识符,而且相应的资源编辑器自动打开 。
图 1.23,Insert Resource”对话框
1.5资源
打开资源如果需要对已有资源进行查看或修改,可以首先切换到项目工作区窗口的
ResourceView标签页,然后选中要打开的资源,双击鼠标左键或者按 Enter
键,这时相应的资源编辑器也会相应自动打开。
删除、复制资源如果删除一个已有的资源,可以首先切换到项目工作区窗口的 ResourceView
标签页,然后选中要打开的资源,按 Del键或者利用 Edit菜单下的 Delete菜单项可实现删除。复制资源的过程与删除类似,选中要打开的资源,按住
Ctrl键不放,并拖动鼠标左键或利用 Edit菜单中的 Copy和 Paste菜单命令进行操作,它同其他软件的复制过程相同。
保存资源当设计或修改好一个资源后,用 File菜单的 Save菜单命令或利用快捷键
Ctrl+S将其保存在当前资源文件中。
1.5资源
1.5.3资源文件的管理资源文件一经创建,其中所包含的资源也就随之而定,与资源相对应的标识符也被保存在 Resource.h头文件中 。
一般,在一个资源文件,RC中所保存的所有资源已经满足的需要了,尽管如此,VC仍然允许用多个文件来存放资源。用 View菜单中的 Resource
Includes菜单命令打开,Resource Includes”对话框 (如图 1.24所示 )时,可以看到 Compile-time directives编辑框中已经含有 #include "res\Ex_Sdi.rc2"。
1.5.4资源编辑器所有 Windows资源都可以用 VC提供的资源编辑器来编辑。
图 1.24,Resource Includes”对话框
1.6一个控制台应用程序
1.6.1用 AppWizard创建用 AppWizard创建一个控制台应用程序可按下列步骤进行:
(1) 选择,File”?“New”菜单命令,显示出,New”对话框 。
(2) 选择 Projects标签,选中 Win32 Console Application项 。
(3) 在 Project Name框中键入控制台应用程序项目名称 。 第一次使用时最好确定该项目所在的文件夹以便于源文件的管理,既可在 Location下的编辑框中直接键入文件夹名称,也可单击 Browse按钮择一个已有的文件夹,如图 。
图 1.25 在,New”对话框中建立 Ex_Hello控制台应用程序
1.6一个控制台应用程序
(4) 单击 [OK]。 如图 。 选中 A simple application项 。
(5) 单击 [Finish],如图,单击 [OK]按钮系统将自动创建此应用程序 。
图 1.26 选择控制台应用程序类型 图 1.27 Ex_Hello信息对话框
1.6一个控制台应用程序
1.6.2理解程序框架在项目工作区窗口中只能看到 ClassView和 FileView标签,如图。切换到 FileView页面,
可以看到 AppWizard为生成了 Ex_Hello.cpp,Stdafx.cpp,Stdafx.h以及 ReadMe.txt四个文件。
Stdafx.cpp是一个只有一条语句的空文件,Stdafx.h是 VC为每个项目配置的用来预编译的文件; ReadMe.txt是 VC为每个项目配置的说明文件,包括对 AppWizard产生文件类型的说明以及操作的一些技巧; Ex_Hello.cpp是 AppWizard产生的,真正,具有实际意义的程序源代码文件,几乎所有的代码都是添加在这个文件中的。
图 1.28 Ex_Hello项目工作区内容
1.6一个控制台应用程序
1.6.3添加程序代码
(1) 单击项目工作区窗口的 ClassView标签项,将显示 Ex_Hello类信息 。
(2) 单击各目录项前面的,+”号,将所有目录项展开 。
(3) 双击 main函数名,在文档窗口中显示出 main函数体所在的源文件
Ex_Hello.cpp,且文本光标已移至此函数名的前面 。
(4) 键入下列代码:
...
#include <iostream.h> // 输入输出操作的头文件
int main(int argc,char* argv[])
{
cout<<"Hello world!\n";
return 0;
}
(5) 用 Save All命令项或标准工具栏的 Save All按钮将所有文件保存 。
1.6一个控制台应用程序
1.6.4编译运行
打开 Build菜单,选用 Build Ex_Hello.exe菜单项或按快捷键 F7,系统对
Ex_Hello进行编译,连接,同时在输出窗口中在线地显示出编译的内容,当出现 Ex_Hello.exe - 0 error(s),0 warning(s)字样时,表示 Ex_Hello.exe可执行文件已经正确无误地生成了 。
在 Build菜单中选取 Execute Ex_Hello.exe命令或按快捷键 Ctrl+F5,就可以运行刚刚生成的 Ex_Hello.exe,如图 。
在 Ex_Hello窗口中,,Press any key to continue”是系统自动加上去的 。
图 1.29 Ex_Hello运行结果作业
1.P357,3,4
2.P379~384实验 1
1.7程序调试
1.7.1修正语法错误调试最初的任务主要是修正一些语法错误,这些错误包括:
(1) 未定义或不合法的标识符,如函数名,变量名和类名等 。
(2) 数据类型或参数类型及个数不匹配 。
上述错误在编译后,会在 Output窗口中列出所有错误项 。 若将光标移到
Output窗口中的错误编号上,按 F1键可启动 MSDN并显示出错误的内容,从而帮助用户理解错误产生的原因 。
为了能使快速定位到错误产生的源代码位置,提供下列一些方法:
(1) 在 Output窗口中双击某个错误,或将光标移到该错误处按 Enter键,则该错误被亮显,状态栏上显示出错误内容,并定位到相应的代码行中,且该代码行最前面有个蓝色箭头标志 。
(2) 按 F4键可显示下一错误,并定位到相应的源代码行 。
(3) 在 Output窗口中的某个错误项上,右击鼠标,在弹出的快捷菜单中选择
,Go To Error/Tag”命令 。
语法错误被修正后,编译时会出现类似,Ex_Hello.exe - 0 error(s),0
warning(s)”的字样。并不是说,此项目完全没有错误,可能还有,异常,,
,断言,等其他错误,而这些错误在编译时是不会显示出来的,只有当程序运行后才会出现。
1.7程序调试
1.7.2设置断点调试的断点可以有下列类型,(1) 位置断点,(2) 数据断点,(3)条件断点。
快捷方式三种快捷方式可以设置位置断点:
(1) 按快捷键 F9。
(2) 在 Build工具栏上单击 按钮 。
(3) 在需要设置断点的位置右击,选择,Insert/Remove Breakpoint”命令 。
图 1.30 设置的断点断点标志断点标志程序中断的位置
1.7程序调试
使用 Breakpoints对话框
(1) 凡是可以使用的断点前均有选中标记 (√)。 若单击前面的复选框,则该断点被禁止 。 按钮 [Remove]和 [Remove All]清除当前选中的断点或全部断点 。
(2) 在 Location页面中,,Break At”文本框中可以输入断点的名称 。 单击 [Edit
Code]可以查看断点位置处的源代码或目标代码 。 单击 [Condition],可以输入程序运行中断所需要的表达式条件,从而设置一个条件断点 。
(3) 在 Data页面中,提供了一种设置数据断点的方法,如图 。 在 Data页面的最上面编译框中,可以键入任何有效的 C/C++表达式,它可以是赋值语句,
可以是条件语句,可以是单独的一个变量名 。 在程序运行过程中,若变量的值有所改变,或者条件表达式变成真时,则程序在该断点处中断 。
图 1.31,Breakpoints”对话框 图 1.32 Data页面
1.7程序调试
1.7.3启用调试器选择,Project”菜单?,Settings”命令,如图。在调试程序时必须使用
Debug版本。通过选择,Debug info”组合框来设置调试选项。含义如表。
还可以在,Project Settings”对话框中的,Link”页面中,选中,Generate
mapfile”项,使其在编连时产生相应的映射文件。
选择,Build”菜单?,Start Debug”子菜单的,Go”,,Step Into”或,Run
To Cursor”命令,就可以启动调试器了。
图 1.33,Project Settings”对话框
1.7程序调试
1.7.4控制程序运行当程序开始运行在 Debug状态下时,程序会由于断点而停顿下来 。 这时可以看到有一个小箭头,它指向即将执行的代码 。 而且,原来的,Build”菜单就会变成,Debug”菜单,如图 1.34所示 。 其中有四条命令 Step Into,Step
Over,Step Out和 Run to Cursor是用来控制程序运行的,其含义是:
n Step Over的功能是运行当前箭头指向的代码 (只运行一条代码 )。
n Step Into的功能是如果当前箭头所指的代码是一个函数的调用,则用 Step
Into 进入该函数进行单步执行 。
n Step Out的功能是如果当前箭头所指向的代码是在某一函数内,用它使程序运行至函数返回处 。
n Run to Cursor的功能是使程序运行至光标所指的代码处 。
1.7程序调试
1.7.5查看和修改变量的值调试器还提供一系列的窗口,用来显示各种不同的调试信息。可借助
,View”菜单下的,Debug Windows”子菜单可以访问它们。当启动调试器后,VC的开发环境会自动显示出 Watch和 Variables两个调试窗口,且 Output
窗口自动切换到 Debug页面,如图。
图 1.34 Debug菜单
Watch窗口
Output窗口
Variables窗口
1.7程序调试
QuickWatch窗口的使用
用来帮助用户快速查看或修改某个变量或表达式的值 。 若仅需要快速查看变量或表达式的值,则只需要将鼠标指针直接放在该变量或表达式上,片刻后,系统会自动弹出一个小窗口显示出该变量或表达式的值 。
启动调试器后,选择,Debug”?“QuickWatch”或按快捷键 Shift+F9,如图 。
Expression框可以让用户键入变量名或表达式,而后按 Enter键或单击
[Recalculate],就可以在 Current value列表中显示出相应的值 。 若想要修改其值的大小,则可按 Tab键或在列表项的,Value”域中双击该值,再输入新值按 Enter键就可以了 。
单击 [Add Watch]按钮可将刚才输入的变量名或表达式及其值显示在
,Watch”窗口中 。
图 1.36,QuickWatch” 窗口
1.7程序调试
Watch窗口的使用选择,View”?“Debug Windows”?“Watch”,四个页面,Watch1,Watch2、
Watch3和 Watch4,在每一个页面中有要查看的变量或表达式,可以将一组变量或表达式的值显示在同一个页面中 。 使用 Watch窗口进行操作时,要注意到下面一些技巧:
(1) 添加新的变量或表达式选定窗口中某个页面,在末尾的空框处,单击左边的,Name”域,输入变量或表达式,按 Enter键。同时,又在末尾处出现新的空框,如图。
在变量或表达式中右击,选择,Properties”查看其类型 。
(2) 修改变量或表达式的值选中相应的变量或表达式,按 Tab键或在列表项的,Value”域中双击该值,
再输入新值按 Enter键就可以了 。
(3) 删除变量或表达式单击 Del键可将当前选定的变量或表达式删除。
图 1.37 添加新的变量或表达式空框
1.7程序调试
Variables窗口的使用
Variables窗口能快速访问程序当前的环境中所使用的重要变量 。 选择
,View”?“Debug Windows”?“Variables”,其中有三个页面:
Auto页面显示出当前语句和上一条语句使用的变量,还显示使用 Step Over或 Step
Out命令后函数的返回值 。
Locals页面显示出当前函数使用的局部变量 。
This页面显示出由 This所指向的对象 。
Variables窗口还有一个,Context”框,从下拉列表中可以选定当前 Call
Stack的指令,以确定在页面中显示变量的范围,如图。
图 1.38,Context”框