2 qq 34170352 qq_34170352 于 2016.09.14 20:15 提问

按照Visual C++ 2008入门经典书上写的这段代码是不是有问题啊求解答

图片说明

还有下面使用VS2015编译为什么不行。。。。
图片说明

1个回答

zqbnqsdsmd
zqbnqsdsmd   2016.09.28 01:41
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
Visual C++ 2008入门经典中文版pdf
下载地址:网盘下载  本书系编程语言先驱者Ivor Horton的经典之作,是C++编程方面最畅销的图书品种之一,不仅涵盖了Visual C++ 2008编程知识,还全面介绍了标准C++语言和C++/CLI。本书延续了Ivor Horton讲解编程语言的独特方法,从中读者可以学习Visual C++ 2008的基础知识,了解如何使用MFC进行本地ISO/ANSI C++ Windows应用程序开发
正宗《Visual C++2008入门经典》中文 高清完整版PDF part5(共6部分)
一直在找这本Ivor Horton(霍顿)写的《Visual C++2008入门经典》中文版的书,据说非常经典。今天有幸终于找到了,赶紧上传和大家一起分享。请下载过的朋友支持鉴定一下。 注意:网上那些所谓的《Visual C++2008入门经典》如果附件大小小于60M的,如果不是英文版那肯定是假的。 文件大小:136M 页数:1142页 共6个部分 如果喜欢,请购买正版! 《Visual C++2008入门经典》内容提要 内容简介: 本书系编程语言先驱者Ivor Horton的经典之作,是C++编程方面最畅销的图书品种之一,不仅涵盖了Visual C++ 2008编程知识,还全面介绍了标准C++语言和C++/CLI。本书延续了Ivor Horton讲解编程语言的独特方法,从中读者可以学习Visual C++ 2008的基础知识,了解如何使用MFC进行本地ISO/ANSI C++ Windows应用程序开发以及如何使用Windows Forms进行C++/CLI Windows应用程序开发,并全面掌握在MFC和Windows Forms中访问数据源的技术。此外,本书各章后面的习题将有助于读者温故而知新,并尽快成为C++高效程序员。 《Visual C++2008入门经典》图书目录 第1章 使用Visual C++ 2008编程 第2章 数据、变量和计算 第3章 判断和循环 第4章 数组、字符串和指针 第5章 程序结构(1) 第6章 程序结构(2) 第7章 自定义数据类型 第8章 深入理解类 第9章 类继承和虚函数 第10章 标准模板库 第11章 调试技术 第12章 Windows编程的概念 第13章 使用MFC编写Windows程序 第14章 处理菜单和工具栏 第15章 在窗口中绘图 第16章 创建文档和改进视图 第17章 使用对话框和控件 第18章 存储和打印文档 第19章 编写自己的DLL 第20章 连接到数据源 第21章 更新数据源 第22章 Windows Forms应用程序进阶 第23章 在Windows Forms 应用程序中访问数据源 附录A C++关键字 附录B ASCII码 附录C Windows消息类型
算法竞赛入门经典(第二版)习题解答参考(一)
习题1-1 平均数(average)  #include #include using namespace std; int main() { int a,b,c; scanf("%d %d %d",&a,&b,&c); printf("%.3lf",( a+b+c )/3.0 ); } 习题1-2 温度(temperature) #inclu
Visual C++2013入门经典源码及习题答案
该资源中包含了Visual C++2013入门经典中所有章节中的源代码,以及课后习题答案。
Visual.Basic.2008入门经典(第5版)pdf
下载地址: 网盘下载   本书全面介绍了Visual Basic 2008的各种基础知识和,NET Framework 3.5的最新特性,适合任何一个想学习Visual Basic 2008编程知识的初学者。该书由初版到现在的2008版已经过4次修订,内容体系十分完善,技术讲解也十分到位,示例、习题、代码非常精炼,是一本不可多得的权威著作,能够帮助您更加轻松、快捷地掌握Visual Basic 2
Visual C++ 2010入门经典.pdf(带书签版)
英文名《Ivor Horton's Beginning Visual C++ 2010》,作者:【美】Ivor Horton,本书是为英文版,PDF 格式,大小 47Mb。本资源 pdf 带有书签,方便读者阅读。 Ivor Horton 写的 《Visual C++ 2008入门经典》.pdf 中文版下载地址:http://download.csdn.net/source/3378503。 内容简介: The leading author of programming tutorials for beginners introduces you to Visual C++ 2010 Ivor Horton is the preeminent author of introductory programming language tutorials; previous editions of his Beginning Visual C++ have sold nearly 100,000 copies. This book is a comprehensive introduction to both the Standard C++ language and to Visual C++ 2010; no previous programming experience is required. All aspects of the 2010 release are covered, including changes to the language and the C++ standard.. Microsoft Visual C++ is one of the most popular C++ development environments and compilers, used by hundreds of thousands of developers Ivor Horton's approach to programming tutorials has achieved a huge following; this book gives beginning programmers a comprehensive introduction to both Standard C++ and Visual C++ 2010 Covers all the language changes in Visual C++ 2010, library additions, new MFC features, changes in the Visual Studio development environment, and more Also includes a brief introduction to programming for multicore processors in native C++ and C++/CLR processors Nearly 100,000 copies of this book have been sold in previous editions Beginners seeking a complete education in Visual C++ will find everything they need in Ivor Horton's Beginning Visual C++ 2010.
C#入门经典第五版书中的全部源代码
C#入门经典(第五版),包含了书中的全部源代码
visual Basic 2008入门经典
Visual Basic 是一种非常流行的编程语言visual Basic 2008 是徽软公司推出的Visual Basic 新版本,其功能比以前任何版本都强大,可与C++语言相媲美.本书通过引导读者创建一个图片查看程序,全面阐述了使用Visual Basic 2008 创建应用程序所需的各种基本技巧. 全书分5 个部分,共24章在.第一部分介绍visual Basic 2008速成版开发环境,引导读者熟悉使用该IDE: 第二部分探时如何创建应用程序界面,包吉窗体和各种控件的用法 第三部分介绍了辑程技术. 作者J.me$ Foul! 人民邮电出版社 原价:¥39
Visual C++ 2008入门经典--详细书签版
CruiseYoung提供的带有详细书签的电子书籍目录 http://blog.csdn.net/fksec/article/details/7888251 特别说明:该版本是目前网络上最全的版本:修正了268-367页缺页的问题。 Visual C++ 2008入门经典 基本信息 原书名: Ivor Horton's Beginning Visual C++ 2008 原出版社: Wrox 作者: (美)Ivor Horton 译者: 姜玲玲 张云 出版社:清华大学出版社 ISBN:9787302194637 上架时间:2009-2-25 出版日期:2009 年2月 开本:16开 页码:1124 版次:1-1 编辑推荐   1.本书是C++编程方面最畅销的图书品种之一。.    2.本书是编程语言先驱者Ivor Horton的又一经典之作。    3.本书早期版本曾影响着无数程序员。..    4.本书适用于想学习C++程序的初学者,学习本书内容无需任何编程基础。    5.本书不仅涵盖了Visual C++ 2008编程知识,还全面介绍了标准C++语言和C++/CLI。 内容简介   本书系编程语言先驱者ivor horton的经典之作,是c++编程方面最畅销的图书品种之一,不仅涵盖了visual c++ 2008编程知识,还全面介绍了标准c++语言和c++/cli。本书延续了ivor horton讲解编程语言的独特方法,从中读者可以学习visual c++ 2008的基础知识,了解如何使用mfc进行本地iso/ansi c++ windows应用程序开发以及如何使用windows forms进行c++/cli windows应用程序开发,并全面掌握在mfc和windows forms中访问数据源的技术。此外,本书各章后面的习题将有助于读者温故而知新,并尽快成为c++高效程序员。.    本书学习目标    ◆ 使用标准模板库(stl)来组织和操作本地c++程序中的数据    ◆ c++程序调试技术..    ◆ 构造microsoft windows应用程序的技术以及每个应用程序的基本元素    ◆ 创建和使用常用控件构建应用程序的图形用户界面    ◆ 使用mfc开发库    ◆ 访问数据源的不同控件、控件的工作方式以及定制控件的方法    本书读者对象    本书适用于想学习如何为windows操作系统编写c++程序的初学者,学习本书内容无需任何编程基础。...    本书源代码及习题答案下载    http://www.wrox.com    http://www.tupwk.com.cn/downpage 作译者   Ivor Horton是世界著名的计算机图书作家,主要从事与编程相关的咨询及撰写工作,曾帮助无数程序员步入编程的殿堂。他曾在IBM工作多年,能使用多种语言进行编程(在多种机器上使用汇编语言和高级语言),设计和实现了实时闭环工业控制系统。Horton拥有丰富的教学经验(教学内容包括C、C++、Fortran、PL/1、APL等),同时还是机械、加工和电子CAD系统、机械CAM系统和DNC/CNC系统方面的专家。IvorHorton还著有关于C、C++和Java的多部入门级好书,如《C语言入门经典(第4版)》和《C++入门经典(第3版)》。 目录 封面 -19 前言 -18 目录 -10 第1章 使用Visual C++ 2008编程 1 1.1 .NET Framework 1 1.2 CLR 2 1.3 编写C++应用程序 3 1.4 学习Windows编程 4 1.4.1 学习C++ 4 1.4.2 C++标准 5 1.4.3 属性 5 1.4.4 控制台应用程序 6 1.4.5 Windows编程概念 6 1.5 集成开发环境简介 8 1.6 使用IDE 9 1.6.1 工具栏选项 10 1.6.2 可停靠的工具栏 10 1.6.3 文档 11 1.6.4 项目和解决方案 11 1.6.5 设置Visual C++ 2008的选项 22 1.6.6 创建和执行Windows应用程序 23 1.6.7 创建Windows Forms应用程序 25 1.7 小结 27 第2章 数据、变量和计算 28 2.1 C++程序结构 28 2.1.1 程序注释 33 2.1.2 #include指令—— 头文件 34 2.1.3 命名空间和using声明 34 2.1.4 main()函数 35 2.1.5 程序语句 35 2.1.6 空白 37 2.1.7 语句块 37 2.1.8 自动生成的控制台程序 38 2.2 定义变量 39 2.2.1 命名变量 39 2.2.2 声明变量 40 2.2.3 变量的初值 41 2.3 基本数据类型 41 2.3.1 整型变量 42 2.3.2 字符数据类型 43 2.3.3 整型修饰符 44 2.3.4 布尔类型 44 2.3.5 浮点类型 45 2.3.6 字面值 46 2.3.7 定义数据类型的同义词 47 2.3.8 具有特定值集的变量 47 2.4 基本的输入/输出操作 48 2.4.1 从键盘输入 49 2.4.2 到命令行的输出 49 2.4.3 格式化输出 50 2.4.4 转义序列 51 2.5 C++中的计算 53 2.5.1 赋值语句 53 2.5.2 算术运算 53 2.5.3 计算余数 58 2.5.4 修改变量 58 2.5.5 增量和减量运算符 59 2.5.6 计算的顺序 61 2.6 变量类型和类型强制转换 62 2.6.1 对操作数进行类型强制转换的规则 63 2.6.2 赋值语句中的类型强制转换 64 2.6.3 显式类型强制转换 64 2.6.4 老式的类型强制转换 65 2.6.5 按位运算符 65 2.7 了解存储时间和作用域 71 2.7.1 自动变量 72 2.7.2 决定变量声明的位置 74 2.7.3 全局变量 74 2.7.4 静态变量 77 2.8 命名空间 78 2.8.1 声明命名空间 79 2.8.2 多个命名空间 80 2.9 C++/CLI编程 81 2.9.1 C++/CLI特有的基本数据类型 81 2.9.2 命令行上的C++/CLI输出 85 2.9.3 C++/CLI特有的功能——格式化输出 86 2.9.4 C++/CLI的键盘输入 88 2.9.5 使用safe_cast 90 2.9.6 C++/CLI枚举 90 2.10 小结 94 2.11 练习题 95 第3章 判断和循环 97 3.1 比较数据值 97 3.1.1 if语句 98 3.1.2 嵌套的if语句 99 3.1.3 扩展的if语句 101 3.1.4 嵌套的if-else语句 103 3.1.5 逻辑运算符和表达式 105 3.1.6 条件运算符 108 3.1.7 switch语句 109 3.1.8 无条件转移 111 3.2 重复执行语句块 112 3.2.1 循环的概念 112 3.2.2 for循环的变体 115 3.2.3 while循环 122 3.2.4 do-while循环 124 3.2.5 嵌套的循环 124 3.3 C++/CLI编程 127 3.4 小结 133 3.5 练习 133 第4章 数组、字符串和指针 134 4.1 处理多个相同类型的数据值 134 4.1.1 数组 135 4.1.2 声明数组 135 4.1.3 初始化数组 138 4.1.4 字符数组和字符串处理 139 4.1.5 多维数组 142 4.2 间接数据存取 145 4.2.1 指针的概念 145 4.2.2 声明指针 146 4.2.3 使用指针 147 4.2.4 初始化指针 149 4.2.5 sizeof运算符 154 4.2.6 常量指针和指向常量的指针 155 4.2.7 指针和数组 157 4.3 动态内存分配 163 4.3.1 堆的别名—— 自由存储器 164 4.3.2 new和delete运算符 164 4.3.3 为数组动态分配内存 165 4.3.4 多维数组的动态分配 167 4.4 使用引用 168 4.4.1 引用的概念 168 4.4.2 声明并初始化引用 168 4.5 字符串的本地C++库函数 169 4.5.1 查找以空字符结尾的字符串的长度 169 4.5.2 连接以空字符结尾的字符串 170 4.5.3 复制以空字符结尾的字符串 171 4.5.4 比较以空字符结尾的字符串 172 4.5.5 搜索以空字符结尾的字符串 173 4.6 C++/CLI编程 175 4.6.1 跟踪句柄 175 4.6.2 CLR数组 177 4.6.3 字符串 191 4.6.4 跟踪引用 199 4.6.5 内部指针 200 4.7 小结 202 4.8 练习 203 第5章 程序结构(1) 205 5.1 理解函数 205 5.1.1 需要函数的原因 206 5.1.2 函数的结构 206 5.1.3 使用函数 208 5.2 给函数传递实参 212 5.2.1 按值传递机制 212 5.2.2 给函数传递指针实参 214 5.2.3 给函数传递数组 215 5.2.4 给函数传递引用实参 219 5.2.5 使用const修饰符 221 5.2.6 main()函数的实参 222 5.2.7 接受数量不定的函数实参 224 5.3 从函数返回值 226 5.3.1 返回指针 226 5.3.2 返回引用 229 5.3.3 函数中的静态变量 231 5.4 递归函数调用 233 5.5 C++/CLI编程 235 5.5.1 接受数量可变实参的函数 236 5.5.2 main( )的实参 237 5.6 小结 238 5.7 练习 238 第6章 程序结构(2) 240 6.1 函数指针 240 6.1.1 声明函数指针 241 6.1.2 函数指针作为实参 243 6.1.3 函数指针的数组 245 6.2 初始化函数形参 245 6.3 异常 247 6.3.1 抛出异常 248 6.3.2 捕获异常 249 6.3.3 MFC中的异常处理 250 6.4 处理内存分配错误 251 6.5 函数重载 252 6.5.1 函数重载的概念 253 6.5.2 何时重载函数 255 6.6 函数模板 255 6.7 使用函数的示例 257 6.7.1 实现计算器 258 6.7.2 从字符串中删除空格 260 6.7.3 计算表达式的值 261 6.7.4 获得项值 263 6.7.5 分析数 264 6.7.6 整合程序 266 6.7.7 扩展程序 268 6.7.8 提取子字符串 269 6.7.9 运行修改过的程序 271 6.8 C++/CLI编程 271 6.8.1 理解泛型函数 272 6.8.2 CLR版本的计算器程序 277 6.9 小结 283 6.10 练习 283 第7章 自定义数据类型 285 7.1 C++中的结构 285 7.1.1 结构的概念 286 7.1.2 定义结构 286 7.1.3 初始化结构 286 7.1.4 访问结构的成员 287 7.1.5 伴随结构的智能帮助 290 7.1.6 RECT结构 291 7.1.7 使用指针处理结构 291 7.2 数据类型、对象、类和实例 293 7.2.1 类的起源 294 7.2.2 类的操作 295 7.2.3 术语 295 7.3 理解类 295 7.3.1 定义类 296 7.3.2 声明类的对象 296 7.3.3 访问类的数据成员 297 7.3.4 类的成员函数 299 7.3.5 成员函数定义的位置 300 7.3.6 内联函数 301 7.4 类构造函数 302 7.4.1 构造函数的概念 302 7.4.2 默认的构造函数 304 7.4.3 在类定义中指定默认的形参值 306 7.4.4 在构造函数中使用初始化列表 307 7.5 类的私有成员 308 7.5.1 访问私有类成员 310 7.5.2 类的友元函数 311 7.5.3 默认复制构造函数 313 7.6 this指针 315 7.7 类的const对象 317 7.7.1 类的const成员函数 318 7.7.2 类外部的成员函数定义 318 7.8 类对象的数组 319 7.9 类的静态成员 321 7.9.1 类的静态数据成员 321 7.9.2 类的静态函数成员 323 7.10 类对象的指针和引用 324 7.10.1 类对象的指针 324 7.10.2 类对象的引用 327 7.11 C++/CLI编程 328 7.11.1 定义数值类类型 329 7.11.2 定义引用类类型 333 7.11.3 定义引用类类型的复制构造函数 335 7.11.4 类属性 336 7.11.5 initonly字段 348 7.11.6 静态构造函数 349 7.12 小结 350 7.13 练习 351 第8章 深入理解类 352 8.1 类的析构函数 352 8.1.1 析构函数的概念 352 8.1.2 默认的析构函数 353 8.1.3 析构函数与动态内存分配 354 8.2 实现复制构造函数 357 8.3 在变量之间共享内存 359 8.3.1 定义联合 360 8.3.2 匿名联合 361 8.3.3 类和结构中的联合 361 8.4 运算符重载 362 8.4.1 实现重载的运算符 362 8.4.2 实现对运算符的完全支持 365 8.4.3 重载赋值运算符 368 8.4.4 重载加法运算符 372 8.4.5 重载递增和递减运算符 376 8.5 类模板 377 8.5.1 定义类模板 377 8.5.2 根据类模板创建对象 380 8.5.3 使用有多个形参的类模板 382 8.6 使用类 384 8.6.1 类接口的概念 384 8.6.2 定义问题 384 8.6.3 实现CBox类 385 8.6.4 使用CBox类 400 8.7 组织程序代码 403 8.8 字符串的本地C++库类 405 8.8.1 创建字符串对象 405 8.8.2 连接字符串 407 8.8.3 访问与修改字符串 410 8.8.4 比较字符串 414 8.8.5 搜索字符串 417 8.9 C++/CLI编程 425 8.9.1 在数值类中重载运算符 425 8.9.2 重载递增和递减运算符 430 8.9.3 在引用类中重载运算符 431 8.9.4 实现引用类型的赋值运算符 433 8.10 小结 434 8.11 练习 435 第9章 类继承和虚函数 436 9.1 面向对象编程的基本思想 436 9.2 类的继承 437 9.2.1 基类的概念 438 9.2.2 基类的派生类 438 9.3 继承机制下的访问控制 441 9.3.1 派生类中构造函数的操作 444 9.3.2 声明类的保护成员 447 9.3.3 继承类成员的访问级别 449 9.4 派生类中的复制构造函数 451 9.5 友元类成员 455 9.5.1 友元类 456 9.5.2 对类友元关系的限制 456 9.6 虚函数 456 9.6.1 虚函数的概念 459 9.6.2 使用指向类对象的指针 461 9.6.3 使用引用处理虚函数 462 9.6.4 纯虚函数 463 9.6.5 抽象类 464 9.6.6 间接基类 467 9.6.7 虚析构函数 469 9.7 类类型之间的强制转换 473 9.8 嵌套类 474 9.9 C++/CLI编程 477 9.9.1 装箱与拆箱 477 9.9.2 C++/CLI类的继承 478 9.9.3 接口类 483 9.9.4 定义接口类 484 9.9.5 类和程序集 487 9.9.6 被指定为new的函数 491 9.9.7 委托和事件 492 9.9.8 引用类的析构函数和终结器 503 9.9.9 通用类 505 9.10 小结 514 9.11 练习 515 第10章 标准模板库 518 10.1 标准模板库的定义 518 10.1.1 容器 518 10.1.2 容器适配器 519 10.1.3 迭代器 520 10.1.4 算法 521 10.1.5 函数对象 522 10.1.6 函数适配器 522 10.2 STL容器范围 522 10.3 序列容器 522 10.3.1 创建矢量容器 524 10.3.2 矢量容器的容量和大小 526 10.3.3 访问矢量中的元素 530 10.3.4 在矢量中插入和删除元素 531 10.3.5 在矢量中存储类对象 533 10.3.6 排序矢量元素 536 10.3.7 排序矢量中的指针 537 10.3.8 双端队列容器 539 10.3.9 使用列表容器 542 10.3.10 使用其他序列容器 551 10.4 关联容器 561 10.4.1 使用映射容器 561 10.4.2 使用多重映射容器 572 10.5 关于迭代器的更多内容 573 10.5.1 使用输入流迭代器 573 10.5.2 使用插入迭代器 576 10.5.3 使用输出流迭代器 577 10.6 关于函数对象的更多内容 579 10.7 关于算法的更多内容 580 10.7.1 fill() 581 10.7.2 replace() 581 10.7.3 find() 581 10.7.4 transform() 582 10.8 C++/CLI程序的STL 583 10.8.1 STL/CLR容器 583 10.8.2 使用序列容器 584 10.8.3 使用关联容器 591 10.9 小结 597 10.10 练习 597 第11章 调试技术 598 11.1 理解调试 598 11.1.1 程序故障 599 11.1.2 常见故障 600 11.2 基本的调试操作 601 11.2.1 设置断点 603 11.2.2 设置跟踪点 604 11.2.3 启动调试模式 605 11.2.4 修改变量的值 608 11.3 添加调试代码 609 11.3.1 使用断言 609 11.3.2 添加自己的调试代码 610 11.4 调试程序 615 11.4.1 调用堆栈 616 11.4.2 单步执行到出错位置 617 11.5 测试扩展的类 620 11.6 调试动态内存 623 11.6.1 检查自由存储器的函数 623 11.6.2 控制自由存储器的调试操作 624 11.6.3 自由存储器的调试输出 626 11.7 调试C++/CLI程序 630 11.7.1 使用调试和跟踪类 631 11.7.2 在Windows Forms应用程序中获得跟踪输出 638 11.8 小结 639 第12章 Windows编程的概念 640 12.1 Windows编程基础 640 12.1.1 窗口的元素 641 12.1.2 Windows程序与操作系统 642 12.1.3 事件驱动型程序 643 12.1.4 Windows消息 643 12.1.5 Windows API 643 12.1.6 Windows数据类型 644 12.1.7 Windows程序中的符号 645 12.2 Windows程序的结构 646 12.2.1 WinMain()函数 647 12.2.2 消息处理函数 657 12.2.3 简单的Windows程序 661 12.3 Windows程序的组织 662 12.4 MFC 663 12.4.1 MFC标记法 663 12.4.2 MFC程序的组织方式 664 12.5 使用Windows Forms 668 12.6 小结 670 第13章 使用MFC编写Windows程序 671 13.1 MFC的文档/视图概念 671 13.1.1 文档的概念 671 13.1.2 文档界面 672 13.1.3 视图的概念 672 13.1.4 连接文档和视图 673 13.1.5 应用程序和MFC 674 13.2 创建MFC应用程序 675 13.2.1 创建SDI应用程序 677 13.2.2 MFC Application Wizard的输出 680 13.2.3 创建MDI应用程序 689 13.3 小结 690 13.4 练习 691 第14章 处理菜单和工具栏 692 14.1 与Windows进行通信 692 14.1.1 了解消息映射 693 14.1.2 消息类别 695 14.1.3 处理程序中的消息 696 14.2 扩充Sketcher程序 697 14.3 菜单的元素 697 14.4 为菜单消息添加处理程序 700 14.4.1 选择处理菜单消息的类 701 14.4.2 创建菜单消息函数 702 14.4.3 编写菜单消息函数的代码 704 14.4.4 添加更新用户界面的消息处理程序 708 14.5 添加工具栏按钮 711 14.5.1 编辑工具栏按钮的属性 712 14.5.2 练习使用工具栏按钮 713 14.5.3 添加工具提示 713 14.6 C++/CLI程序中的菜单和工具栏 714 14.6.1 理解Windows Forms 714 14.6.2 理解Windows Forms应用程序 715 14.6.3 在CLR Sketcher中添加菜单 717 14.6.4 添加菜单项的事件处理程序 719 14.6.5 实现事件处理程序 720 14.6.6 设置菜单项复选 721 14.6.7 添加工具栏 723 14.7 小结 725 14.8 练习题 725 第15章 在窗口中绘图 726 15.1 窗口绘图的基础知识 726 15.1.1 窗口客户区 727 15.1.2 Windows图形设备界面 727 15.2 Visual C++中的绘图机制 729 15.2.1 应用程序中的视图类 729 15.2.2 CDC类 730 15.3 实际绘制图形 737 15.4 对鼠标进行编程 739 15.4.1 鼠标发出的消息 740 15.4.2 鼠标消息处理程序 741 15.4.3 使用鼠标绘图 743 15.5 练习使用Sketcher程序 764 15.5.1 运行示例 765 15.5.2 捕获鼠标消息 765 15.6 在CLR中绘图 767 15.6.1 在窗体上绘图 767 15.6.2 添加鼠标事件处理程序 767 15.6.3 定义C++/CLI元素类 769 15.6.4 实现MouseMove事件处理程序 775 15.6.5 实现MouseUp事件处理程序 776 15.6.6 实现窗体的Paint事件处理程序 776 15.7 小结 777 15.8 练习题 778 第16章 创建文档和改进视图 779 16.1 MFC集合类 779 16.1.1 集合的类型 780 16.1.2 类型安全的集合类 780 16.1.3 对象集合 780 16.1.4 类型化指针集合 789 16.2 使用CList模板类 790 16.2.1 绘制曲线 791 16.2.2 定义CCurve类 792 16.2.3 实现CCurve类 794 16.2.4 练习使用CCurve类 795 16.3 创建草图文档 796 16.4 改进视图 801 16.4.1 更新多个视图 801 16.4.2 滚动视图 803 16.4.3 使用MM_LOENGLISH映射模式 807 16.5 删除和移动形状 808 16.6 实现上下文菜单 809 16.6.1 关联菜单和类 810 16.6.2 选择上下文菜单 812 16.6.3 醒目显示元素 816 16.6.4 处理菜单消息 821 16.7 处理被屏蔽的元素 828 16.8 扩展CLR Sketcher 829 16.8.1 坐标系统转换 829 16.8.2 定义曲线 831 16.8.3 定义草图类 833 16.8.4 在Paint事件处理程序中绘制草图 834 16.8.5 实现元素的醒目显示 835 16.8.6 创建上下文菜单 838 16.9 小结 843 16.10 练习 844 第17章 使用对话框和控件 845 17.1 理解对话框 845 17.2 理解控件 846 17.3 创建对话框资源 847 17.4 对话框的编程 849 17.4.1 添加对话框类 849 17.4.2 模态和非模态对话框 851 17.4.3 显示对话框 851 17.5 支持对话框控件 854 17.5.1 初始化控件 854 17.5.2 处理单选按钮消息 855 17.6 完成对话框的操作 856 17.6.1 给文档类添加存储线宽的成员 857 17.6.2 给元素添加线宽 857 17.6.3 在视图中创建元素 858 17.6.4 练习使用对话框 859 17.7 使用微调按钮控件 859 17.7.1 添加Scale菜单项和工具栏按钮 860 17.7.2 创建微调按钮 860 17.7.3 生成比例对话框类 861 17.7.4 显示微调按钮 864 17.8 使用比例系数 865 17.8.1 可缩放的映射模式 865 17.8.2 设置文档的大小 866 17.8.3 设置映射模式 867 17.8.4 同时实现滚动与缩放 868 17.9 使用状态栏 870 17.10 使用列表框 874 17.10.1 删除比例对话框 874 17.10.2 创建列表框控件 875 17.11 使用编辑框控件 877 17.11.1 创建编辑框资源 877 17.11.2 创建对话框类 878 17.11.3 添加Text菜单项 880 17.11.4 定义文本元素 880 17.11.5 实现CText类 881 17.11.6 创建文本元素 883 17.12 CLR Sketcher中的对话框和控件 884 17.12.1 添加对话框 885 17.12.2 创建文本元素 890 17.12.3 创建文本对话框 894 17.13 小结 896 17.14 练习 897 第18章 存储和打印文档 898 18.1 了解串行化 898 18.2 串行化文档 899 18.2.1 文档类定义中的串行化 899 18.2.2 文档类实现中的串行化 900 18.2.3 基于CObject的类的功能 902 18.2.4 串行化的工作方式 903 18.2.5 如何实现类的串行化 904 18.3 应用串行化 905 18.3.1 记录文档修改 905 18.3.2 串行化文档 906 18.3.3 串行化元素类 907 18.4 练习串行化 910 18.5 移动文本 911 18.6 打印文档 912 18.7 实现多页打印 915 18.7.1 获取文档的总尺寸 916 18.7.2 存储打印数据 917 18.7.3 准备打印 917 18.7.4 打印后的清除 919 18.7.5 准备设备环境 919 18.7.6 打印文档 920 18.7.7 获得文档的打印输出 923 18.8 CLR Sketcher中的串行化和打印 924 18.8.1 了解二进制串行化 924 18.8.2 串行化草图 928 18.8.3 打印草图 933 18.9 小结 934 18.10 练习题 935 第19章 编写自己的DLL 936 19.1 了解DLL 936 19.1.1 DLL的工作方式 937 19.1.2 DLL的内容 939 19.1.3 DLL变体 940 19.2 决定放入DLL的内容 941 19.3 编写DLL 941 19.3.1 编写和使用扩展DLL 942 19.3.2 从DLL中导出变量和函数 948 19.3.3 将符号导入程序 949 19.3.4 实现符号从DLL的导出 949 19.4 小结 952 19.5 练习题 952 第20章 连接到数据源 953 20.1 数据库基础知识 953 20.2 SQL 955 20.2.1 使用SQL检索数据 956 20.2.2 使用SQL连接表 957 20.2.3 对记录进行排序 959 20.3 MFC中的数据库支持 959 20.4 创建数据库应用程序 961 20.4.1 注册ODBC数据库 961 20.4.2 生成MFC ODBC程序 962 20.4.3 了解程序结构 965 20.4.4 示例练习 974 20.5 对记录集进行排序 974 20.6 使用另一个记录集对象 976 20.6.1 添加记录集类 976 20.6.2 添加记录集的视图类 978 20.6.3 定制记录集 982 20.6.4 访问多个表视图 985 20.6.5 查看产品的订单 990 20.7 查看客户的详细情况 990 20.7.1 添加客户记录集 990 20.7.2 创建客户对话框资源 991 20.7.3 创建客户视图类 992 20.7.4 添加过滤器 993 20.7.5 实现过滤器参数 995 20.7.6 链接订单对话框和客户对话框 996 20.7.7 练习使用数据库查看器 998 20.8 小结 999 20.9 练习题 999 第21章 更新数据源 1000 21.1 更新操作 1000 21.1.1 CRecordset更新操作 1001 21.1.2 事务 1003 21.2 简单的更新示例 1004 21.3 管理更新过程 1007 21.4 向表中添加行 1016 21.4.1 订单录入过程 1017 21.4.2 创建资源 1017 21.4.3 创建记录集 1018 21.4.4 创建记录集视图 1018 21.4.5 给对话框资源添加控件 1022 21.4.6 实现对话框切换 1026 21.4.7 创建订单ID 1030 21.4.8 存储订单数据 1034 21.4.9 为订单选择产品 1036 21.4.10 添加新订单 1038 21.5 小结 1042 21.6 练习 1042 第22章 Windows Forms应用程序进阶 1043 22.1 创建应用程序API 1043 22.1.1 添加选项卡控件 1045 22.1.2 使用GroupBox控件 1046 22.1.3 使用Button控件 1048 22.1.4 使用WebBrowser控件 1049 22.1.5 Winning应用程序的操作 1050 22.1.6 添加上下文菜单 1050 22.1.7 创建事件处理程序 1051 22.1.8 处理Limits菜单的事件 1057 22.1.9 创建对话框 1057 22.1.10 使用对话框 1061 22.1.11 添加第二个对话框 1066 22.1.12 实现Help | About菜单项 1072 22.1.13 处理按钮单击事件 1073 22.1.14 响应上下文菜单 1075 22.2 小结 1081 22.3 练习 1082 第23章 在Windows Forms 应用程序中访问数据源 1083 23.1 使用数据源 1083 23.2 访问并显示数据 1084 23.3 使用DataGridView控件 1085 23.4 在无约束模式中使用DataGridView控件 1086 23.5 定制DataGridView控件 1091 23.5.1 定制题头单元格 1092 23.5.2 定制非题头单元格 1092 23.5.3 动态设置单元格样式 1098 23.6 使用约束模式 1103 23.7 BindingSource组件 1104 23.8 使用BindingNavigator控件 1108 23.9 绑定到单独的控件 1111 23.10 使用多个表 1113 23.11 小结 1115 23.12 练习 1115 附录A C++关键字 1116 附录B ASCII码 1118 附录C Windows消息类型 1123 前言   欢迎使用本书。通过学习本书,您可成为优秀的C++程序员。Microsoft公司的最新开发系统Visual Studio 2008支持两种截然不同但又紧密相关的C++语言。该系统完全支持原来的ISO/ANSI标准C++,同时还支持名为C++/CLI的新版C++。C++/CLI由Microsoft公司开发,现在是ECMA标准。这两种C++版本互为补充,各自完成不同的任务。ISO/ANSI C++用于开发在本地计算机上运行的高性能应用程序,而C++/CLI专门为.NET Framework开发。本书将讲述使用这两种C++版本开发应用程序的基础知识。.   当编写ISO/ANSI C++程序时,我们可以从自动生成的代码中获得大量帮助,但仍然需要亲自编写大量C++代码。我们不仅需要对面向对象的编程技术有扎实的理解,而且需要充分了解Windows编程所涉及的方方面面。C++/CLI虽然针对.NET Framework开发,但同时也是Windows Forms应用程序开发的载体。开发Windows Forms程序经常只需要编写很少的代码,有时甚至不用编写代码。当然,当必须给Windows Forms应用程序添加代码时,即使这部分代码只占到代码总量的很小比例,也仍然要求我们有较多的C++/CLI语言的知识。ISO/ANSI C++仍然是许多专业人员选用的语言,但C++/CLI和Windows Forms应用程序带来的开发速度使得C++/CLI也成了基本的语言。因此,笔者将在本书中介绍这两种C++语言的基本内容。   0.1 本书读者对象   本书讲授如何使用Visual C++ 2008或Visual Studio 2008的任何版本,编写在Microsoft Windows操作系统下运行的C++应用程序。阅读本书不需要预先具备任何特定编程语言的知识。如果属于下列4种情形之一,那么您就适于学习本教程:   ●具备少量其他语言的编程经验,如BASIC;渴望学习C++,并想提升实际的Microsoft Windows编程技能。   ●有一些使用C或C++语言的经验,但使用环境不是Microsoft Windows;希望使用最新的工具和技术,扩充在Windows环境下编程的技能。   ●有一些C++知识,希望扩展C++技能,成为会使用C++/CLI的编程人员。   ●属于编程新手,十分渴望投入编程世界,并最终掌握C++。要取得成功,您至少需要对计算机的工作原理有透彻的理解——包括内存的组织方式以及数据和指令的存储方式。   0.2 本书主要内容   本书使用Visual C++ 2008支持的两种技术,讲授C++编程的基础知识。详细介绍了两种风格的C++语言,使用Microsoft基本类(Microsoft Foundation Classes,MFC)开发本地的ISO/ANSI C++ Windows应用程序,使用Windows Forms开发C++/CLI Windows应用程序等知识。   由于数据库技术在今天的重要性和普遍性,本书还介绍了可用于在MFC和 Windows Forms应用程序中访问数据源的技术。与Windows Forms应用程序相比,MFC应用程序相对来说属于编码密集型程序,原因是前者的创建过程使用了Visual C++ 2008中的高级设计功能,可以以图形方式组装应用程序的整个图形用户界面(GUI),并使所有代码自动生成。因此,本书把较多的篇幅给予了MFC编程,而非Windows Forms编程。   0.3 本书结构   本书内容的结构安排如下:   ●第1章介绍使用C++编写本地应用程序和.NET Framework应用程序所需要理解的基本概念,以及在Visual C++ 2008开发环境中体现的主要思想。还叙述了如何使用Visual C++ 2008的功能来创建本书其余部分要学习的各种C++应用程序。   ●第2~9章专门讲授两种C++语言版本,还讲述了调试过程中涉及的基本概念和技术。第2~9章内容的组织方式都相似:各章的前半部分讨论ISO/ANSI C++主题,后半部分讨论C++/CLI主题。   ●第10章介绍如何使用标准模板库(Standard Template Library,STL)。STL是一组功能强大且全面的工具,用来组成和操作本地C++程序中的数据。由于STL是独立于应用程序的,因此我们可以在上下文中大量应用它。第10章还介绍了Visual C++ 2008新增的STL/CLR。它是C++/CLI应用程序的STL版本。   ●第11章介绍了在C++程序中查找错误的技术。   ●第12章讨论Microsoft Windows应用程序的组织方式,并描述和展示了在所有Windows应用程序中都存在的基本元素。本章解释了以ISO/ANSI C++语言编写的、使用Windows API和MFC的Windows应用程序示例,还给出了一个使用C++/CLI语言编写的Windows Forms应用程序基础示例。   ●第13~18章详细描述了MFC提供的构建GUI的功能以及如何在程序中针对.NET Framework使用等价的工具。我们将学习如何创建并使用通用控件来构建应用程序的图形用户界面,还将学习如何处理因用户与程序的交互作用而产生的事件。在此过程中,我们将用本地C++创建一个具有相当规模的应用程序,并用C++/CLI创建一个本质上与C++程序功能相同的程序。除了学习构建GUI的技术以外,我们还将从开发该应用程序的过程中学到如何使用MFC来打印文档,以及如何在磁盘上保存文档。   ●第19章讲述为使用MFC创建自己的库而需要知道的基本知识。我们将了解可以创建的不同种类的库,还将开发能够与前6章开发的应用程序协同工作的示例。 .  ●第20、21两章讲述如何在MFC应用程序中访问数据源。我们首先介绍在只读模式中访问数据库的经验,然后再学习使用MFC更新数据库的基本编程技术。这两章的示例使用了从Web上下载的Northwind数据库,但我们也可以把这两章描述的技术应用于自己的数据源。   ●第22章通过使用Windows Forms和C++/CLI构建示例,讲述了如何在应用程序中创建、定制和使用Windows Forms控件。通过贯穿本章构建的另一个完整的应用程序,我们将获得一定的实践经验。   ●第23章以第22章讲述的知识为基础,演示了可用来访问数据源的控件的工作原理,并讲述了定制这些控件的方法。我们还将学习如何在不编写任何代码的情况下,创建能够访问数据库的应用程序。..   本书各章内容都包括许多示范所讨论的编程技术的示例。每章结束的“小结”部分总结了该章所讲述的要点,大多数章都在最后给出了一组练习题,您可以应用所学的技术来试着解答这些练习题。练习题的答案连同书中的所有代码都可以从Web站点上下载(参见后面的“源代码”部分了解详细情况)。   关于C++语言教程使用的示例都是使用简单的命令行输入和输出的控制台程序。这种方法使我们能够在不陷入复杂的Windows GUI编程的情况下,学习C++的各种功能。实际上,我们只有在对编程语言有了透彻理解之后,才能进行Windows 编程。   如果希望使学习过程尽可能简单,您最初可以只学习ISO/ANSI C++编程。讲授C++语言的各章(第2~9章)都是首先讨论特定方面的ISO/ANSI C++功能,然后再讨论C++/CLI在相同的上下文中引入的新功能。以这种方式组织各章内容的原因在于,C++/CLI是作为ISO/ANSI标准语言的扩充定义的,因此对C++/CLI的理解是以对ISO/ANSI C++的理解为基础的。因此,您可以只阅读第2~21章中的ISO/ANSI主题,而忽略后面的C++/CLI部分。然后可以继续学习使用ISO/ANSI C++的Windows应用程序开发部分,而免去记住两种语言版本的苦恼。在熟悉了ISO/ANSI C++之后,您可以回头重新学习C++/CLI。当然,您也可以逐章进行学习,从而同步增加这两种C++语言版本的知识。   0.4 使用本书的前提   为了使用本书,您需要拥有Visual Studio 2008 Standard Edition、Visual Studio 2008 Professional Edition或者Visual Studio 2008 Team System。注意,Visual C++ Express 2008因不包括MFC而不能胜任。   Visual Studio 2008要求操作系统是Windows XP(x86或x64) Service Pack 2或更高版本,Windows Server 2003 Service Pack 1或更高版本,或者Windows Vista除Starter Edition之外的版本。为了安装上述3种Visual Studio 2008版本,您的计算机需要有1 .6GHz的处理器,至少要有384MB的内存(Windows Vista至少需要768MB),硬盘驱动器上至少需要有2.2GB的可用空间。为了安装随产品提供的完整MSDN文档,您在安装驱动器上需要有额外的1.8GB可用空间。   书中的数据库示例使用了Northwind Traders数据库。通过在http://msdn.microsoft.com上搜索“Northwind Traders”,可以找到该数据库的下载链接。当然,您可以把相应的示例改编成使用其他数据库。   最为重要的是,为了使本书发挥最大功效,您需要有学习的愿望和掌握目前最强大的Windows应用程序编程工具的决心,需要有输入和完成所有示例以及完成书中所有练习题的决心。这些要求听起来比较难,而实际上不然,您会惊讶于自己在相对较短的时间内就能达到的成就。记住,每一个学习编程的人都会不时陷入困境,但只要坚持不懈,错综复杂的问题必将变得越来越清晰,而您最终必将走出困境。本书将帮助您开始独立的实践,并由此成为成功的C++程序员。   0.5 使用Windows Classic主题   如果您在Windows Vista系统下使用Visual Studio 2008,可能会注意到视图看起来令人惊异。Aero Glass界面提供的透明效果看第一眼时(甚至以后看了多眼后仍然)是非常惊人的。当您添加了Vista提供的所有视觉效果后,可能会奇怪怎么有人会拒绝这么好的环境呢?然而,当您注视窗口几个小时后,会发现它的显示使您眼花缭乱,您可能宁可设置不那么令视觉疲劳的界面。更重要的是,您可能注意到用这个产品时会使系统速度大大下降,因为所有这些视觉花样(eye candy)抢夺了系统的重要处理周期。   视觉花样当然是好的,但是在写了一整天的代码后按时回家不更好吗?这是本书使用Windows Classic主题显示Visual Studio 2008窗口的原因之一。另一个原因是,如果我们仍然使用Windows XP,那么奇特的Vista窗口对您就意义不大了。Windows Classic主题是这两种操作系统的公共主题,因此无论您用的是哪种操作系统它总是适用的,而且肯定比Aero Glass界面对眼睛更好。   如果您使用的是Vista,那么建议尝试一下Vista提供的各种主题,看看它们有没有在您的机器上生效。然而,如果您愿意在Vista中使用本书所用的主题,可以采用下面的步骤来设置。   (1) 右击Desktop并从上下文菜单中选择Personalize。出现的Personalize窗口如图0-1所示。这个窗口提供对获得Windows Classic视图需要的所有显示设置的访问权限。   (2) 单击Theme以显示Theme Settings对话框,如图0-2所示。   (3) 在Theme栏中选择Windows Classic,并单击OK按钮。这时,您的显示将与笔者的非常相像。当然,您仍然需要处理那些特效。下面几步将去除特效。   (4) 关闭Personalize窗口。   (5) 打开Control Panel中的System applet,显示System窗口,如图0-3所示。   (6) 单击Advanced system settings,显示System Properties对话框的Advanced选项卡,如图0-4所示。   (7) 单击Performance区域中的Settings按钮,显示Performance Options对话框,如图0-5所示。   (8) 像图0-5中那样选中Adjust for best performance单选按钮。单击OK按钮两次关闭对话框。这时,您的系统就调整为与笔者使用相同的视图,也具有了最佳图形化性能。   您可能也想通过Classic Start菜单来更轻松地定位应用程序和执行其他任务。为了配置系统提供Classic Start菜单,右击任务栏并选择Properties。选择Start菜单项,再选择Classic Start菜单项,并单击Customize进行所有必需的自定义,然后单击OK按钮。您现在就有了使用Visual Studio的最佳环境了。   当然,如果使用的是Windows XP,并希望屏幕图像看起来如本书中所示,也可以在这里使用Classic主题。只要在Windows桌面上右击,从弹出的菜单中选择Properties选项,就会显示图0-6所示的对话框。   在Display Properties对话框的Themes选项卡上,从主题下拉列表中选择Windows Classic。单击OK按钮,就可以使用该主题了。   0.6 源代码   在练习本书中的示例时,读者可以手动输入所有的代码,也可以使用本书提供的源代码文件。本书中的所有源代码均可在http://www.wrox.com或http://www.tupwk.com.cn/downpage站点下载。登录到站点http://www.wrox.com,使用Search工具或书名列表就可以找到本书。在显示本书详细内容的页面上单击Download Code链接即可获取源代码。   注意:   由于很多图书的书名都很类似,因此通过ISBN查找是最简单的。本书英文版的ISBN号是978-0-470-22590-5。   在下载源代码之后,只需使用自己喜欢的解压缩工具对其进行解压缩即可。另一个途径是访问Wrox代码下载主页面http://www.wrox.com/dynamic/books/download.aspx,这里有本书及其他所有Wrox图书的源代码。   0.7 勘误表   我们尽最大努力确保本书在叙述和代码中没有错误。然而,错误总是难免的。如果读者在本书中发现什么错误,例如拼写错误或代码错误,我们将非常感谢您能反馈给我们。通过将错误添加到勘误表中,您也许能帮其他读者节约数小时的时间,也可以帮助我们提供更高质量的图书。   请给wkservice@vip.163.com发电子邮件,如果您的意见是正确的,我们将在本书的后续版本中采用。   要找到本书的勘误表,可以登录http://www.wrox.com,搜索本书的书名或者使用书名列表。然后,在本书的详细内容页面上,单击Book Errata链接。在这个页面上读者可以查看到所有已提交的、由Wrox的编辑发布的错误信息。也可以在http:// www.wrox.com/ misc-pages/booklist.shtml页面找到一个完整的书名列表,这个列表包含了每本书的勘误表链接。   0.8 p2p.wrox.com   如果想参与讨论,可以加入P2P论坛,网址是http://p2p.wrox.com。这个论坛是基于Web站点的系统,其作用是让读者发布与Wrox的图书和相关技术有关的消息,并与其他读者和技术用户交流。该论坛提供订阅功能,当有读者感兴趣的主题发布时,论坛会通过电子邮件把这些消息发送给读者。Wrox的作家、编辑、其他行业专家及和您一样的读者都会到该论坛探讨一些问题。   在http://p2p.wrox.com中,读者将找到很多不同的论坛,这些论坛不仅能帮助读者阅读本书,还可以帮助读者开发自己的应用程序。要加入这些论坛,可按如下步骤操作:   (1) 登录http://p2p.wrox.com并单击Register链接。   (2) 阅读使用协议并单击Agree按钮。   (3) 填写加入论坛所必需的信息和可选信息并单击Submit按钮。   (4) 读者将收到一封电子邮件,该邮件告诉读者怎样验证账户并成功加入。   注意:   不加入P2P论坛也可以阅读该论坛上的信息,但是如果希望发布自己的消息,则必须加入该论坛。   加入之后,就可以发布新消息或者回复其他用户发布的消息了。可以在任何时间阅读Web站点上的消息。如果希望某个论坛能将最新的消息通过电子邮件发送给您,则可以单击论坛列表中该论坛名称旁边的Subscribe to this Forum图标。   要获得如何使用P2P论坛的更多信息,可以阅读P2P FAQ列表中的问题及其答复,这些问题与论坛软件的工作原理及很多与P2P和Wrox图书相关的常见问题有关。要阅读FAQ,可以单击任意P2P页面上的FAQ链接。
Visual_C++2008入门经典(中文高清版)
Visual_C++2008入门经典(中文高清版)1