《Visual C++2008入门经典》PDF下载

  • 购买积分:28 如何计算积分?
  • 作  者:(美)霍顿(Horton,L.)著,姜玲玲,张云译
  • 出 版 社:北京:清华大学出版社
  • 出版年份:2009
  • ISBN:9787302194637
  • 页数:1124 页
图书介绍:本书介绍:使用STL来组织和操作本地C++程序中的数据;C++程序调试技术;使用MFC开发库;创建和使用常用控件以构建应用程序的图形用户界面。

第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