Visual c 第1章 Visual c++6.0基本应用程序的创建 上节介绍了 Visual c++6.0集成开发环境,对于初学者而言,更关心的是如何利用 Visual o++60集 成开发环境设计开发应用程序。 Visual c++6.0提供了应用程序框架生成向导( App Wizard),使用它 可以自动生成一个简单的应用程序。 本章将主要介绍使用 App wizard创建的几种常用的应用程序框架,以及程序的编译、连接、运行 与调试几方面的内容 1.1使用 AppWizard生成工程 在 Visual c++6.0中,使用 App Wizard可以自动生成应用程序框架,用户只需在此框架的基础上 编程实现所需的特定功能 11.1工程与工作区 在ⅤsuaC+6.0中,工程( Project,也称为项目)是应用程序开发的基本单位。工程的实质是 些相互关联的源文件的集合,可以把项目理解成一个工作任务,用户的工作都是围绕这一任务的。工 程最后经过编译、链接生成可执行文件(或者是其他部件,如动态链接库DLL)。 在 Visual c++6.0开发环境中,工程包含在工作区间( Workspace)中,一个工作区可以管理多个 工程。在 Visual c++60集成开发环境中,可以通过工作区窗口管理和维护其下的工程。在新建一个工 程中,可以选择为该工程新建一个工作区还是加入当前工作区 1.12 AppWizard可创建的工程类型 在 Visual c++60开发环境中,创建新的工程,需要执行“File”→“New”菜单命令,在“New” 对话框的“ Projects”选项卡中显示有可创建的工程类型,如图1.1所示 -DAIL COM AppwI Hesource lype wizard 图1.1“New”对话框创建工程 励志照亮人生编程改变命运
14 励志照亮人生 编程改变命运 零基础学 Visual C++ 第1 章 Visual C++6.0基本应用程序的创建 上节介绍了Visual C++6.0集成开发环境,对于初学者而言,更关心的是如何利用Visual C++6.0集 成开发环境设计开发应用程序。Visual C++6.0提供了应用程序框架生成向导(AppWizard),使用它 可以自动生成一个简单的应用程序。 本章将主要介绍使用AppWizard创建的几种常用的应用程序框架,以及程序的编译、连接、运行 与调试几方面的内容。 1.1 使用AppWizard生成工程 在Visual C++6.0中,使用AppWizard可以自动生成应用程序框架,用户只需在此框架的基础上, 编程实现所需的特定功能。 1.1.1 工程与工作区 在Visual C++6.0中,工程(Project,也称为项目)是应用程序开发的基本单位。工程的实质是一 些相互关联的源文件的集合,可以把项目理解成一个工作任务,用户的工作都是围绕这一任务的。工 程最后经过编译、链接生成可执行文件(或者是其他部件,如动态链接库DLL)。 在Visual C++6.0开发环境中,工程包含在工作区间(Workspace)中,一个工作区可以管理多个 工程。在Visual C++6.0集成开发环境中,可以通过工作区窗口管理和维护其下的工程。在新建一个工 程中,可以选择为该工程新建一个工作区还是加入当前工作区。 1.1.2 AppWizard可创建的工程类型 在Visual C++6.0开发环境中,创建新的工程,需要执行“File”→“New”菜单命令,在“New” 对话框的“Projects”选项卡中显示有可创建的工程类型,如图1.1所示。 图1.1 “New”对话框创建工程
‖第2章 Visual c+60基本应用程序的 单击要创建的工程类型,然后在“ Project name”文本框中键入项目的名字,在“ Location”文本 框中需键入工程存放的路径。 说明在使用 App Wizard生成一个应用程序时, Visual C+会在用户选择的路径下以当前的工程名建立 个目录,然后将自动生成的文件存放在该路径下 如果要添加新的项目到打开的工作区中,请选择“ Add to current workspace”选项,否则将启动 创建包含新项目的新工作区。如果要使新项目成为已有工程的子工程,请选中“ Dependency of”复 选框并指定工程名。 单击“OK”按钮,即启动了 App Wizard向导。不同类型的工程,会有不同的 App Wizard向导对话 框,用于工程的初始设置 Visual c++60中可以创建的工程类型及其说明如表1.1所示。 表11可创建的项目类型 工程类型 ATL COM AppWizard 创建ATL应用程序 创建自定义的 AppWizard Database Project 直接创建数据库项目 DevStudio Add-in wizard 创建自动化宏 ISAPI Extension Wizard 创建 Internet服务器或过滤器 MFC ActiveX Controlwizard 创建 Active控件程序 MFC App Wizard(exe) 创建MFC可执行程序 MFC App Wizard(dil 创建MFC动态链接库 New Database wizard 创建SQL服务器数据库 创建Win32控制台应用程序 Win32 Dynamic Link Library 创建Win3 Win32 Static Library 创建Win32静态库 明作为VC的基础教程,本书后面章节的介绍只涉及到其中几种常用项目的开发 在下面几节中,将具体介绍Win32控制台应用程序和MFC可执行程序(包括单文档应用程序和对 话框应用程序)的创建 1.2Win32控制台应用程序 Win32控制台应用程序(win32 Console Application)为一个类似DOS风格文本显示程序,在其 中可以实现基本的CC++程序的创建,多用于CC++语言学习的测试环境。对于刚学习完CC++语言 的ⅤC初学者来讲,理解起来非常容易 本节将结合一个具体的win32控制台应用程序实例的创建、开发,讲解 Visual c++6.0开发环境中 励志照亮人生编程改变命
15 励志照亮人生 编程改变命运 第 2 章 Visual C++6.0基本应用程序的创建 单击要创建的工程类型,然后在“Project name”文本框中键入项目的名字,在“Location”文本 框中需键入工程存放的路径。 说明 在使用AppWizard生成一个应用程序时,Visual C++会在用户选择的路径下以当前的工程名建立 一个目录,然后将自动生成的文件存放在该路径下。 如果要添加新的项目到打开的工作区中,请选择“Add to current workspace”选项,否则将启动 创建包含新项目的新工作区。如果要使新项目成为已有工程的子工程,请选中“Dependency of”复 选框并指定工程名。 单击“OK”按钮,即启动了AppWizard向导。不同类型的工程,会有不同的AppWizard向导对话 框,用于工程的初始设置。 Visual C++6.0中可以创建的工程类型及其说明如表1.1所示。 表1.1 可创建的项目类型 工程类型 说 明 ATL COM AppWizard 创建ATL应用程序 Custom AppWizard 创建自定义的AppWizard Database Project 直接创建数据库项目 DevStudio Add-in Wizard 创建自动化宏 ISAPI Extension Wizard 创建Internet服务器或过滤器 Makefile 创建Make文件 MFC ActiveX ControlWizard 创建ActiveX控件程序 MFC AppWizard(exe) 创建MFC可执行程序 MFC AppWizard(dll) 创建MFC动态链接库 New Database Wizard 创建SQL服务器数据库 Win32 Application 创建Win32应用程序 Win32 Console Application 创建Win32控制台应用程序 Win32 Dynamic_Link Library 创建Win32动态链接库 Win32 Static Library 创建Win32静态库 说明 作为VC的基础教程,本书后面章节的介绍只涉及到其中几种常用项目的开发。 在下面几节中,将具体介绍Win32控制台应用程序和MFC可执行程序(包括单文档应用程序和对 话框应用程序)的创建。 1.2 Win32控制台应用程序 Win32控制台应用程序(Win32 Console Application)为一个类似DOS风格文本显示程序,在其 中可以实现基本的C/C++程序的创建,多用于C/C++语言学习的测试环境。对于刚学习完C/C++语言 的VC初学者来讲,理解起来非常容易。 本节将结合一个具体的Win32控制台应用程序实例的创建、开发,讲解Visual C++6.0开发环境中
Visual c++ 程序代码的创建、编辑以及工程的编译、链接、执行和调试方法 1.2.1利用向导生成Win32控制台工程 Win32控制台项目的生成步骤可表示如下: (1)启动Ⅴ isual c++6.0,执行“File”→“New”菜单命令,在“New”对话框(如图1.1所示) 的“ Projects”选项卡左侧的项目列表中选中“win32 Console Application”a (2)在“ Project name”文本框中键入项目的名称“ Console pro”,在“ Location”文本框中指定 所要创建的项目的位置(文件夹) (3)单击“OK”按钮,在弹出的“win32 Console Application”对话框中,选中“ An empty project”单选框(默认)后,单击“ Finish”按钮,如图1.2所示 What kind of Console Application do you An empty project. C A"Hello, world! application. r An application that supports MFC. 图1.2“win32 Console Application”对话框窗口 (4)在新弹出的“ New Project Information”对话框中,单击“OK”按钮,项目即创建成功。 项目创建成功后,在工作区窗口的 File view选项卡内,就可以看到一个名为“ Console pro”的工 程文件,“ Console pro files”目录下的“ Source files”、“ Header files”、“ Resource files”三个子目 录分别用于分类放置与 Consolepro项目有关的源程序文件、头文件和相关资源文件。 说明创建项目时,选择创建的为空项目,所以“ Source files”、“ Header files”“ Resource files”三 个子目录下没有任何文件。 1.2.2生成和编辑源文件 使用 App wizard创建了工程之后,用户就可以在工程框架的基础上,添加、编辑源文件与资源, 实现用户的功能需求 本实例实现的功能是将一个字符串经加密转换为一个新的串。其加密方法是:当字符串中包含有 a’~‘y’的小写字母时,用后一个字母代替前一个字母,其中‘z’变换为‘a'。例如 原串为 Tell you a secret 加密后的串为 Tfmm zpv b tfdsfu 励志照亮人生编程改变命运
16 励志照亮人生 编程改变命运 零基础学 Visual C++ 程序代码的创建、编辑以及工程的编译、链接、执行和调试方法。 1.2.1 利用向导生成Win32控制台工程 Win32控制台项目的生成步骤可表示如下: (1)启动Visual C++6.0,执行“File”→“New”菜单命令,在“New”对话框(如图1.1所示) 的“Projects”选项卡左侧的项目列表中选中“Win32 Console Application”。 (2)在“Project name”文本框中键入项目的名称“ConsolePro”,在“Location”文本框中指定 所要创建的项目的位置(文件夹)。 (3)单击“OK”按钮,在弹出的“Win32 Console Application”对话框中,选中“An empty project”单选框(默认)后,单击“Finish”按钮,如图1.2所示。 图1.2 “Win32 Console Application”对话框窗口 (4)在新弹出的“New Project Information”对话框中,单击“OK”按钮,项目即创建成功。 项目创建成功后,在工作区窗口的FileView选项卡内,就可以看到一个名为“ConsolePro”的工 程文件,“ConsolePro files”目录下的“Source Files”、“Header Files”、“Resource Files”三个子目 录分别用于分类放置与ConsolePro项目有关的源程序文件、头文件和相关资源文件。 说明 创建项目时,选择创建的为空项目,所以“Source Files”、“Header Files”、“Resource Files”三 个子目录下没有任何文件。 1.2.2 生成和编辑源文件 使用AppWizard创建了工程之后,用户就可以在工程框架的基础上,添加、编辑源文件与资源, 实现用户的功能需求。 本实例实现的功能是将一个字符串经加密转换为一个新的串。其加密方法是:当字符串中包含有 ‘a’~‘y’的小写字母时,用后一个字母代替前一个字母,其中‘z’变换为‘a’。例如: 原串为: Tell you a secret! 加密后的串为: Tfmm zpv b tfdsfu!
‖第2章 Visual c+60基本应用程序的 要求程序对输入串加密,输出加密前和加密后的串,再将加密后的字符串解密输出。 首先需要为工程添加实现文件(cpp),其实现过程如下: 执行“Fle”→“New”菜单命令,在“New”对话框的“ files”选项卡中显示有可创建的文件 类型,如图1.3所示。 Files Other Documents Console Location D: Console Pr B SOL Script File A Text File Cancel 图1.3“New”对话框创建文件 可以看到 Visual c++60支持多种文件的创建与编辑,其支持的文件类型及其说明如表1.2所示 表12可创建的文件类型 文件类型 说明 文件类型 说明 创建活动服务器页 Icon File 创建图标文件 Binary File 创建二进制文件 Macro File 创建宏文件 Bitmap File 创建位图文件 ODBC Script File 创建ODBC脚本文件 C/C++ Header file 创建CC++头文件 Resource Script 创建资源脚本文件 Cursor file 创建光标文件 Resource Template 创建资源模板文件 HTML Page 创建HTML文件 Text File 创建文本文件 单击选中“C++ Source file”文件类型,在“File”文本框中键入文件名“ Secret”。 Location文 本框下的输入框是输入文件存放的有效目录,默认的目录是项目的根目录,用户也可以根据需要自己 组织源文件。 注意对话框右边的“Add d to project”一定要选中,表示新建的文件加入到项目中。 单击“OK”按钮后,即创建了资源文件“ Secret.cpp"。这时,系统自动进入文本编辑状态,用 户可以进行源程序的录入工作 说明当用户编辑一个文件时,VC标题栏同时显示正在编辑的文件的名称,如果该文件名后带一个星 号(*),说明该文件进行了修改,尚未存盘 励志照亮人生编程改变命
17 励志照亮人生 编程改变命运 第 2 章 Visual C++6.0基本应用程序的创建 要求程序对输入串加密,输出加密前和加密后的串,再将加密后的字符串解密输出。 首先需要为工程添加实现文件(.cpp),其实现过程如下: 执行“File”→“New”菜单命令,在“New”对话框的“Files”选项卡中显示有可创建的文件 类型,如图1.3所示。 图1.3 “New”对话框创建文件 可以看到Visual C++6.0支持多种文件的创建与编辑,其支持的文件类型及其说明如表1.2所示。 表1.2 可创建的文件类型 文件类型 说 明 文件类型 说 明 Active Server Page 创建活动服务器页 Icon File 创建图标文件 Binary File 创建二进制文件 Macro File 创建宏文件 Bitmap File 创建位图文件 ODBC Script File 创建ODBC脚本文件 C/C++ Header File 创建C/C++头文件 Resource Script 创建资源脚本文件 Cursor File 创建光标文件 Resource Template 创建资源模板文件 HTML Page 创建HTML文件 Text File 创建文本文件 单击选中“C++ Source File”文件类型,在“File”文本框中键入文件名“Secret”。Location文 本框下的输入框是输入文件存放的有效目录,默认的目录是项目的根目录,用户也可以根据需要自己 组织源文件。 注意 对话框右边的“Add to project”一定要选中,表示新建的文件加入到项目中。 单击“OK”按钮后,即创建了资源文件“Secret.cpp”。这时,系统自动进入文本编辑状态,用 户可以进行源程序的录入工作。 说明 当用户编辑一个文件时,VC标题栏同时显示正在编辑的文件的名称,如果该文件名后带一个星 号(*),说明该文件进行了修改,尚未存盘
Visual c++ 在工作区窗口“ File view”选项卡的“ Source file”目录下,列出了新创建的资源文件名。如果 需要把磁盘上其他目录下的源文件加入到某个工程中,只要右击 “ Source files”目录,在弹出的菜单中,选择“ Add files to folder. 命令,如图14所示,在弹出的“1 nsert Files into Project”对话框中选|cpo 择这个源文件即可 另外,如果需要从工作区中去除某些无关的文件,则只要在工作 cr Add te Soures Contral 区窗口中选中文件,然后按【 Delete】键即可。 注意 这种操作方式仅仅表明这些文件不是工程文件的一个组成部分 并不是文件操作中的删除工作,也就是说文件仍然存储在硬盘上。 图14快捷菜单 添加的资源文件“ Secret. cpp”的代码清单如下 #include using namespace std; void secret(char* s) //加密函数 hi1e(*s!=\0') if(+s>96&*s97&*s<123) //字符为"a”~”z” else if(*s==97) int main()[ char st[]="Tell you a secret! cout<<"原始字符串:"<<st<<end secret(st);//加密 cout<<"加密字符串:"<<st<<endl deseret(st);//解密 out<<"解密字符串:"<<st<<end1 励志照亮人生编程改变命运
18 励志照亮人生 编程改变命运 零基础学 Visual C++ 在工作区窗口“FileView”选项卡的“Source File”目录下,列出了新创建的资源文件名。如果 需要把磁盘上其他目录下的源文件加入到某个工程中,只要右击 “Source Files”目录,在弹出的菜单中,选择“Add Files to Folder...” 命令,如图1.4所示,在弹出的“Insert Files into Project”对话框中选 择这个源文件即可。 另外,如果需要从工作区中去除某些无关的文件,则只要在工作 区窗口中选中文件,然后按【Delete】键即可。 注意 这种操作方式仅仅表明这些文件不是工程文件的一个组成部分, 并不是文件操作中的删除工作,也就是说文件仍然存储在硬盘上。 添加的资源文件“Secret.cpp”的代码清单如下: // Secret.cpp #include using namespace std; void secret(char* s) //加密函数 { while(*s!='\0') { if(*s>96&&*s97&&*s<123) //字符为"a"~"z" *s=*s-1; else if(*s==97) *s='z'; s++; } } int main(){ char st[]="Tell you a secret!"; cout<<"原始字符串: "<<st<<endl; secret(st);//加密 cout<<"加密字符串: "<<st<<endl; desecret(st);//解密 cout<<"解密字符串: "<<st<<endl; return 0; } 图1.4 快捷菜单
‖第2章 Visual c+60基本应用程序的 12.3编译程序 编译是对单个文件进行的,源程序文件经编译后,将生成目标文件(obj文件),供链接用。编译 操作的方法为:执行“ Build”→“ Compile”菜单命令,也可使用快捷键【Ctrl+F7】。ⅤC工作台已把 当前文件名放在 Compile命令后,使得编译动作更直观明了。 执行上述命令,即对源程序进行了编译,编译成功与否的结果信息,显示在输出窗口中。 说明实际上,直接执行“Bud0链接命令,会首先对所有的源文件进行编译, Compile命令主要用于 文件较多、调用关系复杂的项目中,将源文件逐个编译,确保无误后,再进行链接,提高效率。 如果程序中没有任何语法错误,输出窗口中将显示“0eror(s),0 warning(s)”信息,表示编译成 功,即生成了目标文件,如图1.5所示。 ing..(no relevant changes detected) a+ Build(Debug Find in Files 14LI 图1.5编译成功输出窗口 若程序中有错误,输出窗口便显示出错误的个数,以及每个错误的代码和错误信息,如图1.6所示 双击错误代码所在的行,系统就会立即在编辑区显示与其对应的错误代码行,并进入编辑状态。这时 用户可根据给出的错误提示信息对源程序进行修改。修改完毕后,需要对源程序重新编译。 ay types, although there are conversi ecret.obj-2 error(s), a warning( EIDABuild (Debur Find in Files 14I 图1.6有错误产生时的编译输出窗口 对于Eror错误(属语法错误)用户必须对其更正才能编译通过:对于 Warning错误(属警告型错 误),虽然不影响编译的通过,为了程序的稳健性,一般情况下,也需要进行更正。 说明编译过程中,系统只能检查源文件中一般的语法错误,并不能深入程序内部的检查,因此编译 成功并不意味着程序最终能成功执行。 .24链接程序 编译生成目标程序后,需要把目标程序与系统中的库函数链接(Link),生成最终的可执行的exe 文件 链接操作的方法为:执行“ Build”→“ Build”菜单命令,也可使用快捷键【F7】。同样Ⅴ isual C++6.0工作台已把项目名放在“Buid”命令的后面。 Build”命令包含了编译和链接。即对源程序直接进行“ Build”操作,系统首先进行编译,编译 励志照亮人生编程改变命
19 励志照亮人生 编程改变命运 第 2 章 Visual C++6.0基本应用程序的创建 1.2.3 编译程序 编译是对单个文件进行的,源程序文件经编译后,将生成目标文件(obj文件),供链接用。编译 操作的方法为:执行“Build”→“Compile”菜单命令,也可使用快捷键【Ctrl+F7】。VC工作台已把 当前文件名放在Compile命令后,使得编译动作更直观明了。 执行上述命令,即对源程序进行了编译,编译成功与否的结果信息,显示在输出窗口中。 说明 实际上,直接执行“Build”链接命令,会首先对所有的源文件进行编译。Compile命令主要用于 文件较多、调用关系复杂的项目中,将源文件逐个编译,确保无误后,再进行链接,提高效率。 如果程序中没有任何语法错误,输出窗口中将显示“0 error(s), 0 warning(s)”信息,表示编译成 功,即生成了目标文件,如图1.5所示。 图1.5 编译成功输出窗口 若程序中有错误,输出窗口便显示出错误的个数,以及每个错误的代码和错误信息,如图1.6所示。 双击错误代码所在的行,系统就会立即在编辑区显示与其对应的错误代码行,并进入编辑状态。这时, 用户可根据给出的错误提示信息对源程序进行修改。修改完毕后,需要对源程序重新编译。 图1.6 有错误产生时的编译输出窗口 对于Error错误(属语法错误)用户必须对其更正才能编译通过;对于Warning错误(属警告型错 误),虽然不影响编译的通过,为了程序的稳健性,一般情况下,也需要进行更正。 说明 编译过程中,系统只能检查源文件中一般的语法错误,并不能深入程序内部的检查,因此编译 成功并不意味着程序最终能成功执行。 1.2.4 链接程序 编译生成目标程序后,需要把目标程序与系统中的库函数链接(Link),生成最终的可执行的.exe 文件。 链接操作的方法为:执行“Build”→“Build”菜单命令,也可使用快捷键【F7】。同样Visual C++6.0工作台已把项目名放在“Build”命令的后面。 “Build”命令包含了编译和链接。即对源程序直接进行“Build”操作,系统首先进行编译,编译
Visual c++ 成功后再进行链接,最后生成exe文件 对于文件较少的项目可以直接执行“ Build”命令,同样在输出窗口中显示提示信息,如图1.7所示 Configuration: ConsolePro- Win32 Debug-- ConsolePro. exp d/Debug. Find in Files 1 X 图1.7链接后编译输出窗口 当项目设置改变或项目中许多文件被修改,可以直接执行“ Build”→“ Rebuild aⅡ”菜单命令, 该命令将彻底重新编译链接整个项目。 2.5运行程序 程序编译并链接成功后,可以执行“ Build”→“ Execute”菜单命令或者按快捷键【Ctr+F5】来 运行程序。系统已自动将 Console Pro,exe放在“ Execute”菜单命令后。 由于创建的是控制台程序,所以运行时系统将打开一个DOS窗口,运行结果如图1.8所示 Tell you a secret! 图1.8程序运行结果 1.2.6调试程序 程序调试是程序开发中的重要环节,如果程序中出现逻辑错误,即使编译通过,也不能得到正确 的结果。只有通过调试( Debug)才能査出程序设计上的深层问题,也可以检査代码执行效率,优化 代码质量 Visual c++6.0提供了动态调试功能,该功能可以一步步跟踪程序的执行流程,并检查变量值的变 化情况。下面就简单介绍动态调试程序的方法 1.单步执行 单步执行就是一条一条语句地执行,每执行完一行语句,程序就暂停下来,以便调试者观察程序 的执行状况。 按下快捷键【F10】或者【F11】,系统就处于单步执行状态,开始单步执行。对于本程序而言, 就从main(函数开始执行。 每按一下【F10】或者【F11】键,程序就执行一步(一行)。处在单步执行状态时,有一个黄色 的箭头,指示将要执行的语句。单步执行时,在编辑窗口的下方会自动出现 Variables窗口和 Watch窗 如图19所示 励志照亮人生编程改变命运
成功后再进行链接,最后生成.exe文件。 对于文件较少的项目可以直接执行“Build”命令,同样在输出窗口中显示提示信息,如图1.7所示。 图1.7 链接后编译输出窗口 当项目设置改变或项目中许多文件被修改,可以直接执行“Build”→“Rebuild All”菜单命令, 该命令将彻底重新编译链接整个项目。 1.2.5 运行程序 程序编译并链接成功后,可以执行“Build”→“Execute”菜单命令或者按快捷键【Ctrl+F5】来 运行程序。系统已自动将ConsolePro.exe放在“Execute”菜单命令后。 由于创建的是控制台程序,所以运行时系统将打开一个DOS窗口,运行结果如图1.8所示。 图1.8 程序运行结果 1.2.6 调试程序 程序调试是程序开发中的重要环节,如果程序中出现逻辑错误,即使编译通过,也不能得到正确 的结果。只有通过调试(Debug)才能查出程序设计上的深层问题,也可以检查代码执行效率,优化 代码质量。 Visual C++6.0提供了动态调试功能,该功能可以一步步跟踪程序的执行流程,并检查变量值的变 化情况。下面就简单介绍动态调试程序的方法。 1. 单步执行 单步执行就是一条一条语句地执行,每执行完一行语句,程序就暂停下来,以便调试者观察程序 的执行状况。 按下快捷键【F10】或者【F11】,系统就处于单步执行状态,开始单步执行。对于本程序而言, 就从main()函数开始执行。 每按一下【F10】或者【F11】键,程序就执行一步(一行)。处在单步执行状态时,有一个黄色 的箭头,指示将要执行的语句。单步执行时,在编辑窗口的下方会自动出现Variables窗口和Watch窗 口,如图1.9所示。 20 励志照亮人生 编程改变命运 零基础学 Visual C++
‖第2章 Visual c+60基本应用程序的 a&电愿2,·四国pPwd 8 e F(5-97 nt nain() t<"解密字符串:“ n+乙 B013ff6c Tell you a secret: a st ADM atch (atch2 Watchs\ Watchd Z 图1.9单步调试程序界面 口 Variables窗口: Variables窗口中的Auto选项卡用于显示与当前正在执行语句有关的变量名和其 当前值: Locals选项卡用于显示当前函数内所有变量的变量名和其当前值。如果需要,用户可 以双击 Variables窗口中显示的某个变量的 Value域,人为地修改该变量的当前值继续调试下面 的程序 口 Watch窗口:在 Watch窗口中,可以添加需要长期观察取值情况的变量名。双击 Watch窗口中的 Name域,进入编辑状态,输入要察看的变量名,即可将该变量加入察看窗。用户可以通过观 察这些变量的当前值,判断程序的执行状态 快捷键【F10】和【F11】的区别在于,使用快捷键【F10】时,系统会把函数调用当作一条语句 执行:而使用快捷键【F11】时,如果遇到函数的调用,则进入被调用函数内部,继续单步执行。快 捷键【F10】和【F11】可以交替使用 如果需要中途终止动态调试状态,执行“ Debug”→“ Stop Debugging”菜单命令,或者按下 【Shif+F5】快捷键即可 2.设置断点执行 采用单步执行的方法调试程序有时太慢,如果能够判断出逻辑错误的大致位置,就可以在程序中 设置程序断点进行动态调试。 断点是用户在程序中设置的,能够使程序暂时中断执行的标志。执行时,如果没有遇到断点,程 序将连续执行,遇到断点,程序就暂停执行 (1)设置/取消断点 在编辑区,将插入点光标定位于需要检査程序执行情况的语句,按下【F9】键,就完成了断点的 设置,这行语句就是一个断点。程序中可以设置多个断点,凡是设置成断点的语句,其左侧都会显示 励志照亮人生编程改变命运
图1.9 单步调试程序界面 ❑ Variables窗口:Variables窗口中的Auto选项卡用于显示与当前正在执行语句有关的变量名和其 当前值;Locals选项卡用于显示当前函数内所有变量的变量名和其当前值。如果需要,用户可 以双击Variables窗口中显示的某个变量的Value域,人为地修改该变量的当前值继续调试下面 的程序。 ❑ Watch窗口:在Watch窗口中,可以添加需要长期观察取值情况的变量名。双击Watch窗口中的 Name域,进入编辑状态,输入要察看的变量名,即可将该变量加入察看窗。用户可以通过观 察这些变量的当前值,判断程序的执行状态。 快捷键【F10】和【F11】的区别在于,使用快捷键【F10】时,系统会把函数调用当作一条语句 执行;而使用快捷键【F11】时,如果遇到函数的调用,则进入被调用函数内部,继续单步执行。快 捷键【F10】和【F11】可以交替使用。 如果需要中途终止动态调试状态,执行“Debug”→“Stop Debugging”菜单命令,或者按下 【Shift+F5】快捷键即可。 2. 设置断点执行 采用单步执行的方法调试程序有时太慢,如果能够判断出逻辑错误的大致位置,就可以在程序中 设置程序断点进行动态调试。 断点是用户在程序中设置的,能够使程序暂时中断执行的标志。执行时,如果没有遇到断点,程 序将连续执行,遇到断点,程序就暂停执行。 (1)设置/取消断点 在编辑区,将插入点光标定位于需要检查程序执行情况的语句,按下【F9】键,就完成了断点的 设置,这行语句就是一个断点。程序中可以设置多个断点,凡是设置成断点的语句,其左侧都会显示 21 励志照亮人生 编程改变命运 第 2 章 Visual C++6.0基本应用程序的创建
Visual c++ 个紫红色的圆点 插入点光标定位于已经设置了断点的语句内,按下【F9】键,就可以取消该断点。 2)在断点之间运行程序 设置断点之后,按下快捷键【F5】,程序开始执行。当遇到第一个断点时,暂停执行,此时该语 句的左侧同样会显示一个黄色的指示箭头,在编辑窗口的下方会自动出现 Variables窗口和 Watch窗口 如图1.10所示。在其中可以察看程序的执行情况。 Pe ConsolePro- Microsoft visual C++ [breakl-[Secret, cppI 1E Eile Iait Yie Insert trojet lebus Tools IiadorHep IAll global members main 西! else if(S=897) 5=’z secret! ol cout <<st<<end] Value x 0013ff6 Tell yo cret? Locals this #13ff6c"Tell you a secrett" reak at location breakpoint Ln 27, Col 1 RECICOLJOVHIE 图1.10设置断点调试程序界面 再次按下【F5】键,程序就从当前断点处继续执行,直到遇到下一个断点,再次暂时中断运行, 此时又可以察看程序的执行情况了。当然,如果没有遇到断点,程序会一直执行下去,直到执行完毕。 说明如果在循环体内设置了断点,则每次循环执行到此断点,程序便暂停运行。 当然,用户也可以在执行到断点处之后,变化调试方式,采样单步执行。实际上,单步执行和设 置断点执行两种动态调试方法交替使用,能够更快地找到程序中的逻辑错误。在实际程序的动态调试 时,一般都是交替地使用【F5】、【F10】和【F11】快捷键。 1.3MFC应用程序框架 Visual c++6.0一个最主要用途就是基于MFC的 Windows应用程序的设计,这也是本书的重点 MFC提供了构造 Windows应用程序的框架,它不仅为应用程序建立标准的结构,生成一系列起动 文件,还提供标准的图形用户界面如菜单、工具栏、状态条等供开发人员在程序中补充完善,开发人 员只需要完成针对特定应用的代码。使用应用程序框架的应用程序代码小,运行速度快,它提供的工 励志照亮人生编程改变命运
22 励志照亮人生 编程改变命运 零基础学 Visual C++ 一个紫红色的圆点。 将插入点光标定位于已经设置了断点的语句内,按下【F9】键,就可以取消该断点。 (2)在断点之间运行程序 设置断点之后,按下快捷键【F5】,程序开始执行。当遇到第一个断点时,暂停执行,此时该语 句的左侧同样会显示一个黄色的指示箭头,在编辑窗口的下方会自动出现Variables窗口和Watch窗口, 如图1.10所示。在其中可以察看程序的执行情况。 图1.10 设置断点调试程序界面 再次按下【F5】键,程序就从当前断点处继续执行,直到遇到下一个断点,再次暂时中断运行, 此时又可以察看程序的执行情况了。当然,如果没有遇到断点,程序会一直执行下去,直到执行完毕。 说明 如果在循环体内设置了断点,则每次循环执行到此断点,程序便暂停运行。 当然,用户也可以在执行到断点处之后,变化调试方式,采样单步执行。实际上,单步执行和设 置断点执行两种动态调试方法交替使用,能够更快地找到程序中的逻辑错误。在实际程序的动态调试 时,一般都是交替地使用【F5】、【F10】和【F11】快捷键。 1.3 MFC应用程序框架 Visual C++6.0一个最主要用途就是基于MFC的Windows应用程序的设计,这也是本书的重点。 MFC提供了构造Windows应用程序的框架,它不仅为应用程序建立标准的结构,生成一系列起动 文件,还提供标准的图形用户界面如菜单、工具栏、状态条等供开发人员在程序中补充完善,开发人 员只需要完成针对特定应用的代码。使用应用程序框架的应用程序代码小,运行速度快,它提供的工
‖第2章 Visual c+60基本应用程序的 具也降低了编码的难度。 13.1基于对话框的应用程序框架 MFC Windows应用程序框架主要有两种类型:基于对话框的应用程序框架和基于文档/视图结构 的应用程序框架。平时所见到的大多数 Windows 应用程序均属于这两种框架。在本节简要介绍一F 下基于对话框的应用程序框架的创建 hat type of application would you like to create? (1)启动 isual o++6.0,执行“File” C Multiple document “New”菜单命令,在“New”对话框的“ Projects Dialog based 选项卡左侧的项目列表中,选中“MFC App Wizard(exe) (2)在“ Project name”文本框中键入项目的 hat language would you like your reseurces in? 名称“ Dialogbase demo”,在“ Location”文本框 中指定所要创建的项目的位置(文件夹)。 (3)单击“OK”按钮,在弹出的“MFC App Wizard stepl”对话框中,选中“ Dialog based” Finish Cancel 单选框后,单击“Next”按钮,如图1.11所示 图111“ MFC App Wizard step I”对话框窗口 (4)此时会出现“ MFC App Wizard step2”对 话框,在其中也包含一些选项,这里采用默认的设置,单击“Next”按钮,出现“ MFC App Wizard tep3”对话框……,依次类推均采用默认的设置 (5)在最后出现的“ New Project Information”对话框中,单击“OK”按钮,项目即创建成功 项目创建成功后,在工作区窗口会发现自动生成了一些相关类和资源,在资源编辑窗口显示的则 是自动生成的对话框的界面,如图1.12所示 Tile Bdit Yi ew Luart brojeet build Layout Tools lindow Yalp 由日axe2,2,四曾wp“ea+ CDialogbase[- [All class members)-. CDialogbaseDemoDlg·步函!到色 T00在这设置对话控制 Ca。ResH EN Build Debug Find in Files1X4I S图图x重口 0.0320×200EA0 图112 App Wizard生成的基于对话框的MFC项目 励志照亮人生编程改变命
具也降低了编码的难度。 1.3.1 基于对话框的应用程序框架 MFC Windows应用程序框架主要有两种类型:基于对话框的应用程序框架和基于文档/视图结构 的应用程序框架。平时所见到的大多数Windows 应用程序均属于这两种框架。在本节简要介绍一 下基于对话框的应用程序框架的创建。 (1)启动Visual C++6.0,执行“File”→ “New”菜单命令,在“New”对话框的“Projects” 选项卡左侧的项目列表中,选中“ MFC AppWizard(exe)”。 (2)在“Project name”文本框中键入项目的 名称“DialogbaseDemo”,在“Location”文本框 中指定所要创建的项目的位置(文件夹)。 ( 3 )单击“O K ”按钮,在弹出的“MFC AppWizard step1”对话框中,选中“Dialog based” 单选框后,单击“Next”按钮,如图1.11所示。 (4)此时会出现“MFC AppWizard step2”对 话框,在其中也包含一些选项,这里采用默认的设置,单击“Next”按钮,出现“MFC AppWizard step3”对话框……,依次类推均采用默认的设置。 (5)在最后出现的“New Project Information”对话框中,单击“OK”按钮,项目即创建成功。 项目创建成功后,在工作区窗口会发现自动生成了一些相关类和资源,在资源编辑窗口显示的则 是自动生成的对话框的界面,如图1.12所示。 图1.12 AppWizard生成的基于对话框的MFC项目 23 励志照亮人生 编程改变命运 第 2 章 Visual C++6.0基本应用程序的创建 图1.11 “MFC AppWizard step1”对话框窗口