中译本序 1
绪论 1
你是谁呢? 1
前言页 1
关于本书 2
Windows 95和Visual C++ 2
本书是如何组织的 3
第一部分 入门 3
第五部分 应用例子之三:文本编辑器 4
附录 Visually Bacsic C 4
第六部分 十准则集粹 4
第四部分 应用例子之二:个人备忘录 4
第三部分 应用例子之一:绘图程序 4
第二部分 AppWizard程序设计 4
本书所用的图标 5
第一部分 入门 7
第一章 Windows 9
简短的历史课 9
史前Windows 9
Windows 10
Windows 95 11
用户的Windows 12
多任务,可以进行切换 13
一致的用户界面 13
安装比例字体 14
最后——其他需要改进的地方 14
程序员的Windows 14
DIG设备独立图形 14
增强的内存管理——如果我没记错的话 15
结束语 16
第二章 你的第一个Windows程序 17
对“Hello,world”程序说你好 17
编译并运行该程序 20
与该程序的低劣的孪生兄弟比较 21
好吧,那么什么是原型呢? 22
包含include文件 22
到底什么是API? 22
局部原型 24
匈牙利表示法 24
那么,什么是句柄呢? 25
WinMain():第一个动作 26
WinMain()的参数 26
登记窗口类 27
创建一个窗口 30
显示窗口 31
显示出那条讨厌的消息 32
在消息循环中兜圈子 33
第三章 消息循环:最终显示出“Hello,world” 33
以事件为基础的程序设计中的基础事件 34
被“Hello,world”的消息循环弄得神经错乱 36
乐于对事件做出响应:WindowProc() 37
响应不同的消息 38
用WM_PAINT消息跟踪你的屏幕 38
有关桌面与白板 39
回到WM_PAINT消息 40
什么时候必须重画? 41
WM_DESTROY消息 42
与图形设备界面进行交互 43
到现在你还跟得上吗? 43
更有意思的字母:HDC 44
使非法矩形合法化 46
对剪裁区进行剪裁 47
我能看到这个非法项起作用吗? 47
其他可返回设备上下文的函数 50
结束语 50
第四章 绘制和书写 53
测量可变尺寸字体 53
显示变宽字体 53
接着来,试一下 55
Prog1_2:源代码 55
执行程序——出现了一个可怕的问题 61
调整你的程序 63
使用显示单位会更方便 65
下一步怎么办? 69
20分钟问答 71
第二部分 AppWizard程序设计 73
第五章 建立你的第一个AppWizard程序 75
“Hello,world” AppWizard风格 75
“Hello,world”在哪儿? 76
结束语 78
C++就是C加、加、加 79
第六章 C++的应急课程 79
非面向对象编程的特性 80
以一种新的注释风格进行注释 80
随意地,声明! 80
引用引用变量 80
函数重载 82
缺省默认参数 84
使某些函数内联 84
使你适应面向对象的编程 85
消耗面向对象的nachos 85
封装 85
函数式程序设计微波炉 86
分类 86
OOP思维方式 87
用类编程 88
卡片装载的成员函数 89
锁上门,并把数据藏起来! 90
我如何得到有用的材料? 91
隐藏数据不浪费吗? 92
我不会把一个好东西弄糟吗? 92
良好的开端:构造函数 92
何时创建和破坏对象? 94
介绍一个新的关键字 94
处理你的断承 95
虚拟成员函数:它们是真实的吗? 96
这里没有第二类公民 97
嘿! I/O不过是流入流出 98
结束语 99
第七章 牢固的基础:MFC 101
被解释的MFC 101
理解MFC界面 102
MFC还能做些什么 103
MFC如何工作? 103
登记窗口类 104
从MFC到达程序并返回 107
创建窗口 107
CProg2_1::InitInstance()的作用 108
发送消息 109
发现消息的流向 110
用户类 110
检验视图 110
有关其他应用程序框架类的讨论 112
MFD(Microsoft Foundation Details,Microsoft基础细节) 112
获得你的对象的句柄 112
寻找 113
学习stdafx.cpp 114
引入Prog2_1.rc文件 114
结束语 115
第八章 在类中传送消息:Class Wizard 117
做得好看一些 117
开始仪式:俱乐部里又来了新成员 119
CPoint是什么?CCircle呢?还有CArgument? 121
哪一个操作是为CPoint以及其他的类定义的? 122
增加一个消息处理器:更多的Wizardry 122
争夺WM_CREATE 123
没有映射表你不能为你的消息规定路线 124
消息映射表如何工作? 125
为什么使用一种不同的机制 126
在实际运行中观察这一过程 126
收尾工作 127
结束语 128
第九章 资源管理 129
介绍曾经很有帮助的资源文件 129
为什么要考虑一个资源文件? 129
真的,什么是资源文件? 130
那么,给我看看 131
结束语 131
20分钟问答 133
第三部分 应用例子之一:绘图程序 137
重大的事件:鼠标的移动 139
第十章 基本的鼠标陷阱 139
用鼠标绘图(其他的动物可不行) 144
用鼠标绘图:再次尝试 149
结束语 153
第十一章 保存鼠标绘图的信息 155
保存屏幕:Prog3_2 155
保存鼠标输入信息 156
查看View类的include文件 157
C...arrays;C...arrays run;run,arrays,run! 158
找到源代码的根源 159
记录鼠标事件 162
其他 163
重画 163
清屏幕 163
好啦! 164
修改绘图程序:Prog3_ld 164
测试和评价 168
临近尾声 168
结束语 173
第十二章 视图与文档 175
Document-View模式 175
Document-View模式的MFC版本 176
从视图中分离出文档 176
为何要分成两类? 176
文档 177
视图 181
运行程序 185
保存文档! 185
将Serialize()补充完整 186
检验结果 189
注册一个文件类型 189
关于“no update” 190
再访Prog3_3b.cpp 191
什么是.INI文件 193
下一步怎么办? 194
结束语 195
第十三章 滚动窗口 197
滚屏 197
我们干吧! 197
破晓时分(最后的运行) 202
结束语 202
第十四章 代码调试 203
TRACE 204
几种模式 204
使用TRACE 204
调试框架 205
Assert Valid() 207
关于Dump() 208
自我诊断 208
调试代码的作用 213
用Dump()显示对象的信息 214
检查内存 216
结束语 218
20分钟问答 219
第四部分 应用例子之二:个人备忘录 223
第十五章 打开对话框 225
备忘录应用程序 226
建立Prog4 226
About对话框 227
编辑About对话框 229
建立一个新的对话框 230
建立一个对话框类 232
显示和读取对话框 235
多文档界面 237
结束语 237
第十六章 与对话框对话 239
数据传送 239
初始化对话框 240
以当前日期和时间为初始值 241
滚动条控制 244
组合列表框和选择按钮 244
Scroll Bar Value()函数 249
设置滚动条的范围 249
OnHScroll()函数 250
指定域的类型(DDX/DDV) 250
结束语 252
第十七章 用菜单控制应用程序 253
菜单编辑 253
添加菜单项 253
菜单控制项 255
菜单消息 256
允许和禁止菜单项:UI_CMD Msg 258
在工具条上添加控制 259
结束语 260
第十八章 调度个人文档视图 261
调度项目:CEntry类 261
将项目存入文档 264
添加和删除项目 271
GetFirst()/GetNext()项的定位 271
贯穿高纤维序列 272
创建一个新的项:只说“ID_Edit_Add” 272
修改一个表项 272
观察该文档 274
实现修改和删除功能 280
多重视图 280
结束语 281
第十九章 罢免出版社:打印备忘录项目 283
打印你的列表:初次尝试 283
打印过程 283
多页输出 285
它是否起作用? 290
不知道打印的页数又如何呢? 290
建立一种漂亮的字体 291
试试它! 292
外出之前别忘了穿戴鞋帽 296
结束语 304
第二十章 完成个人备忘录应用程序 305
进行调度 305
使用定时器 305
设置一个定时器 305
定时器的局限性 306
其他有关时间的细节 307
处理一个timer消息 308
到类的前面去 310
代循环(Idle Loop) 311
使用你的空闲时间 312
结束语 314
比较空闲处理和定时器处理 314
20分钟问答 317
第五部分 应用例子之三:文本编辑器 319
第二十一章 处理键盘 321
键盘消息 321
键的抬起和放下 322
你处于什么状态?(内布拉斯加州?) 323
ASCII和WM_CHAR消息 324
让我们看看按键消息的作用 325
结束语 329
建立框架 331
建立文档类 331
第二十二章 基本编辑器 331
读写文本文件 338
增加View 340
结束语 343
第二十三章 改善视图 345
插入记号 345
增长和削弱插入记号 346
迁移插入记号 347
横向定位插入记号:错误方法 347
用鼠标定位插入记号 348
横向定位插入记号:正确方法 348
极小化重画 349
文本编辑器:续集 350
最小的更新 356
插入记号的功能 357
结束语 357
第二十四章 自己添加卷滚 359
增加屏幕卷滚性能 359
拖动卷滚条 360
证明最小的函数 369
多视图 370
处理方向键 370
结束语 372
20分钟问答 373
第六部分 十准则集粹 377
第二十五章 十个重要的C++编程错误 379
忘记初始化指针 379
忘记释放堆内存 380
返回对局部内存的引用 381
使运算符混乱 382
0的四种面孔 382
声明的混乱处 383
计算顺序混乱 384
从构造函数内调用虚拟成员函数 385
说明虚拟成员函数 385
指针对准 386
第二十六章 十个重要的编译器设定 389
Project Settings | Microsoft Foundation Classes 389
Project Settings | C/C++ | Code Generation | Processor 390
Project Settings | C/C++ | Code Generation | Calling Convention 390
Project Settings | C/C++ | C++ Language | Enable Exception Handling 390
Project Settings | Link | Customize | Link Incrementally 391
Project Settings | Browse | Generate Browse Info File Only on Demand 391
Tools | Customize | Toolbars 391
在线帮助 393
书籍 393
第二十七章 十个重要的获得帮助的地方 393
杂志 394
在线论坛 394
Internet网络上的USENET消息组 395
Microsoft的在线服务 395
最近的计算机迷 395
计算机俱乐部 396
电话帮助 396
神的介入 396
附录 Visually Basic C 397
BASIC历史 397
编译的和解释性的语言 398
一些BASIC比较 398
Minimal和do-it-all 399
简洁和繁锁语言 399
进入C 399
注释句 400
对象 400
你有一些对象要说明吗? 401
范围规则 402
C中数组的定义 403
用户定义类型 403
String em up 404
运算符 405
丢失类型 405
赋值运算符 407
在转换运算符方面的可用来说明的转换事实 407
增加算术运算符 408
比较运算符 408
逻辑运算符合乎逻辑吗? 408
对位选择逐位运算符 410
理解多变的移位运算符 410
驯服别扭的三元式(ternary) 410
程序流程控制 410
为了Pete的爱 412
Switch对我来说更加清晰易懂 413
函数 414
使用C函数 415
典型的标准类型说明语句 416
几个C指针 416
指针算法 418
指针防御 419
编程提示 419
原型语句 420
按程序包编程 420
采用标准格式 420
KISS(Keep it simple,stupid)使程序保持简单、苯拙 420
结束语 420