VisualC++指导教程(VisualStudio2010)通过讲解创建一个纸牌游戏程序的例子对项目流程做简单介绍:使用项目和解决方案、生成项目、测试项目、调试项目、部署程序。最后对创建标准C++程序做简要表述。在使用VisualStudio编写VisualC++程序的过程中,第一个任务是选择项目的类型。对于每个项目类型,VisualStudio均会设置编译器设置,并会为您生成起始代码。在此演练中的项目中,您将创建一个基本程序,该程序跟踪有多少个玩家正在玩不同的纸牌游戏。1使用项目和解决方案(C++)创建项目创建项目1.在“文件”菜单上指向“新建”,再单击“项目”。2.在“项目类型”区域中,单击“VisualC++”。然后,在“VisualStudio已安装的模板”窗格中,单击“Win32控制台应用程序”。3.键入项目名称。对于此示例,请键入game。当您创建项目时,VisualStudio会将该项目放入一个解决方案。默认情况下,解决方案的名称与项目名称相同。接受该名称。您可以接受默认位置、键入一个不同的位置或者浏览到要保存项目的目录。单击“确定”启动“Win32应用程序向导”。4.在“Win32应用程序向导”的“概述”页上,单击“下一步”。5.在“应用程序类型”下的“应用程序设置”页,选择“控制台应用程序”。在“附加选项”下选择“空项目”设置。单击“完成”。现在有了项目,但项目还没有源代码文件。使用解决方案资源管理器“解决方案资源管理器”可帮助您使用解决方案中的文件和其他资源。在本节中,您将向项目中添加一个类,并且VisualStudio将添加.h和.cpp文件。然后,为测试类的主程序向项目添加一个新的源代码文件。向项目添加类1.如果未显示“解决方案资源管理器”,请在“视图”菜单上,单击“解决方案资源管理器”。2.在“解决方案资源管理器”中,右击“头文件”文件夹,指向“添加”,然后单击“类”。在“VisualC++”类别中,单击“C++”,在“VisualStudio已安装的模板”区域中单击“C++类”,然后单击“添加”。3.在“一般C++类向导”中,键入Cardgame作为“类名”,并接受默认的文件名和设置。单击“完成”。4.对已在编辑区域中打开的Cardgame.h文件进行以下更改:在类定义的左大括号之后添加两个私有数据成员。复制intplayers;staticinttotalparticipants;添加一个采用类型为int的参数之一的公共构造函数原型。复制Cardgame(intp);删除VisualStudio生成的默认构造函数。默认构造函数是没有参数的构造函数。该默认构造函数类似于:复制Cardgame(void);5.在您对Cardgame.h文件进行更改之后,该文件应类似于:复制#pragmaonceclassCardgame{intplayers;staticinttotalparticipants;public:Cardgame(intp);~Cardgame(void);};#pragmaonce行指明编译器只包含该文件一次。有关更多信息,请参见once。有关此头文件中的其他C++关键字的信息,请参见class(C++)、int、Static(C++)和public(C++)。6.双击“源文件”文件夹中的Cardgame.cpp,将其打开以进行编辑。7.在#includeCardgame.h之后,添加以下各行。复制#includeiostreamusingnamespacestd;8.为采用一个int参数的构造函数添加代码。复制Cardgame::Cardgame(intp){players=p;totalparticipants+=p;coutpplayershavestartedanewgame.Therearenowtotalparticipantsplayersintotal.endl;}开始键入pl或to时,可以按Ctrl+空格键,以便自动完成功能将为您完成键入players或totalparticipants的操作。9.删除VisualStudio生成的以下默认构造函数。复制Cardgame::Cardgame(void);10.在您对Cardgame.cpp文件进行更改之后,该文件应类似于:复制#includeCardgame.h#includeiostreamusingnamespacestd;Cardgame::Cardgame(intp){players=p;totalparticipants+=p;coutpplayershavestartedanewgame.Therearenowtotalparticipantsplayersintotal.endl;}Cardgame::~Cardgame(void){}有关#include的更多信息,请参见#includeDirective(C/C++)。添加源文件现在,为测试类的主程序添加一个源代码文件。添加新源文件1.在“解决方案资源管理器”中,右击“源文件”文件夹,指向“添加”,然后单击“新建项”。在“VisualC++”类别中,选择“代码”,然后单击“C++文件(.cpp)”。2.键入testgames作为名称,然后单击“添加”。3.在testgames.cpp编辑窗口中,键入以下代码。复制#includeCardgame.hintCardgame::totalparticipants=0;intmain(){Cardgame*bridge=0;Cardgame*blackjack=0;Cardgame*solitaire=0;Cardgame*poker=0;bridge=newCardgame(4);blackjack=newCardgame(8);solitaire=newCardgame(1);deleteblackjack;deletebridge;poker=newCardgame(5);deletesolitaire;deletepoker;return0;}有关此源文件中的C++关键字的信息,请参见newOperator(C++)和deleteOperator(C++)。4.在“生成”菜单上,单击“生成解决方案”。来自生成的输出应显示在“输出”窗口中。这表示项目已编译,并且未发生错误。如果未显示输出,请将您的代码与前面步骤中提供的代码进行比较。2演练:生成项目(C++)使用IDE修复编译错误1.在testgames.cpp中,删除最后一行中的分号,使代码如下所示:复制return02.在“生成”菜单上,单击“生成解决方案”。3.“输出”窗口中显示一条消息,指示生成项目失败。单击“输出”窗口中的“转到下一条消息”按钮(指向右方的绿色箭头)。“输出”窗口中的错误消息和状态栏区域指示右大括号前缺少一个分号。若要查看有关错误的更多帮助信息,请突出显示错误,并按F1键。4.将分号重新添加到导致语法错误的行的末尾:复制return0;5.在“生成”菜单上,单击“生成解决方案”。“输出”窗口中显示一条消息,指示项目已正确编译。3演练:测试项目(C++)以“调试”模式运行程序1.如果“testgames.cpp”文件不可见,请在编辑区域中单击该文件对应的选项卡。2.单击以下行,将其设置为编辑器中的当前行:复制solitaire=newCardgame(1);3.若要在该行上设置断点,请单击“调试”菜单上的“切换断点”,或者按F9。也可以单击代码行左侧的区域来设置或清除断点。设置了断点的代码行的左侧会显示一个红色圆圈。4.在“调试”菜单上,单击“开始调试”,或者按F5。当程序运行到包含断点的行时,执行将暂时停止(因为程序处于“中断”模式)。代码行左侧的黄色箭头指示该行是要执行的下一个代码行。5.若要检查Cardgame::totalparticipants变量的值,请将鼠标指针悬停在该变量上方。该变量的名称及其值12即显示在工具提示窗口中。右击Cardgame::totalparticipants变量。选择“表达式:‘totalparticipants’”,并单击“添加监视”以在“监视”窗口中显示该变量。您也可以选择该变量并将其拖动到“监视”窗口。6.在“调试”菜单上,单击“逐过程”,或者按F10步进到下一行代码。Cardgame::totalparticipants的值现在显示为13。7.右击main方法的最后一行(return0;),并单击“运行到光标处”。代码左侧的黄色箭头指向要执行的下一个语句。8.在Cardgame终止时,Cardgame::totalparticipants数应当减小。此时,Cardgame::totalparticipants应当等于0,这是因为所有的Cardgame指针都已删除,但是“监视1”窗口指示Cardgame::totalparticipants等于18。代码中存在一个bug,您将在下一节中检测并修复它。9.在“调试”菜单上,单击“停止调试”或者按Shift-F5停止程序。4演练:调试项目(C++)修复包含bug的程序1.若要明白在Cardgame对象销毁时会发生什么,请查看Cardgame类的析构函数。在“视图”菜单上,单击“类视图”,或者单击“解决方案资源管理器”窗口中的“类视图”选项卡。展开“游戏”项目树并单击“Cardgame”类。下方的区域显示类的成员和方法。右击“~Cardgame(void)”析构函数并单击“转到定义”。2.要在Cardgame终止时减少totalparticipants,请在Cardgame::~Cardgame析构函数的左大括号和右大括号之间键入以下代码:复制totalparticipants-=players;coutplayersplayershavefinishedtheirgame.Therearenowtotalparticipantsplayersintotal.endl;}3.进行更改后,Cardgame.cpp文件应如下所示:复制#includeCardgame.h#includeiostreamusingnamespacestd;Cardgame::Cardgame(intp){players=p;totalparticipants+=p;coutplayersplayershavestartedanewgame.Therearenowtotalparticipantsplayersintotal.endl;}Cardgame::~Cardgame(void){totalparticipants-=players;coutplayersplayershavefinishedtheirgame.Therearenowtotalparticipantsplayersintotal.endl;}4.在“生成”菜单上,单击“生成解决方案”。5.在“调试”菜单上,单击“启动调试”,或按F5,以“调试”模式运行该程序。程序将在第一个断点处暂停。6.在“调试”菜单上,单击“逐过程”或者按F10逐句通过程序。请注意,执行每个Cardgame构造函数后,totalparticipants的值会增大。而在删除每个指针(并调用析构函数)后,totalparticipants的值会减小。7.单步执行至程序的最后一行。恰好在执行return语句之前,totalparticipants等于0。继续逐句执行程序,直到程序退出;或者,在“调试”菜单中单击“继续”,或按F5允许程序继续运行,直到退出。5演练:部署程序(C++)创建安装项目和安装程序1.在“文件”菜单上,单击“新建”,再单击“项目”。随即出现“添加新项目”对话框。2.在“已安装的模板”下,展开“其他项目类型”节点。接着,展开“安装和部署”节点并单击“VisualStudioI