程序员的熔炉——VS 2005集成开发环境使用技巧

精彩链接

作为一名程序员,除了要掌握一门编程语言之外,学会使用集成开发环境(IDE)也是很重要的。许多初学者都分不清楚什么是编程语言,什么是IDE,认为Visual C++(以下简称VC)就是C++语言。其实不然,VC是编程语言C/C++的集成开发环境。

Visual Studio.net 2005是微软发布的新一代开发平台。它包含了以下几个成员:Visual Web Developer 2005、Visual Basic 2005、Visual C++ 2005、Visual C# 2005、Visual J# 2005、SQL Server 2005。

本文将以VS.net2005的成员Visual C++为例,向大家介绍如何使用IDE。

一、什么是IDE(集成开发环境)

在讲解如何使用IDE(集成开发环境)之前,让我们先来看看它是什么样子,以下是VS.net2005的开始界面(如图1):

fl图01.jpg
(图1)

简单来讲,集成开发环境是一个把代码编辑、编译、调试等集成到一起的开发平台。而较早的程序是先用文字编辑软件把代码编辑好,然后用链接程序进行函数、模块链接,再用编译程序进行编译,程序员必需在几种软件间来回切换操作。为了使程序员更方便、快捷地开发程序,VS.net 2005还提供了许多开发辅助工具。

二、项目的创建、管理与生成

1.创建项目

在VC2005的“Start Page”里的“Recent Projects”(如图2)可以看到,在上面的“Main”和“Test”是以前创建的项目,鼠标单击即可打开。在左下方的“Open”和“Create”分别代表“打开一个项目”和“创建一个新的项目”。单击右边的“Project/Solution”将弹出打开项目对话框;单击“Project…”将打开新建项目对话框。

fl图02.jpg
(图2)

现在我们点“Project…”创建一个新的项目(如图3)。

fl图03.jpg
(图3)

在“New Project”对话框里,左边的“Project types”用于选择项目的类型,如Visual C++项目、Visual Basic项目等等;右边的“Templates”用于选择项目模板,如VC++可创建控制台程序、Windows窗口程序、DLL等等;“Name”输入的是项目的名称;“Location”是项目的保存路径。

我们来创建一个控制台程序,“Project types”选择“Visual C++/Win32”,“Templates”选择“Win32 Console Application”,在“Name”里输入项目名称(如“Test”),在“Location”里选择项目保存的路径。完成后单击“OK”按钮。

此时会出现一个“Win32 Application Wizard”对话框(如图4),这是一个创建项目的向导(选择不同的项目模板会出现不同的向导)。单击“Next”按钮(或按对话框左边的“Application Settings”)进行应用程序设置,在复选框“Empty Project”内打勾,表示创建的是一个空项目。单击“Finish”按钮,现在我们已经创建了一个空项目了。

fl图04.jpg
(图4)

2.项目管理

我们所创建的是一个空项目,没有任何的程序文件,一般一个较大的项目会有较多的程序文件,文件管理器是必需的;使用C++这种面向对象的程序设计语言,程序员会创建许许多多的类,当这些类多起来的时候就需要一个类的管理器。以上所提到的管理器,VC++都为程序员提供了。

留意一下左边的窗口(默认在左边),窗口下面有几个选项卡,默认的分别是“解决方案浏览器(Solution Explorer)”、“类视图(Class View)”、“属性管理器(Property Manager)”。

(1)解决方案浏览器(Solution Explorer)

解决方案浏览器里的“Test”就是我们新建的项目,它下面有几个文件夹,分别是:“Header Files”,用于存放头文件;“Resource Files”,用于存放资源文件;“Source Files”,用于存放程序源文件。

添加新项

画图要先有图纸,写程序要先有程序文件。我们先来添加一个源文件(Source File),用于编写程序。

右击“Source Files”文件夹,在弹出的菜单中选择“Add”→“New Item…”,打开一个“Add New Item”对话框,在“Categories”里选中“Visual C++”→“Code”,在“Templates”里选中“C++ Files(.cpp)”,在“Name”中输入名称“main”,在“Location”中选择保存路径。完成后点击“Add”按钮。现在我们就可以在解决方案浏览器(Solution Explorer)的“Source Filse”文件夹下面看到有新添加的文件了(如图5)。

fl图05.jpg
(图5)

添加已存在的项

我以前写了一个类,叫“MyQueue”,它写在一个名为“MyQueue.cpp”的程序文件里。现在这个项目正好要用到这个类,重新写一遍就太麻烦,也太笨了。就直接把它添加到项目里来吧!

右击“Source Files”文件夹,在弹出的菜单中选“Add”→“Existing Item…”。打开一个“Add Existing Item”对话框,选中文件“MyQueue.cpp”,然后点击“Add”按钮即可。

添加文件夹

当项目的文件多起来的时候,默认的几个文件夹不方便管理,这时可以添加多几个文件夹。例如要在“Test”项目下添加一个文件夹,右击解决方案浏览器(Solution Explorer)的“Test”项目,在弹出的菜单中选中“Add”→“New Filter”,然后输入名称即可。

删除项

删除一个项,右击你要删除的项,在弹出的菜单中选中“Remove”即可。

(2)类视图(Class View)

在程序添加以下的类:

class Temp

{

public:

void m_public_Function(void);

int m_public_Variable;

protected:

void m_protected_Function(void);

int m_protected_Variable;

private:

void m_private_Function(void);

int m_private_Variable;

};

我们可以在类视图(Class View)里看到类Temp的信息(如图6)。

fl图06.jpg
(图6)

类视图用于管理程序的所有类。可以看到类视图分成上下两个框架,上面的框架显示的是类,下面的框架显示的是类的成员。在类视图(Class View)的上框架选中类Temp,在下框架里就会显示出类Temp的各个成员。

类视图用不同的图标来表示类的不同类型的成员,紫红色的表示成员函数,蓝色的表示成员变量。

public_f.jpg

(紫红色)——公共成员函数

public_m.jpg

(蓝色)——公共成员变量

private_f.jpg

(紫红色)——私有成员函数

private_m.jpg

(蓝色)——私有成员变量

protected_f.jpg

(紫红色)——保护成员函数

protected_m.jpg

(蓝色)——保护成员变量

添加类

在类视图的一个项目上右击鼠标,在弹出的菜单里选中“Add”→“Class”。

添加成员函数

右击一个类,在弹出的菜单里选中“Add”→“Function…”。

添加成员变量

右击一个类,在弹出的菜单里选中“Add”→“Variable…”。

(3)属性管理器(Property Manager)

属性管理器管理的是项目的属性,分别有Debug版(调试版)的属性和Release版(发布版)的属性(如图7)。

fl图07.jpg
(图7)

3.生成EXE文件

程序编写好后,就要将其生成为可执行的EXE文件了。点击菜单“Build” →“Build Solution”(快捷键是F7)即可生成exe文件。生成exe文件时,可以在IDE下方的“OutPut”窗口中看到相关的编译、连接等信息。

编译完成后可以按F5运行程序(或点击工具栏的“Start Debugging”按钮)。

默认情况下,Debug版的exe文件保存在项目目录的“Debug”目录下,Release版的exe文件保存在项目目录下的“Release”目录下。Release版的exe文件会比Debug版的exe文件小很多,这是因为Debug版的exe文件包含了一些错误处理代码,用于方便开发者调试程序。

当然,我们还可以自定义exe文件的保存路径。点击菜单的“Project” →“项目名 Properties”,打开“Property Pages”对话框(如图8)。

fl图08.jpg
(图8)

在左边的树控件上选中“Configuration Properties” →“General”,右边的“OutPut Directory”就是exe文件的存放路径了,点击右边的小三角按钮,在弹出的下拉列表里选中“Browse”可以选择一个路径,选择“Edit”可以自己手动编辑路径。注意在输入路径时可以用“..\”表示上一级目录。

三、IDE中的代码编辑

在VC2005上编辑代码,很快就会发现C++的关键字是用蓝色表示的,如果够细心你会发现在新输入一行代码时,这行代码的左边会有一条黄色的竖线,当保存后,这行代码左边的黄色竖线就会变成绿色,可以很轻松地知道哪些代码是新输入的。

现在留意一下代码编辑器的上方(如图9):

fl图09.jpg
(图9)

使用代码编辑器上方的选项卡可以方便地在各个文件中切换,当选项卡所对应的文件内容未保存时,该文件的选项卡右上方会有一个*号显示。

在图9中可以看到有两个下拉列表,左边的用于选择类,右边的选择类的成员函数,选择一个成员函数后,立即会跳到该成员函数的代码处。

1.设置字体样式与字体颜色

点击菜单“Tools”→“Options”,打开“Options”对话框(如图10)。

fl图10.jpg
(图10)

在左边的树控制中选中“Environment”→“Fonts and Colors”。右边的“Display items”列出来的是不同状态的文本显示,如“Plain Text”是普通模式下的文本显示,“Selected Text”是选中状态下的文本显示。

“Font”下拉列表可选择不同的字体;“Size”可设置字体的大小;“Item foreground”可设置文本的前景色;“Item background”可设置文本的背景色。

2.文本编辑

同样是在图10的“Options”对话框中,在左边的树控制中选中“Test Editor”→“C/C++”,在对话框右边就可以进行各种设置了,这里的设置比较简单,就不一一介绍了。推荐选中的“Display”下的“Line Numbers”,可以显示程序行号,方便编辑。

3.为程序添加书签

书签是一个非常有用的工具,特别是在程序代码很长的时候,它可以快速地跳转到程序的某个地方,这个地方也就是设置有书签的一行代码。

把鼠标光标点到一行代码处,按下“Ctrl+F2”键,那么就会在该行代码设下一个书签(如图11)。之后不管你编辑到哪里的代码,只要按下F2键,就会马上跳转到刚才设置的书签位置。一个文件可以设置多个书签。

fl图11.jpg
(图11)

要取消一个书签,只要把光标定位到书签名的代码行,再按下“Ctrl+F2”即可。

4.智能感应

VC++代码编辑的功能强大,很大方面表现在智能感应方面。智能感应大大提高了程序编写程序的效率。

(1) 列出成员

如图12所示,智能感应自动列出各个成员。

fl图12.jpg
(图12)

(2)参数提示

从图13可以看到,智能感应列出了函数的参数表。“1 of 2”表示该函数有两个重载,当前列出的是第一个。按向下的小三角(或按键盘向下方向键)可以看到下一个重载函数的参数列表,按向上小三角(或按键盘向上方向键)则可以看到上一个。

fl图13.jpg
(图13)

智能感应一般都会自动弹出来,也可以从菜单或快捷键使用(如图14)。

fl图14.jpg
(图14)

四、IDE中的资源编辑

1.对话框资源编辑

把鼠标光标移到IDE右边的“Toolbar”选项卡上,Toolbar窗口便会弹出来(如图15)。

fl图15.jpg
(图15)

Toolbar窗口里列出的是各种控件,如按钮、复选框、下拉列表等等。编辑对话框资源很简单,在Toolbar窗口选中一个控件,然后把鼠标光标移到对话框内,点击鼠标即可把控件放置在对话框内。放置好控件后可以对控件进行大小和位置调整。

点击菜单“View”→“Other Windows”→“Properties Window”,弹出Properties(属性)窗口。在对话框里选中一个控件,在Properties(属性)窗口里便会显示该控件的所有属性(如图16)。

fl图16.jpg
(图16)

当进入对话框编辑状态后,会出现一条如图17的工具条,用于对话框布局使用。如几个控件的对齐、均匀间隔等等。

fl图17.jpg
(图17)

2.菜单编辑

展开Toolbar的“Menu & Toolbars”(如图18),选中“MenuStrip”,在对话框内点击鼠标,开始编辑菜单。

fl图18.jpg
(图18)

编辑菜单时如图19所示,在“Type Here”点击鼠标即可编辑菜单项,输入菜单项的名称,再在Properties(属性)窗口里输入菜单项的ID即可。

fl图19.jpg
(图19)

3.工具条编辑

展开Toolbar的“Menu & Toolbars”,选中“ToolStrip”,在对话框内点击鼠标,开始编辑工具条。

点击“Add ToolbarButton”即可添加一个工具条按钮(如图20)。新添加的工具条按钮采用的是默认的图标。可以右击工具条按钮,在弹出的菜单中选中“Set Image…”,为该工具条按钮选择一幅图片。

fl图20.jpg
(图20)

五、IDE中工具的应用

1.错误查找

许多C++开发者都知道,使用GetLastError()函数可以得到一个上一次的错误代码。但是所得到的只是一个数字形式的错误ID号,如果要想知道错误提示信息,可以使用“错误查找”工具。

点击菜单“工具”→“错误查找”,打开错误查找工具(如图21)。

fl图21.jpg
(图21)

在“Value”输入框输入错误代码值,点击“Lookup”按钮即可得到错误信息。

2.Spy++

Spy++是每一位Windows程序员都要掌握的一个工具。点击“开始”→“程序”→“MicroSoft Visual Studio 2005”→“Visual Studio Tools”→“Spy++”,打开Spy++。

(1)监视窗口

监视窗口可以清楚看到程序中各个窗口之间的关系,还有它们的属性。点击菜单“监视”→“窗口”,在视图里可以看到,当前桌面窗口位于该树的顶部。其他的所有窗口都是该桌面窗口的子窗口(如图22)。

fl图22.jpg
(图22)

在视图里双击一个窗口项,即可打开“窗口属性”对话框查看窗口的属性。

如果要监视某个指定的窗口,可以使用“窗口搜索”工具。点击菜单“搜索”→“搜索窗口”,打开“搜索窗口”对话框(如图23)。

fl图23.jpg
(图23)

把鼠标移到“查找程序工具”图标上,按下鼠标左键并不要松开,此时鼠标的图标变成一个准心。把鼠标拖到想要监视的窗口上,然后松开鼠标左键,即可监视该窗口。此时在“窗口搜索”对话框中可看到该窗口的句柄、标题、类这些信息。

(2)监视进程

Spy++的监视进程工具可以监视当前计算机开启的进程。点击菜单的“监视”→“进程”,在视图里可以看到当前运行的进程(如图24)。

fl图24.jpg
(图24)

(3)监视线程

线程视图是所有具有关联窗口的线程的平面列表。不包括进程。

(4)监视消息

Spy++的监视消息工具可以监视一个窗口程序接收到哪一些消息。

首先要选中你要监视哪一个窗口程序的消息。点击菜单“消息”→“记录选项”,打开“消息选项”对话框(如图25)。

fl图25.jpg
(图25)

把鼠标移到“查找程序工具”右边的图标上,按下鼠标左键并不要松开,这时鼠标的图标会变成一个准心。拖动鼠标到你想要监视消息的那个窗口上,然后松开鼠标左键。

点击“消息选项”对话框中的“消息”选项卡,在“消息组”里指定你想要监视的消息,如只选中“键盘”表示只监视键盘消息。

点击“消息选项”对话框中的“输出”选项卡,这里可设置监视到的消息的输出信息。

点击“确定”按钮,然后我们对监视消息的窗口作一些操作,在Spy++的视图里就会显示出该窗口所接收到的消息(如图26)。

fl图26.jpg
(图26)

六、程序的调试

调试程序可以说是程序员最头痛的一件事了。VC2005提供了一些调试工具可以方便程序员进行调试,掌握它们是程序员的必修课。

1.设置调试信息

调试程序时,必要的调试信息是很重要的,VC允许程序对调试信息进行配置。

单击菜单“Project”→“项目名 Properties…”,打开“Property Pages”对话框,在左边的树控制里选中“Configuration Properties”→“C/C++”→“General”,右边的“Debug Information Format”就用于配置调试信息,其中它的几个选项如表所示:

b1cxx.jpg

2.断点的操作

设置断点是调试程序时最常使用的手段。在程序的某一行代码设置一个断点,当程序运行到这一行的时候便会停下来,转到调试环境。

(1)设置断点

把光标移到想设置断点的代码行,按下F9键,便在些行代码打上了一个断点。设置了断点的代码行左边会一个红点(如图27)。

fl图27.jpg
(图27)

(2)取消断点

把光标移到要取消的断点处,按下F9键即可取消此断点。

(3)代码跟踪

设置断点后,当程序运行到断点处,程序便会停下来,转到调试环境。此时代码的左边有一个黄色的箭头指向程序运行到的那一行代码(如图28)。

fl图28.jpg
(图28)

从图中我们可以看到,程序停在断点处。这时可以按F10或F11使程序运行到下一句,从而进行代码跟踪。

按F10和按F11的不同是:如果程序运行到的是一个函数的调用,按F10是跳到该函数调用的下一句,而按F11是跳进该函数中。

3.查看变量值

实时查看变量的值可以很快地找出因变量的问题造成程序出错的原因。当进入调试状态时,可以在VC下方的Watch窗口查看变量的值(如图29)。

fl图29.jpg
(图29)

在“Name”里输入变量的名称,按回车键,即可看到该变量的值。也可以在代码里右击一个变量名,在弹出的菜单里选中“Add Watch”。如果要删除一项,只要选中后按Del键即可。

在Locals(局部变量)窗口,可以看到当前域的所有局部变量的值。

4.实例

输入以下程序:

#define S1 "String One"

#define S2 "String Two"

#define S3 "String Three"

void main(void)

{

std::string str;

str = S1;

str = S2;

str = S3;

}

在“str = S1;”这一句打个断点,按F5键编译并运行程序。当进入调试环境,并且程序到达断点的时候,按F10键进行代码跟踪,从“Lacols”(局部变量)窗口里,我们可以观察到字符串变量str值的变化。