《我的第一本C++书》免费章节:2.3.1 Visual C++的常用菜单
考虑到这一章节其实是帮助读者更好地使用Visual Studio这一个工具的,所以将其免费公布出来,让更多的读者看到。
2.3.1 Visual C++的常用菜单
一个饭店提供的饭菜是否丰富,只要看它的菜单就知道了。Visual C++提供了长长的菜单,准备了丰盛的大餐,下面来看看Visual C++准备了哪些好菜吧!
1. 文件菜单
文件菜单是Visual C++中最常用到的菜单项,创建新工程、新文件,以及保存、关闭工程都要用到它。我们总是使用文件菜单来打开或者关闭某些项目,所以,就当这个子菜单是饭前的小菜或者饭后的甜点吧。
展开后的完整文件菜单如图2-10所示。整个菜单被分隔线分成了8组,相近的功能被划分在一组,在这个菜单中,最常用的有以下几项。
图2-10 文件菜单
Ÿ 新建:用来创建新的工程、文件、网站等。以创建新文件为例,单击它的下级菜单“文件”后,出现如图2-11所示的文件类型选择对话框。
从图2-11所示的对话框中可以选择需要创建的文件类型,单击“打开”按钮,Visual C++会创建相关的文件。Visual C++支持的文件主要有C++源文件、C++头文件、位图文件、图标文件、文本文件等。
图2-11 选择新文件的类型
Ÿ 打开:用来打开已经存在的工程、文件、网站,以及进行工程的转换。
Ÿ 添加:将新的或者已经存在的工程、网站等添加到当前解决方案中。
Ÿ 关闭解决方案:关闭当前打开的解决方案。
Ÿ 最近使用的项目和解决方案:用来快速访问最近使用过的工程。
知道更多:菜单项后的省略号
在某些菜单项的后面有省略号,例如,新建文件的子菜单项“File…”。这里的省略号表示单击该菜单项后会弹出一个对话框,让用户进行进一步的操作,就像上面提到的弹出一个对话框供用户选择文件类型。这是Windows应用程序的一个设计惯例,以后在同样的情况下,也应当采用这样的设计,带有对话框的菜单项应该加上省略号。
2. 编辑菜单
一个优秀的IDE,首先是一个优秀的代码编辑器。Visual C++是一个功能强大的代码编辑器,提供了很多有用的功能来帮助我们高效地编辑源代码,如图2-12所示。编辑菜单中常用的功能有以下几项。
Ÿ 撤销:撤销上一次的编辑动作。
Ÿ 重做:恢复撤销的动作。
Ÿ 剪切:将选中的内容剪切到剪贴板中。
Ÿ 复制:将选中的内容复制到剪贴板中。
Ÿ 粘贴:将剪切板中的内容粘贴到当前位置。
图2-12 编辑菜单
Ÿ 循环应用剪贴板中的复制项:这是Visual C++的特色功能,可以将剪贴板中的内容循环粘贴出来,直到得到想要的内容。这样就扩展了剪贴板的容量,可以保存多次复制到剪贴板中的内容。
Ÿ 全选:选中当前编辑窗口中的全部内容。
Ÿ 查找和替换:在单个文件或者多个文件中查找替换字符串。这是编辑菜单中非常有用的功能,特别当项目较大时,合理地使用这个功能,可以快速地找到需要的内容。下面来看看“查找和替换”功能具体的使用方法。
首先,单击它的下级子菜单“在文件中查找”,Visual C++会弹出如图2-13所示的查找对话框。可以在其中输入要查找的内容、查找范围等,从而精准地找到需要的内容。
(1) 输入想要查询的字符串,通常是变量或者函数的名字。
(2) 选择想要搜索的范围,这里已经设定了一些常用的路径,也可以根据需要选择特殊的目录。
(3) 在“查找选项”中,可以对搜索做一些更细致的设置:“大小写匹配”表示在搜索的过程中区分大小写;“全字匹配”表示匹配整个单词;“使用”表示选择使用正则表达式还是使用通配符来完成更加复杂的查找,默认情况下使用正则表达式。
(4) 在“结果选项”中,可以设置结果的输出位置,让搜索结果显示在需要的位置。
图2-13 查找和替换
Ÿ 高级:这个菜单项包含了很多高级的编辑手段,例如,整理选中的代码格式,将选中的代码注释掉、变为大写,修改代码的缩进等。
知道更多:让你的代码立正
干净整洁的环境谁都喜欢,同样,格式整齐的代码谁都爱看。但是,反复修改可能破坏原来的代码格式。这时,高级编辑功能中的代码格式化书写就可以大派用场了,它可以将凌乱的代码按照语法规则调整格式,让代码立正,变整齐,增加了代码的可读性。
这个功能的快捷键是Ctrl+K、Ctrl+F。
时刻牢记,让代码保持整齐,是一个良好的习惯。
3. 项目菜单
图2-14 项目菜单 |
Visual C++的项目菜单如图2-14所示,该菜单主要用来向项目中添加一些新的类和资源等,同时对项目的属性进行具体的设置。下面介绍项目菜单中常用的几个功能。
Ÿ 添加类:向项目中添加新的类。在实际开发过程中,常常要向项目添加新的类来扩展其功能,这个菜单项,就是用来方便创建新类并将其添加到当前项目中。单击这个菜单,会出现如图2-15所示的添加类的对话框,用于选择要创建的类的模板。Visual C++已经准备了很多模板,帮我们省去了很多烦琐的工作。下面来看看如何向项目中添加新类。单击“添加类”菜单项,在弹出的类模板选择对话框中选择类的模板,这里选择Visual C++下最常用的C++类,然后单击“添加”按钮进入下一步,设置类的相关参数。
图2-15 选择添加的类模板
单击“添加”按钮后,Visual C++会提供一个类的属性设置对话框,用于输入要添加新类的相关信息,这里可以输入类的名字、基类的名字及这个类所在的文件等。设置完成后,Visual C++将会按照其中的设置创建一个空的新类,包括相应的头文件和源文件。
Ÿ 添加新项:通过这个菜单项可以向项目中添加新的资源、UI、代码,甚至实用工具等,但是更常用的还是利用它向项目中添加资源。选择添加资源后,会出现一个对话框以选择资源类型。Visual C++的常用资源类型基本上都包括在其中了,主要有快捷键、位图、光标、对话框、图标、菜单及工具栏按钮等。在特殊情况下,还可以添加自定义类型的资源。
Ÿ 项目属性:这个菜单项用于设置项目的各种属性,这个功能在以后的开发实践中会经常用到。单击这个菜单项后,会出现如图2-16所示的项目属性设置对话框。
图2-16 设置项目属性对话框
从图2-16中可以看到,整个项目属性的设置非常复杂,幸运的是在大多数情况下,只需要使用默认参数就可以了,只有少数几个参数需要进行配置,下面就这些常用的配置做简单介绍。
(1) 选择属性对应的版本。在设置对话框界面的上方,我们可以通过下拉按钮来选择这个属性配置影响的版本,还可以选择代码运行的平台。通常,我们选择当前活动的是Debug版本或Release版本,也可以使用配置管理器创建自定义的配置方案,进行更加详细、更加个性化的设置。
知道更多:Debug和Release
软件通常分为Debug版本和Release版本两种。Debug版本通常又称为调试版本,包含调试信息,未作任何优化,便于程序员在开发过程中调试程序。等到开发完成后,就可以编译Release版本发布给用户,所以Release版本又称为发布版本,它往往经过了各种优化,以便用户很好地使用。
Debug版本的软件在单独运行时,往往需要编译器提供一些库文件,Release版本则不需要。换句话说就是,Release版本的软件可以在没有安装Visual C++的计算机上正常运行,Debug版本则不行。
Debug版本和 Release版本之间并没有本质的区别,它们只是一组编译选项的集合。可以修改这些选项,得到优化过的调试版本或带跟踪语句的发布版本。
(2) 常规设置。展开左侧树形节点中的“配置属性→常规”,在这个属性配置页面中,可以对项目的一些常规属性进行配置,包括项目的目录、是否需要MFC支持、是否需要公共语言运行时支持等。最常用的是设置“MFC的使用”这一项。
1) 在共享DLL中使用MFC:表示把程序中用到的MFC类库作为动态链接库,这样编译生成的程序比较小,但是在运行的时候,需要操作系统提供额外的动态库支持。
2) 在静态库中使用MFC:表示把用到的MFC类的内容作为静态库加到程序中,这样编译产生的程序可以在任何Windows环境下运行,但是程序的体积比较大。
3) 使用标准Windows库:表示不使用MFC类库,仅使用标准的Windows类库。
(3) C/C++设置。在这个子项中,可以设置很多跟编译相关的参数、自定义编译器的行为。其中,最常用的设置包括以下几点。
1) 附加包含目录:在这里,可以设置其他头文件的搜索目录,当在项目中用到其他程序库时,常常用这个配置项目将其他程序库的头文件目录作为附加包含目录,这样编译器就可以方便地找到它所使用的其他程序库的头文件。
2) 警告等级:设置编译时警告提示的级别,默认为“Level 3”,但是建议大家将警告提示级别调高到“Level 4”,这样可以发现很多隐藏的错误,提高代码的质量。
3) 预处理定义:通过该选项,可以预先定义宏,对参与编译的代码进行控制。例如,可以在这里定义Debug宏,表示这个版本是Debug版本,代码中使用Debug宏控制的代码将参与编译,为调试提供辅助信息。
(4) 链接器。在这个子项中,可以定制链接器的行为。其中,常用的配置选项主要包括以下几点。
1) 输出文件:指定链接器输出的位置和文件名。为了便于查看,需要将生成的程序放到特定的目录下,此时,可以使用这个配置选项。
2) 附加库目录:当程序使用附加程序库的时候,往往需要用这个配置选项来指定附加库文件(.lib)所在的目录。这样链接器才能找到这些库文件并完成链接。
3) 附加依赖项:任何程序都不是单独存在的,往往需要其他程序库为其提供支持,这就是程序的附加依赖项。在这里,设置项目需要引用的其他程序库文件。
4. 生成菜单
生成菜单中的功能跟构建解决方案有关。如果说前面的那些菜单已经让人眼花缭乱,胃口大开,那么现在真正的主菜出来了。下面来看看这个菜单的具体功能。
Ÿ 生成解决方案:构建整个解决方案。
Ÿ 重新生成解决方案:重新构建整个解决方案。如果解决方案中有多个项目,那么所有解决方案都将重新生成。
Ÿ 清理解决方案:删除编译、链接过程中产生的中间文件和最终编译结果。
Ÿ 生成…:以上三项都是针对整个解决方案的,接下来的解决方案针对当前项目的构建,通常是构建当前活动的项目,当然,也可以选择构建解决方案中的某个特定项目。
Ÿ 批生成:批量编译生成解决方案,链接不同工程或同一工程的不同设置。例如,可以同时生成某个项目的Debug版本和Release版本。
知道更多:选择合适的构建方式
构建工程的时候,只对工程中修改过的文件进行增量编译,然后连接生成最终结果。重新构建整个工程时,不管文件是否做过修改,都会编译所有的源文件。
如果修改某个文件,构建后发现修改没有起作用,可以重新构建整个工程,使修改生效。
5. 调试菜单
如果构建的解决方案还存在这样或那样的问题,那么就需要调试修正存在的问题。调试菜单如图2-17所示,该菜单提供了Visual C++中与调试相关的功能。调试是开发中最常进行的一项工作,如果说构建是一道主菜,那么调试就可以说是主食了。两者往往相伴而行,构建完成后需要调试,调试完成后需要重新构建。下面来看看调试菜单中的具体功能。
图2-17 调试菜单
Ÿ 窗口:打开跟调试相关的窗口,显示相关的调试信息。
(1) 断点:打开断点窗口,显示当前工程中的所有断点。
(2) 输出:打开输出窗口,显示构建或者调试过程中的输出信息。
(3) 监视:打开监视窗口,可以将调试过程中感兴趣的变量或者表达式添加到监视窗口,监视窗口实时监视这些变量或者表达式的值,反映程序的执行状态和结果。
(4) 自动窗口:根据程序当前运行的上下文,自动显示相关变量的值和数据类型。
(5) 调用堆栈:显示调用堆栈中的内容,可以从中清楚地查看函数调用关系。自动窗口和调用堆栈窗口如图2-18所示。
(6) 内存:显示内存窗口。在调试过程中,可以通过内存窗口查看特定内存位置的值。
图2-18 自动窗口和调用堆栈窗口
Ÿ 继续:让程序从当前断点继续运行,直到遇到下一个断点或程序结束。
Ÿ 停止调试:停止调试,退出调试状态。
Ÿ 逐语句:程序将逐条语句运行。如果当前箭头所指的代码是一个函数的调用,使用“逐语句”将对该函数进行单步执行。
Ÿ 逐过程:运行当前箭头指向的代码,也就是单步往下执行代码。
Ÿ 跳出:如果当前箭头所指向的代码是在某一函数内,则使用这个命令可使程序运行至函数返回处,快速跳出某段代码。
Ÿ 切换断点:对光标所在的行进行设置或清除断点。
Ÿ 新建断点:这里可以创建两种条件断点。
(1) 在函数处中断:这种断点用来监视函数的调用,如果某个函数被调用,则可以在函数内部的某个位置停下来。常常在调试某个函数时使用这种断点。
(2) 新建数据断点:这种断点用来监视某个内存位置的值的改变,如果这个内存值发生改变,则停止执行进入调试状态。这种断点在调试比较大的循环的时候非常有用。
Ÿ 删除所有断点:删除当前项目中的所有断点。当调试完成后不再需要断点时,可以用这个命令删除项目中的所有断点。
Ÿ 禁用所有断点:禁用项目中的所有断点,使断点暂时失效。