Visual-studio-2012-C++-指导教程

上传人:gbs****77 文档编号:9292704 上传时间:2020-04-04 格式:DOC 页数:56 大小:512.50KB
返回 下载 相关 举报
Visual-studio-2012-C++-指导教程_第1页
第1页 / 共56页
Visual-studio-2012-C++-指导教程_第2页
第2页 / 共56页
Visual-studio-2012-C++-指导教程_第3页
第3页 / 共56页
点击查看更多>>
资源描述
Visual C 指导教程 Visual Studio 2012 在本指导教程中 将介绍 Visual Studio 开发环境 以及可以使用 Visual C 创建的各 种类型的应用程序 其中包括命令行应用程序 Windows 应用程序 甚至简单的游戏 本指 导教程还将介绍如何创建可重用代码库 以及如何在编写和测试了代码后将其交付给客户 因为每个主题都以上一主题中的信息为基础 所以我们建议您按顺序完成指导教程 在每 个主题的底部 您可以找到指导教程下一主题的导航链接和上一主题的链接 如果需要返回并 查看某些内容 本指导教程假定您具备 C 语言的基础知识 本节内容 Visual Studio IDE 简介 C 描述如何使用 Visual Studio IDE 创建解决方案和项目 以便有效地编写代码并生成 调试 测试和部署应用程序 创建命令行应用程序 C 介绍 C 和 C 命令行应用程序 讨论如何创建符合 ANSI 的 C 或 C 程序 并 描述如何使用命令行编译器编译应用程序 创建 Windows 应用程序 C 描述如何创建 Windows API Win32 应用程序 Windows 窗体应用程序 Windows 窗体控件 甚至简单的 DirectX 游戏 创建可重用代码 C 描述如何创建动态链接库 DLL 静态库和托管程序集 以便多个应用程序可以方便地 重用代码 下一步要做什么 C 包含指向文档其他部分的链接 您可以学习关于指导教程中介绍的主题的更多信息 Visual Studio IDE 简介 C Visual Studio 集成开发环境 IDE 提供了一组工具 可帮助您编写和修改代码 以及检测和更 正错误 在这些主题中 您将创建一个新的标准 C 程序 并使用 Visual Studio 为 C 开发人员 提供的功能测试该程序的功能 您创建的简单程序将跟踪有多少个玩家正在玩各种纸牌游戏 本演练涵盖以下内容 演练 使用项目和解决方案 C 演练 生成项目 C 演练 测试项目 C 演练 调试项目 C 演练 部署程序 C 演练 使用项目和解决方案 C 在 Visual Studio 中 可以将您的工作组织为项目和解决方案 一个解决方案可以包含多个项 目 例如 一个 DLL 和一个引用该 DLL 的可执行文件 有关更多信息 请参见解决方案和 项目基础知识 此演练演示如何创建项目 使用 解决方案资源管理器 向项目中添加文件 在文件中键入代码 然后生成项目 系统必备 若要完成本演练 您必须了解 C 语言的基础知识 创建项目 在使用 Visual Studio 编写 Visual C 程序的过程中 第一个任务是选择项目的类型 对于 每个项目类型 Visual Studio 均会设置编译器设置 并会为您生成起始代码 在此演练中的项 目中 您将创建一个基本程序 该程序跟踪有多少个玩家正在玩不同的纸牌游戏 创建项目 1 在 文件 菜单上指向 新建 再单击 项目 2 在 新建项目 对话框中 展开 模板 节点 展开 VC 节点 然后单击 Win32 3 在已安装的模板列表中 单击 Win32 控制台应用程序 4 输入项目名称 对于此示例 请输入游戏 当您创建项目时 Visual Studio 会将该项目放入一个解决方案 默认情况下 解决方 案的名称与项目名称相同 接受该名称 您可以接受默认位置 键入一个不同的位置或者浏览到要保存项目的目录 单击 确定 启动 Win32 应用程序向导 5 在 Win32 应用程序向导 的 概述 页上 单击 下一步 6 在 应用程序类型 下的 应用程序设置 页 选择 控制台应用程序 在 附加选项 下 选择 空项目 设置 单击 完成 现在有了项目 但项目还没有源代码文件 使用解决方案资源管理器 解决方案资源管理器 可帮助您使用解决方案中的文件和其他资源 在本节中 您将向项目中添加一个类 并且 Visual Studio 将添加 h 和 cpp 文件 然后 为测试类的主程序向项目添加一个新的源代码文件 向项目添加类 1 如果未显示 解决方案资源管理器 请在 视图 菜单上 单击 解决方案资源管理器 2 在 解决方案资源管理器 中 右击 头文件 文件夹 指向 添加 然后单击 类 在添加类向导 展开 Visual C 节点 单击 C 单击 在已安装模板的列表中 C 类 然后单击 添加 3 在 一般 C 类向导 中 键入 Cardgame 作为 类名 并接受默认的文件名和设置 单击 完成 4 对已在编辑区域中打开的 Cardgame h 文件进行以下更改 在类定义的左大括号之后添加两个私有数据成员 int players static int totalparticipants 添加一个采用类型为 int 的参数之一的公共构造函数原型 Cardgame int p 删除 Visual Studio 生成的默认构造函数 默认构造函数是没有参数的构造函 数 该默认构造函数类似于 Cardgame void 5 在您对 Cardgame h 文件进行更改之后 该文件应类似于 6 pragma once 7 class Cardgame 8 9 int players 10 static int totalparticipants 11 public 12 Cardgame int p 13 Cardgame void 14 pragma once 行指明编译器只包含该文件一次 有关更多信息 请参见一旦 有关此头文件中的其他 C 关键字的信息 请参见 类 c int 静态 c 和 公 共 c 15 双击 源文件 文件夹中的 Cardgame cpp 将其打开以进行编辑 16 在 include Cardgame h 之后 添加以下各行 17 include 18 using namespace std 19 为采用一个 int 参数的构造函数添加代码 20 Cardgame Cardgame int p 21 22 players p 23 totalparticipants p 24 cout p players have started a new game Ther e are now 25 totalparticipants players in total endl 26 开始键入 pl 或 to 时 可以按 Ctrl 空格键 以便自动完成功能将为您完成键入 players 或 totalparticipants 的操作 27 删除 Visual Studio 生成的以下默认构造函数 28 Cardgame Cardgame void 29 在您对 Cardgame cpp 文件进行更改之后 该文件应类似于 30 include Cardgame h 31 include 32 using namespace std 33 34 Cardgame Cardgame int p 35 36 players p 37 totalparticipants p 38 cout p players have started a new game Ther e are now 39 totalparticipants players in total endl 40 41 Cardgame Cardgame void 42 43 有关 include 的更多信息 请参见 include 指令 c c 添加源文件 现在 为测试类的主程序添加一个源代码文件 添加新源文件 1 在 解决方案资源管理器 中 右击 源文件 文件夹 指向 添加 然后单击 新建项 在 Visual C 类别中 选择 代码 然后单击 C 文件 cpp 2 当名称 输入 testgames 然后按 添加 3 在 testgames cpp 编辑窗口中 键入以下代码 4 include Cardgame h 5 include stdafx h 6 int Cardgame totalparticipants 0 7 int main 8 9 Cardgame bridge 0 10 Cardgame blackjack 0 11 Cardgame solitaire 0 12 Cardgame poker 0 13 14 bridge new Cardgame 4 15 blackjack new Cardgame 8 16 solitaire new Cardgame 1 17 delete blackjack 18 delete bridge 19 poker new Cardgame 5 20 delete solitaire 21 delete poker 22 23 return 0 24 有关此源文件中的 C 关键字的信息 请参见 新运算符 C 和 删除运算符 C 25 在 生成 菜单上 单击 生成解决方案 来自生成的输出应显示在 输出 窗口中 这表示项目已编译 并且未发生错误 如果 未显示输出 请将您的代码与前面步骤中提供的代码进行比较 演练 生成项目 C 在本步骤中 您将故意在代码中引入一个 Visual C 语法错误 以了解什么是编译错误 以 及如何修复它 编译项目时 会显示错误消息以指示所发生的问题的性质和位置 系统必备 本主题假定您具备 C 语言的基础知识 使用 IDE 修复编译错误 1 在 testgames cpp 中 删除最后一行中的分号 使代码如下所示 2 return 0 3 在 生成 菜单上 单击 生成解决方案 4 输出 窗口中显示一条消息 指示生成项目失败 单击 输出 窗口中的 转到下一条消息 按钮 指向右方的绿色箭头 输出 窗口中 的错误消息和状态栏区域指示右大括号前缺少一个分号 若要查看有关错误的更多帮助信息 请突出显示错误 并按 F1 键 5 将分号重新添加到导致语法错误的行的末尾 6 return 0 7 在 生成 菜单上 单击 生成解决方案 输出 窗口中显示一条消息 指示项目已正确编译 演练 测试项目 C 以 调试 模式运行程序使您可以使用断点来暂停程序 以检查变量和对象的状态 在本步骤中 您将在程序运行时观察变量的值 并推断为什么值与预期的不同 系统必备 本主题假定您具备 C 语言的基础知识 以 调试 模式运行程序 1 如果 testgames cpp 文件不可见 请在编辑区域中单击该文件对应的选项卡 2 单击以下行 将其设置为编辑器中的当前行 3 solitaire new Cardgame 1 4 若要在该行上设置断点 请单击 调试 菜单上的 切换断点 或者按 F9 也可以单击 代码行左侧的区域来设置或清除断点 设置了断点的代码行的左侧会显示一个红色圆圈 5 在 调试 菜单上 单击 开始调试 或者按 F5 当程序运行到包含断点的行时 执行将暂时停止 因为程序处于 中断 模式 代码 行左侧的黄色箭头指示该行是要执行的下一个代码行 6 若要检查 Cardgame totalparticipants 变量的值 请将鼠标指针悬停在该变 量上方 该变量的名称及其值 12 即显示在工具提示窗口中 右击 Cardgame totalparticipants 变量 选择 表达式 totalparticipants 并单击 添加监视 以在 监视 窗口中显示该变量 您也可以选择该变量并将其拖动到 监视 窗口 7 在 调试 菜单上 单击 逐过程 或者按 F10 步进到下一行代码 Cardgame totalparticipants 的值现在显示为 13 8 右击 main 方法的最后一行 return 0 并单击 运行到光标处 代码左侧的黄 色箭头指向要执行的下一个语句 9 在 Cardgame 终止时 Cardgame totalparticipants 数应当减小 此时 Cardgame totalparticipants 应当等于 0 这是因为所有的 Cardgame 指针 都已删除 但是 监视 1 窗口指示 Cardgame totalparticipants 等于 18 代码中存在一个 bug 您将在下一节中检测并修复它 10 在 调试 菜单上 单击 停止调试 或按 shift F5 以停止程序 演练 调试项目 C 在本步骤中 您将修改程序以修复在测试项目时发现的问题 系统必备 本主题假定您具备 C 语言的基础知识 修复包含 bug 的程序 1 若要明白在 Cardgame 对象销毁时会发生什么 请查看 Cardgame 类的析构函数 在 视图 菜单上 单击 类视图 或者单击 解决方案资源管理器 窗口中的 类视图 选项卡 展开 游戏 项目树并单击 Cardgame 类 下方的区域显示类的成员和方法 右击 Cardgame void 析构函数并单击 转到定义 2 要在 Cardgame 终止时减少 totalparticipants 请在 Cardgame Cardgame 析构函数的左大括号和右大括号之间键入以下代码 3 totalparticipants players 4 cout players players have finished their game T here are now 5 totalparticipants players in total endl 6 7 8 进行更改后 Cardgame cpp 文件应如下所示 9 include Cardgame h 10 include 11 using namespace std 12 Cardgame Cardgame int p 13 14 players p 15 totalparticipants p 16 cout players players have started a new game There are now 17 totalparticipants players in total endl 18 19 20 Cardgame Cardgame void 21 22 totalparticipants players 23 cout players players have finished their game There are now 24 totalparticipants players in total endl 25 26 在 生成 菜单上 单击 生成解决方案 27 在 调试 菜单上 单击 启动调试 或按 F5 以 调试 模式运行该程序 程序将在第 一个断点处暂停 28 在 调试 菜单上 单击 逐过程 或者按 F10 逐句通过程序 请注意 执行每个 Cardgame 构造函数后 totalparticipants 的值会增大 而 在删除每个指针 并调用析构函数 后 totalparticipants 的值会减小 29 单步执行至程序的最后一行 恰好在执行 return 语句之前 totalparticipants 等于 0 继续逐句执行程序 直到在 调试 菜单上单击 运行 或按 F5 退出或从而使程 序得以继续运行 直到退出 演练 部署程序 C 现在 我们创建了应用程序 最后一步是创建可供其他用户在其计算机上安装该程序的安装程 序 为此 我们需要将新项目添加到现有解决方案 此新项目的输出是 setup exe 文件 该 文件用于安装我们之前在另一台计算机上创建的应用程序 Note 本主题中的信息不适用于 Visual C Express 本演练将使用 Windows Installer 来部署应用程序 您还可以使用 ClickOnce 部署应用程序 有关更多信息 请参见 Visual C 应用程序的 ClickOnce 部署 有关常规部署的更多信息 请参见部署应用程序和组件 系统必备 本主题假定您具备 C 语言的基础知识 此过程中使用的功能在 Visual C 学习版中不可用 创建安装项目和安装程序 1 在 文件 菜单上 单击 新建 再单击 项目 随即出现 添加新项目 对话框 2 在 已安装的模板 下 展开 其他项目类型 节点 接着 展开 安装和部署 节点并单 击 Visual Studio Installer 3 从 模板 窗格中 选择 安装向导 键入安装项目的名称 例如 gameInstaller 在 解决方案 列表框中 选择 添加到解决方案 单击 确定 按钮 4 将出现 安装向导 单击 下一步 继续 5 从向导的 选择一种项目类型 窗格中 选择 为 Windows 应用程序创建一个安装程序 选项 并单击 下一步 继续 6 从向导的 选择要包括的项目输出 窗格 选择 主输出 来自 游戏 并单击 下一步 继续 7 无需在安装程序中包括任何其他文件 因此 从安装程序的 选择要包括的文件 窗格 中 单击 下一步 8 检查向导的更改 并验证所有内容是否正确 单击 完成 创建项目 解决方案资源管理器 中将列出新的 gameInstaller 项目 此项目将列出应用程序依 靠的依赖项 如 C 运行库或 NET Framework 以及安装程序中将包括的项目文件 创建安装项目后 有许多选项可以更改 有关更多信息 请参见 Windows Installer 部 署 9 通过在 解决方案资源管理器 中选择安装程序并从 生成 菜单单击 生成 gameInstaller 来生成安装程序 10 找到上一节创建的 setup exe 和 gameInstaller msi 程序 在计算机上双击任一文件 安装应用程序 创建命令行应用程序 C 我们已经学习了 Visual Studio IDE 现在可以开始使用 Visual C 编写程序了 我们将学习 创建的第一个应用程序类型是命令行应用程序 命令行应用程序不包含图形用户界面 GUI 通常 命令行应用程序从控制台读取输入 并将输出写入该控制台 而不是写入图形窗口 在本节中 您将学习如何创建 C 和 C 命令行应用程序 还将学习如何创建不使用 Microsoft 扩展的标准 C 和 C 程序 如果您希望使用 Visual C 创建在其他操作系统上 使用的应用程序 这将很有用 系统必备 这些主题假定您具备 C 语言的基础知识 本节内容 演练 创建标准 C 程序 C 演练 在命令行上编译本机 C 程序 C 演练 在 Visual Studio 中编译面向 CLR 的 C 程序 C 演练 编译 C 程序 演练 创建标准 C 程序 C 在 Visual Studio 集成开发环境中使用 Visual IDE C 创建标准 C 程序 通过采用此演 练中的步骤 您可以创建一个项目 向该项目添加一个新文件 修改该文件以添加 C 代码 然后使用 Visual Studio 编译并运行程序 您可以键入自己的 C 程序 或者使用示例程序之一 此演练中的示例程序是一个控制台应 用程序 此应用程序使用标准模板库 STL 中的 set 容器 Visual C 使用 2003 C 标准进行编译 但有以下几点主要例外之处 两阶段名称查找 异常规范和导出 此外 Visual C 支持若干 C 0 x 功能 例如 lambda 自动 static assert rvalue 引用和 extern 模板 Note 如果要求符合标准 请使用 Za 编译器选项来禁用对该标准的 Microsoft 扩展 有关更多信 息 请参见 Za Ze 禁用语言扩展 系统必备 若要完成本演练 您必须了解 C 语言的基础知识 创建项目并添加源文件 1 通过以下方式创建一个项目 指向 文件 菜单上的 新建 然后单击 项目 2 在 Visual C 项目类型窗格中 单击 Win32 然后单击 Win32 控制台应用程序 3 键入项目名称 默认情况下 包含项目的解决方案与项目同名 但您可以键入其他名称 您也可以为 项目键入其他位置 单击 确定 创建项目 4 在 Win32 应用程序向导 中 单击 下一步 选择 空项目 然后单击 完成 5 如果未显示 解决方案资源管理器 请在 视图 菜单上 单击 解决方案资源管理器 6 将一个新源文件添加到项目 如下所示 a 在 解决方案资源管理器 中 右击 源文件 文件夹 指向 添加 然后单击 新建项 b 在 代码 节点中单击 C 文件 cpp 为文件键入名称 然后单击 添加 该 cpp 文件即显示在 解决方案资源管理器 中的 源文件 文件夹中 并且文件将在 Visual Studio 编辑器中打开 7 在编辑器内的文件中 键入使用标准 C 库的有效 C 程序 或者复制示例程序 之一并将其粘贴在文件中 例如 您可以使用 设置 查找 STL 示例 示例程序 该程序是帮助中附带的标准模板 库示例之一 如果使用该示例程序 请注意 using namespace std 指令 此指令使程序能够 使用 cout 和 endl 而无需完全限定名 std cout 和 std endl 8 保存该文件 9 在 生成 菜单上 单击 生成解决方案 输出 窗口显示有关编译过程的信息 例如 生成日志的位置 以及指示生成状态的 消息 10 在 调试 菜单上 单击 开始执行 不调试 如果使用了示例程序 将显示一个命令窗口 其中显示是否在集合中找到了特定的整 数 演练 在命令行上编译本机 C 程序 C Visual C 包括一个 C 编译器 可用来创建从基本 Visual C 程序到 Windows 窗体应 用程序和组件的各种程序 通过按此演练的过程进行操作 您可以通过使用文本编辑器创建基本的 Visual C 程序 然 后在命令行上对其进行编译 也可以编译使用 Visual Studio 集成开发环境 IDE 创建的 Visual C 程序 有关更多信息 请参见 演练 在 Visual Studio 中编译面向 CLR 的 C 程序 C 您可以使用自己的 Visual C 程序 而不是键入下面步骤中所示的程序 也可以使用其他帮 助主题中的任何 Visual C 代码示例程序 系统必备 若要完成本演练 您必须了解 C 语言的基础知识 创建 Visual C 源文件并在命令行上对其进行编译 1 打开 Visual Studio 2010 命令提示 窗口 方法是单击 开始 指向 所有程序 Microsoft Visual Studio 2010 Visual Studio 工具 然后单击 Visual Studio 2010 命令提示 可能需要管理员凭据才能成功编译此演练中的代码 具体情况视计算机的操作系统和 配置而定 若要以管理员身份运行 Visual Studio 2010 命令提示 窗口 请右击 Visual Studio 2010 命令提示 然后单击 以管理员身份运行 2 在命令提示符下 键入 notepad basic cpp 并按 Enter 在系统提示是否创建文件时 单击 是 3 在记事本中 键入下列各行 4 include 5 6 int main 7 8 std cout This is a native C program std endl 9 return 0 10 11 在 文件 菜单上 单击 保存 这样就创建了一个 Visual C 源文件 12 关闭记事本 13 在命令提示符下 键入 cl EHsc basic cpp 并按 Enter EHsc 命令行选项指示编译 器启用 C 异常处理 有关更多信息 请参见 EH 异常处理模型 cl exe 编译器将生成一个名为 basic exe 的可执行程序 您可以在编译器显示的多行输出信息中看到可执行程序的名称 14 若要查看目录中具有名称 basic 以及任何文件扩展名的文件的列表 请键入 dir basic 并按 Enter obj 文件是一个中间格式文件 可以安全地忽略它 15 若要运行 basic exe 程序 请键入 basic 并按 Enter 该程序显示以下文本并退出 This is a native C program 16 若要关闭 Visual Studio 2010 命令提示 窗口 请键入 exit 并按 Enter 编译使用 NET 类的 Visual C 程序 下面的步骤演示如何编译使用 NET Framework 类的 Visual C 程序 您必须使用 clr 公共语言运行时编译 编译器选项 因为此程序使用 NET 类并且必须包括 必要的 NET 库 Visual C 编译器生成的 exe 文件包含 MSIL 代码 而不是可由计算机执 行的指令 按照本过程中的步骤编译帮助主题中的任何 Visual C 示例程序 在命令行上编译 Visual C NET 控制台应用程序 1 打开 Visual Studio 2010 命令提示 窗口 方法是单击 开始 指向 所有程序 Microsoft Visual Studio 2010 Visual Studio 工具 然后单击 Visual Studio 2010 命令提示 可能需要管理员凭据才能成功编译此演练中的代码 具体情况视计算机的操作系统和 配置而定 若要以管理员身份运行 Visual Studio 2010 命令提示 窗口 请右击 Visual Studio 2010 命令提示 然后单击 以管理员身份运行 2 在命令提示符下 键入 notepad basicclr cpp 并按 Enter 在系统提示是否创建文件时 单击 是 3 在记事本中 键入下列各行 4 int main 5 6 System Console WriteLine This is a Visual C pro gram 7 8 在 文件 菜单上 单击 保存 您已经创建了一个使用 NET 类 Console 的 Visual C 源文件 该文件位于 System 命名空间 9 关闭记事本 10 在命令提示符下 键入 cl clr basicclr cpp 并按 Enter cl exe 编译器将生成一个名 为 basicclr exe 的可执行程序 11 若要查看目录中具有名称 basicclr 以及任何文件扩展名的文件的列表 请键入 dir basicclr 并按 Enter obj 文件是一个中间格式文件 可以安全地忽略它 manifest 文件是包含有关程序集的信息的 XML 文件 程序集是 NET 部署单元 例如 exe 程序或 dll 组件或库 12 若要运行 basicclr exe 程序 请键入 basicclr 并按 Enter 该程序显示以下文本并退出 This is a Visual C program 13 若要关闭 Visual Studio 2010 命令提示 窗口 请键入 exit 并按 Enter 演练 在 Visual Studio 中编译面向 CLR 的 C 程序 C 通过使用 Visual Studio 开发环境 您可以创建使用 NET 类的 Visual C 程序 并对它们 进行编译 在本过程中 您可以键入自己的 Visual C 程序 也可以使用示例程序之一 本过程中使用 的示例程序创建一个名为 textfile txt 的文本文件 并将其保存到项目目录中 系统必备 这些主题假定您具备 C 语言的基础知识 在 Visual Studio 中创建新项目并添加新的源文件 1 创建新项目 在 文件 菜单上 指向 新建 然后单击 项目 2 在 Visual C 项目类型 中单击 CLR 然后单击 CLR 空项目 3 键入项目名称 默认情况下 包含项目的解决方案与新项目同名 当然 您也可以键入其他名称 如 果愿意 您可以为项目输入一个不同的位置 单击 确定 创建新项目 4 如果 解决方案资源管理器 不可见 请单击 视图 菜单上的 解决方案资源管理器 5 向该项目添加新的源文件 在解决方案资源管理器中右击 源文件 文件夹 指向 添加 并单击 新建项 单击 C 文件 cpp 键入一个文件名 然后单击 添加 该 cpp 文件即显示在 解决方案资源管理器 中的 源文件 文件夹中 并且 在键入要 包含在该文件中的代码的位置 出现一个选项卡式窗口 6 在 Visual Studio 中 在新创建的选项卡中单击并键入有效的 Visual C 程序 或者 复制并粘贴示例程序之一 例如 您可以使用 How to Write a Text File 示例程序 位于 编程指南 中的 文件处理 和 I O 节点 如果要使用示例程序 请注意在创建 NET 对象时 您可以使用 gcnew 关键字 而非 new 且 gcnew 返回一个句柄 而不是指针 StreamWriter sw gcnew StreamWriter fileName 有关新 Visual C 语法的更多信息 请参见 运行时平台的组件扩展 7 在 生成 菜单上 单击 生成解决方案 输出 窗口显示有关编译过程的信息 如生成日志的位置 以及指示生成状态的消息 如果进行了更改 并在未执行生成的情况下运行该程序 则对话框可能指示该项目已 过期 如果要让 Visual Studio 始终使用文件的当前版本 并且在每次生成应用程序 时不发出提示 请在单击 确定 之前选中此对话框上的复选框 8 在 调试 菜单上 单击 开始执行 不调试 9 如果您使用的是示例程序 则在运行程序时将显示一个命令窗口 指示已创建了该文 本文件 按任意键 关闭该命令窗口 textfile txt 文本文件现在位于您的项目目录中 您可以使用记事本打开此文件 Note 选择空 CLR 项目模板会自动设置 clr 编译器选项 若要验证这一点 请在 解决方案 资源管理器 中右击该项目 再单击 属性 然后选中 配置属性 的 常规 节点中 的 公共语言运行时支持 选项 演练 编译 C 程序 Visual Studio 包括可用来创建从基本基本的 C 程序到 windows API 应用程序的 c 编译器 此演练演示如何使用文本编辑器创建一个基本的 C 程序 然后在命令行上对其进行编译 您可以使用自己的 C 程序 而不是键入此演练中所示的示例程序 也可以使用帮助主题中包 含的任何 C 代码示例程序 默认情况下 Visual C 编译器将以 c 结尾的所有文件视为 C 源代码 将以 cpp 结尾的所 有文件视为 C 源代码 若要强制编译器将所有文件视为 C 而不管文件扩展名如何 请 使用 Tc 编译器选项 系统必备 您必须了解 C 语言的基础知识 创建 C 源文件并在命令行上对其进行编译 1 单击 开始 指向 所有程序 Microsoft Visual Studio 2010 和 Visual Studio 工 具 然后单击 Visual Studio 2010 命令提示 根据计算机上的 Windows 版本和系统安全配置 可能必须右击 Visual Studio 2008 命令提示 然后单击 以管理员身份运行 才能成功运行按下列步骤创建的应用程序 Note Visual Studio 2010 命令提示 会自动设置 C 编译器和所需的任何库的正确路径 应使用它而不是使用普通的 命令提示符 窗口 有关更多信息 请参见为命令行生成 设置路径和环境变量 2 在命令提示符下 键入 notepad simple c 并按 Enter 在系统提示是否创建文件时 单击 是 3 在记事本中 键入下列各行 4 include 5 6 int main 7 8 printf This is a native C program n 9 return 0 10 11 在 文件 菜单上 单击 保存 以创建 C 源文件 12 关闭记事本 13 在命令提示符下 键入 cl simple c 并按 Enter cl exe 编译器将生成一个可执行程序 Simple exe 您可以在编译器显示的多行输出信息中看到可执行程序的名称 Microsoft R 32 bit C C Optimizing Compiler Version 16 00 for 80 x86 Copyright C Microsoft Corporation All rights reserved simple c Microsoft R Incremental Linker Version 10 00 Copyright C Microsoft Corporation All rights reserved out simple exe simple obj 14 若要查看 simple 目录中的所有文件的列表 请键入 dir simple 并按 Enter obj 文件是一个中间格式文件 可以安全地忽略它 15 若要运行 Simple exe 请键入 simple 并按 Enter 该程序显示以下文本并退出 This is a native C program 16 若要关闭命令提示符窗口 请键入 exit 并按 Enter 创建 Windows 应用程序 C 现在我们学习了 Visual Studio IDE 和命令行应用程序 下面将学习如何创建 Windows 应用 程序 使用 Visual C 可以通过使用多种不同的技术来创建 Windows 应用程序 如 Windows API 也称为 Win32 API 和 NET Framework 在本节中 我们将通过使用 Win32 API 和 NET Framework 创建两个简单的 Windows 应用 程序 我们还将通过使用 NET Framework 创建 Windows 窗体控件 最后将通过使用 DirectX 创建一个简单的游戏 系统必备 这些主题假定您具备 C 语言的基础知识 本节内容 创建基于 Win32 的应用程序 C 通过使用 NET Framework 创建 Windows 窗体应用程序 C 创建 Windows 窗体控件 C 创建的一个游戏资源使用 DirectX c 创建基于 Win32 的应用程序 C 本演练演示如何创建基于 Win32 的简单基本应用程序 该应用程序在窗口中显示 Hello World 您可以使用在此演练中开发的代码作为创建其他基于 Win32 的应用程序的模式 Win32 API 也称为 Windows API 是用于创建 Windows 应用程序的基于 C 的框架 有关 Win32 API 的更多信息 请参见 Windows API 重要事项 为了可以更加清楚地说明本文档内各步骤中的特定代码段 我们可能会省略一个有效应用程序 所必需的某些代码语句 例如 include 指令和全局变量声明 本文档末尾的示例一节显示了 完整代码 系统必备 若要完成本演练 您必须了解 C 语言的基础知识 有关视频演示 请参见 Visual Studio 2008 文档中的 Video How to Creating Win32 Applications C 视频帮助 创建 Win32 应用程序 C 创建基于 Win32 的项目 1 在 文件 菜单上 单击 新建 然后单击 项目 2 在 新建项目 对话框的左侧窗格中 单击 已安装的模板 单击 Visual C 然后 选择 Win32 在中间窗格中 选择 Win32 项目 在 名称 框中 键入项目名称 例如 win32app 单击 确定 3 在 Win32 应用程序向导 的 欢迎 页上 单击 下一步 4 在 应用程序设置 页上的在 应用程序类型 下 选择 Windows 应用程序 在 附加 选项 下 选择 空项目 单击 完成 创建项目 5 在 解决方案资源管理器 中 右击 Win32app 项目 单击 添加 然后单击 新建项 在 添加新项 对话框中选择 C 文件 cpp 在 名称 框中 键入文件名称 例如 GT HelloWorldWin32 cpp 单击 添加 启动基于 Win32 的应用程序 1 就像每个 C 应用程序和 C 应用程序都以 main 函数作为起点那样 每个基于 Win32 的应用程序同样必须要有 WinMain 函数 WinMain 具有以下语法 2 int WINAPI WinMain HINSTANCE hInstance 3 HINSTANCE hPrevInstance 4 LPSTR lpCmdLine 5 int nCmdShow 有关此函数的参数和返回值的信息 请参见 WinMain 函数 6 由于应用程序代码必须使用现有定义 因此应将 include 语句添加到文件中 7 include 8 include 9 include 10 include 11 除 WinMain 函数外 每个基于 Win32 的应用程序还必须具有一个窗口过程函数 此 函数通常名为 WndProc WndProc 具有以下语法 12 LRESULT CALLBACK WndProc HWND UINT WPARAM LPARAM 此函数处理应用程序从操作系统接收的许多消息 例如 在具有对话框 该对话框中 有一个 确定 按钮 的应用程序中 如果用户单击该按钮 操作系统就会向该应用程 序发送一条消息 告知已单击该按钮 WndProc 负责响应该事件 在此示例中 相 应的响应可能是关闭该对话框 有关更多信息 请参见窗口过程 向 WinMain 函数添加功能 1 在 WinMain 函数中 创建 WNDCLASSEX 类型的窗口类结构 此结构包含有关该窗口 的信息 例如 应用程序图标 窗口的背景色 要在标题栏中显示的名称 窗口过程 函数的名称等等 下面的示例演示一个典型 WNDCLASSEX 结构 2 WNDCLASSEX wcex 3 4 wcex cbSize sizeof WNDCLASSEX 5 wcex style CS HREDRAW CS VREDRAW 6 wcex lpfnWndProc WndProc 7 wcex cbClsExtra 0 8 wcex cbWndExtra 0 9 wcex hInstance hInstance 10 wcex hIcon LoadIcon hInstance MAKEINTRESO URCE IDI APPLICATION 11 wcex hCursor LoadCursor NULL IDC ARROW 12 wcex hbrBackground HBRUSH COLOR WINDOW 1 13 wcex lpszMenuName NULL 14 wcex lpszClassName szWindowClass 15 wcex hIconSm LoadIcon wcex hInstance MAKEIN TRESOURCE IDI APPLICATION 有关此结构的各字段的信息 请参见 WNDCLASSEX 16 现在您已经创建一个窗口类 接下来必须将其注册 使用 RegisterClassEx 函数 并将 窗口类结构作为参数进行传递 17 if RegisterClassEx 23 24 return 1 25 26 现在可以创建一个窗口 使用 CreateWindow 函数 27 static TCHAR szWindowClass T win32app 28 static TCHAR szTitle T Win32 Guided Tour Applicati on 29 30 The parameters to CreateWindow explained 31 szWindowClass the name of the application 32 szTitle the text that appears in the title bar 33 WS OVERLAPPEDWINDOW the type of window to create 34 CW USEDEFAULT CW USEDEFAULT initial position x y 35 500 100 initial size width length 36 NULL the parent of this window 37 NULL this application does not have a menu bar 38 hInstance the first parameter from WinMain 39 NULL not used in this application 40 HWND hWnd CreateWindow 41 szWindowClass 42 szTitle 43 WS OVERLAPPEDWINDOW 44 CW USEDEFAULT CW USEDEFAULT 45 500 100 46 NULL 47 NULL 48 hInstance 49 NULL 50 51 if hWnd 52 53 MessageBox NULL 54 T Call to CreateWindow failed 55 T Win32 Guided Tour 56 NULL 57 58 return 1 59 此函数返回 HWND 它是某个窗口的句柄 有关更多信息 请参见 Windows 数据类 型 60 现在 使用下列代码来显示窗口 61 The parameters to ShowWindow explained 62 hWnd the value returned from CreateWindow 63 nCmdShow the fourth parameter from WinMain 64 ShowWindow hWnd 65 nCmdShow 66 UpdateWindow hWnd 此时 所显示的窗口不会有太多内容 因为您尚未实现 WndProc 函数 67 现在添加一个消息循环以侦听操作系统发送的消息 如果应用程序收到一条消息 则 此循环会将该消息调度至 WndProc 函数以接受处理 消息循环类似于下列代码 68 MSG msg 69 while GetMessage 72 DispatchMessage 73 74 75 return int msg wParam 有关消息循环中各结构和函数的更多信息 请参见 MSG GetMessage TranslateMessage 和 DispatchMessage 此时 WinMain 函数应与下列代码类似 int WINAPI WinMain HINSTANCE hInstance HINSTANCE hPrevInstance LPSTR lpCmdLine int nCmdShow WNDCLASSEX wcex wcex cbSize sizeof WNDCLASSEX wcex style CS HREDRAW CS VREDRAW wcex lpfnWndProc WndProc wcex cbClsExtra 0 wcex cbWndExtra 0 wcex hInstance hInstance wcex hIcon LoadIcon hInstance MAKEINTRESOU RCE IDI APPLICATION wcex hCursor LoadCursor NULL IDC ARROW wcex hbrBackground HBRUSH COLOR WINDOW 1 wcex lpszMenuName NULL wcex lpszClassName szWindowClass wcex hIconSm LoadIcon wcex hInstance MAKEINT RESOURCE IDI APPLICATION if RegisterClassEx return 1 hInst hInstance Store instance handle in our glo bal variable The parameters to CreateWindow explained szWindowClass the name of the application szTitle the text that appears in the title bar WS OVERLAPPEDWINDOW the type of window to create CW USEDEFAULT CW USEDEFAULT initial position x y 500 100 initial size width length NULL the parent of this window NULL this application dows not have a menu bar hInstance the first parameter from WinMain NULL not used in this application HWND hWnd CreateWindow szWindowClass szTitle WS OVERLAPPEDWINDOW CW USEDEFAULT CW USEDEFAULT 500 100 NULL NULL hInstance NULL if hWnd MessageBox NULL T Call to CreateWindow failed T Win32 Guided Tour NULL return 1 The parameters to ShowWindow explained hWnd the value returned from CreateWindow nCmdShow the fourth parameter from WinMain ShowWindow hWnd nCmdShow UpdateWindow hWnd Main message loop MSG msg while GetMessage DispatchMessage return int msg wParam 向 WndProc 函数添加功能 1 若要启用 WndProc 函数来处理应用程序所收到的消息 请实现 switch 语句 要处理的第一条消息是 WM PAINT 消息 如果必须更新所显示的应用程序窗口的一部 分 该应用程序就会收到此消息 首次显示该窗口时 必须将其全部更新 若要处理 WM PAINT 消息 请首先调用 BeginPaint 然后处理用于布局该窗口中的文 本 按钮和其他控件的所有逻辑 再调用 EndPaint 对于此应用程序 开始调用和结 束调用之间的逻辑会在窗口中显示字符串 Hello World 在下列代码中 请注意 TextOut 函数用于显示该字符串 PAINTSTRUCT ps HDC hdc TCHAR greeting T Hello World switch message case WM PAINT hdc BeginPaint hWnd Here your application is laid out For this introduction we just print out Hello Wo rld in the top left corner TextOut hdc 5 5 greeting tcslen greeting End application specific layout section EndPaint hWnd break 2 应用程序通常会处理许多其他消息 例如 WM CREATE 和 WM DESTROY 下列代码 展示了一个基本但完整的 WndProc 函数 3 LRESULT CALLBACK WndProc HWND hWnd UINT message WPARAM wParam LPARAM lParam 4 5 PAINTSTRUCT ps 6 HDC hdc 7 TCHAR greeting T Hello World 8 9 switch message 10 11 case WM PAINT 12 hdc BeginPaint hW
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > 解决方案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!