5 理解Visual C++中的程序文件 1
557 从CEdit派生自定义类 51 1
目录 1
精华版序 1
译者序 1
第一章 编程基础 1
1 理解计算机是怎么运行程序的 1
2 运行一个已解释的程序 1
3 运行一个已编译的程序 1
4 C++在哪里 1
7 理解并创建头文件 2
6 创建源代码文件 2
11 空白在C和C++中的使用 3
第二章 结构和语法 3
8 理解计算机语言 3
9 理解计算机语言的句法 3
10 理解“标记” 3
13 对变量命名 4
12 理解变量 4
14 理解表达式 5
16 理解程序流 6
15 C/C++中的语句 6
169 使用预处理命令#define 1 7
17 深入程序流:理解goto语句 7
18 深入程序流:理解调用函数 7
19 理解程序的结构 8
20 理解C/C++中的函数 8
21 在函数中书写可重用代码 9
22 使用库函数 9
第三章 C编程语言 11
23 C/C++中的数据类型 11
24 定义自己的数据类型 12
25 理解运算符 12
26 赋值运算符 13
27 理解一元运算符 13
28 理解算术运算符 15
29 其他运算符 15
30 编译器是怎样计算表达式的 16
31 使用括号组合运算符 17
32 理解C/C++的关键字 17
33 编译程序引导语句 18
34 介绍结构和联合 19
35 介绍C++类 21
36 C和C++怎样处理结构和联合 22
第四章 C和C++概念 23
37 理解命名规则 23
38 声明和定义的区别 23
39 理解声明:对变量的声明 23
40 理解声明:在函数调用中声明一个变量 23
41 理解声明:函数的原型化 24
42 理解#define编译器指令:定义常数 24
43 理解#define编译器指令:定义宏 24
44 理解存储类变量:自动变量 25
45 理解存储类变量:寄存器变量 25
46 理解存储类变量:静态变量 26
47 理解存储类变量:类的静态变量 26
48 引入递归 27
49 理解循环:排序的问题 27
50 理解递归:数学问题 28
51 理解指针 28
52 理解指针:间接操作 28
53 理解数组 30
54 理解字符串作为char类型的数组 31
55 代码注释 31
第五章 文件——基本类型 33
56 VisualC++IDE使用的文件类型 33
57 理解文本文件和文档文件 34
58 创建并使用源文件 34
59 创建并使用头文件 35
60 使用保护:避免头文件多次被包含 35
61 理解makefile 36
62 理解可执行文件 36
第六章 理解字符 37
63 理解字符:ASCII码字符 37
64 理解字符:转换ASCII码或称扩展字符集 37
65 C/C++的转义序列:嵌入不可打印的字符 38
66 C/C++转义序列:使用反斜线 38
67 C/C++转义序列:使用百分号来对文本进行格式化 39
68 使用printf 39
69 C++I/O流:cout、cin和cerr 41
第七章 探索Visual C++环境 43
70 创建工程项目 43
71 Visual Studio菜单:File菜单 44
72 Visual Studio菜单:Eidt菜单 44
73 Visual Studio菜单:View菜单 45
74 Visual Studio菜单:Insert菜单 45
75 Visual Studio菜单:Proiect菜单 45
76 Visual Studio菜单:Build和Tools菜单 46
77 自定义Visual Studio菜单 46
78 向Tools菜单中添加命令 47
79 弹出式(或上下文式)菜单 48
80 使用全屏编辑器 48
81 使用调试窗口 48
82 完成程序编辑器 50
第八章 开始编程 52
83 从命令行运行编译器 52
84 创建源文件 52
85 main()函数 52
86 向程序中添加头文件 53
87 使用printf输出文件 53
88 “Hello,World”:一个简单的命令行C++程序 53
89 格式化输出族 54
90 格式化输入 54
91 三个标准文件:stdin、stdout和stderr 55
92 使用C++流函数cout、cin和cerr 55
93 重定向标准输出stdout到一个文件 55
94 main()的参数:argc和argv 56
95 使用if语句控制输出 56
96 打开文件 57
97 使用文件I/O函数 57
98 加入while循环 59
99 向程序中加入函数 60
100 使用for循环 62
101 编译命令行选项 62
102 加入第二个源文件 63
103 加入头文件 64
104 创建makefile 64
105 运行nmake.exe来编译程序 66
第九章 C++运算符 67
106 理解运算符类型 67
107 理解一元运算符:间接运算符(*) 67
108 理解一元运算符:地址运算符(&) 68
109 理解一元运算符:自增和自减运算符(++和--) 68
110 理解一元运算符:取反运算符和补码运算符 68
111 理解一元运算符:加法和减法运算符 69
112 理解算术运算符:倍数运算符(*、/和%) 69
113理解算术运算符:加运算符(+和-) 70
114理解关系运算符:等于运算符(==和!=) 70
115理解关系运算符:小于和大于运算符(<和>) 71
116理解关系运算符:小于等于和大于等于运算符(<=和>=) 71
117理解位运算符:位移运算符(<<和>>) 71
118理解位运算符:与运算符(&) 72
119 理解位运算符:或运算符(丨) 73
120 理解位运算符:异或运算符(^) 73
121 理解逻辑运算符:与运算符(&&) 74
122 理解逻辑运算符:或运算符(‖) 74
123 理解赋值运算符:等号运算符(=) 74
124 理解其他赋值运算符(+=,-=,*=,/=,%=,>>=,<<=,&=,^=,?=) 75
125 其他运算符:条件运算符(?…:) 75
126 其他运算符:逗号运算符 76
127 其他运算符:圆括号 77
128 其他运算符:引用运算符 78
129 注意&符号 79
130 理解C++如何给表达式赋值 79
第十章 编写条件语句 81
131 在C/C++中编写语句 81
132 流程控制介绍 81
133 使用if关键字 82
134 使用else关键字 82
135 执行一条单一语句 83
136 执行作为if语句目标的多条语句 83
137 组合使用if和else关键字 83
138 使用多个if条件控制 83
139 使用条件运算符 84
140 作用域介绍 85
141 理解条件语句中的作用域 86
142 条件语句的一些常见错误 86
第十一章 程序循环 87
143 循环介绍 87
144 用条件语句和goto语句构造循环 87
145 介绍while循环 87
146 使用continue和break语句 88
147 介绍do while循环 88
148 介绍for循环 89
149 理解循环内的作用域 90
第十二章 switch语句 92
150 理解switch语句 92
151 使用case和default语句 92
152 在switch语句内部声明变量 94
153 在case语句内部声明变量 94
第十三章 C++语言简介 95
154 理解C语言的结构 95
155 介绍C++的类 96
156 理解类与结构的相同点和不同点 98
157 在C和C++中声明变量 99
158 理解函数原型 99
第十四章 C/C++中的数组 100
159 理解数组 100
160 声明数组变量 100
161 使用字符串数组 101
162 使用对象数组 101
163 理解指向数组的指针 102
164 访问数组元素 103
165 理解数组运算 103
166 递增和递减数组变量 104
167 声明多维数组 104
第十五章 宏、常量和预处理命令:定义及使用常量 107
168 理解常量 107
170 注意#define语句中的分号 107
173 理解字符串常量 108
171 声明数值常量 108
172 声明无值常量 108
175 用变量定义常量 109
174 定义数字常量 109
178 理解const关键字 110
176 取消定义常量 110
177 理解sizeof操作符 110
179 理解何时使用const和#define 111
181 理解volatile关键字 112
180 用指针修改const常量的值 112
183 理解INCLUDE路径环境变量 114
第十六章 头文件 114
182 理解#include预处理命令 114
185 在头文件中使用卫式定义 115
184 理解#include<file.h>和#include file.h的区别 115
186 在大的工程中使用通用头文件 116
188 理解当头文件改变时发生什么 117
187 把头文件添加到makefile的关联列表中 117
192 使用#else和#elif预处理指令 119
第十七章 条件编译 119
189 理解#if预处理指令 119
190 理解#endif预处理指令 119
191 理解#ifdef预处理指令 119
193 在命令行中定义常量 120
196 理解宏替换 122
第十八章 定义和使用宏 122
194 理解C/C++中的宏 122
195 定义宏——又是#defne指令 122
198 理解编译器对宏的解释 123
197 用变量定义宏 123
200 示例:求一个数的平方 124
199 理解运行库中的宏 124
204 理解和使用字符串指针 126
第十九章 C/C++中的字符串 126
201 理解字符变量类型 126
202 理解C和C++语言存储字符串的方式 126
203 理解NUL字符(\0) 126
205 获取字符串的大小 127
207 定义字符型数组变量 128
第二十章 声明字符串 128
206 声明字符型变量 128
209 理解动态字符串:new操作 129
208 定义字符串数组 129
210 理解动态字符串:delete操作 130
212 理解字符串加载函数 131
第二十一章 字符串函数 131
211 理解字符串库函数 131
215 在字符串中查找一个字符 132
213 理解字符串信息函数 132
214 使用字符串函数复制指定数目的字符 132
217 查找字符串中的标记 133
216 在字符串中查找一个子串 133
219 扩展strtok函数以实现对空标记的解析 134
218 使用strtok()解析一个字符串 134
220 理解不区分大小写的函数 135
222 使用sizeof操作来判断字符串的有效长度 137
第二十二章 操作字符串 137
221 理解sizeof操作符 137
223 使用sizeof判断数组中字符串的数量 138
224 访问字符串中的单个字符 139
225 动态分配字符串 140
226 示例:反转一个字符串中的字符 141
228 理解C和C++中的函数声明 143
第二十三章 函数和变量 143
227 理解函数 143
231 声明和定义返回一个值的函数 144
229 理解函数定义 144
230 理解函数原型 144
232 声明和定义带参数的函数 145
233 理解函数的默认值 146
234 理解内联函数 147
237 C/C++中的函数调用 148
235 理解引用调用和值调用 148
236 引用调用和值调用的优缺点 148
238 理解函数的作用域 149
240 理解引用运算符(&) 150
239 在函数调用中使用指针 150
241 利用引用运算符修改变量 152
243 理解函数重载 153
242 函数重载简介 153
244 理解函数模板 155
246 理解函数指针 157
245 使用函数模板和重载函数的选择 157
247 获取重载函数的地址 159
248 理解引用函数 160
251 理解变量 161
249 理解函数和宏之间的区别 161
250 函数和宏使用上的选择 161
256 C++允许在函数体中说明变量 162
252 理解变量类型 162
253 更改变量类型 162
254 理解局部变量 162
255 理解全局变量 162
259 定义全局静态变量 163
257 理解存储类型 163
258 理解静态变量 163
262 理解变量的作用域 164
260 在程序中定义静态变量 164
261 创建自己的变量类型:typedef关键字 164
266 理解指向变量的指针 165
263 理解左值(lvalue) 165
264 理解NULL 165
265 理解void类型 165
267 声明和初始化指向变量的指针 166
268 理解间接操作:获得指针所指向的值 167
270 初始化指针数组 168
269 理解指针数组:指向指针的指针 168
271 理解转换:暂时修改变量类型 169
273 转换指针:危险的迹象 170
272 自动类型转换:混合int和char类型的变量 170
278 将结构理解成一种封装设备 171
第二十四章 开始C++:面向对象编程 171
274 面向对象编程 171
275 C++:C语言的进一步发展 171
276 OOP的三个原则 171
277 理解封装 171
280 理解多态性 172
279 理解C++中的类 172
282 使用类作为多态性的对象 173
281 理解多态性的示例:函数重载 173
286 将程序划分成对象 175
283 理解继承 175
284 从上至下的继承 175
285 使用对象 175
287 一个面向对象编程的示例 176
289 理解构造函数 182
第二十五章 C++类 182
288 理解类的元素 182
290 把参数传递给构造函数 183
292 理解析构函数 184
291 在类中使用多个构造函数 184
293 理解类中的访问关键字 185
295 保持数据成员为私有的 186
294 使用访问关键字实施封装 186
297 从基类派生一个新类 187
296 理解基类 187
298 理解多重继承 188
300 理解成员函数 189
299 使用基类 189
301 理解友元类 190
302 理解友元函数 191
305 理解嵌套数据类型 192
303 理解虚函数 192
304 理解抽象类 192
308 理解静态数据成员 194
306 理解静态成员 194
307 理解静态函数 194
310 理解作用域分辨 195
309 使用静态成员 195
313 重载操作符 196
311 理解回调函数 196
312 理解操作符重载 196
315 理解插入符 200
第二十六章 C++I/O 200
314 使用cin、cout和cerr 200
317 理解文件流 201
316 理解提取符 201
319 理解随机流函数 202
318 理解顺序流函数 202
321 理解I/O操纵器 203
320 理解width()、precision()和fill() 203
322 创建自己的插入符 204
323 创建自己的提取符 205
326 this指针 206
第二十七章 C++数组和指针 206
324 理解对象指针 206
325 理解类指针 206
329 使用delete操作符 207
327 使用malloc()和free() 207
328 使用new操作符 207
331 使用派生类指针 208
330 理解内存泄漏 208
332 理解对象指针运算 209
334 理解设备环境 210
第二十八章 图形设备接口 210
333 理解图形设备接口 210
335 设备环境和输出设备 211
338 理解屏幕坐标 212
336 使用Microsoft Foundation Class的设备环境 212
337 利用GDI绘图 212
340 理解打印机设备环境 213
339 理解客户坐标 213
343 GDI对象:画笔 214
341 GDI对象:字体 214
342 理解字体家族 214
344 GDI对象:刷子 217
345 GDI对象:位图 219
347 GDI对象:区域 220
346 GDI对象:调色板 220
350 理解设备坐标 222
348 理解映射 222
349 理解映射模式 222
353 理解图形和点 223
351 理解逻辑坐标 223
352 理解绘图模式 223
356 解释WM PAINT消息 224
354 理解路径 224
355 使用函数BeginPath()和EndPath() 224
358 绘制一系列点 225
357 使用函数SetPixel() 225
361 使用函数LineTo() 226
359 绘线 226
360 使用函数MoveToEx() 226
363 绘制弧线 227
362 用一系列直线绘制曲线 227
365 绘制封闭区域 228
364 绘制圆和椭圆 228
367 使用刷子 229
366 使用笔 229
371 理解字符宽度 230
368 填充一个封闭区域 230
369 了解Windows字体类型 230
370 理解像素尺寸 230
375 理解创建字体的CFont函数 231
372 理解字符属性 231
373 理解文本对齐方式 231
374 使用MFC的CFont类 231
377 使用DrawText()函数 232
376 理解文本输出函数 232
381 理解文本输出的背景模式 233
378 使用TextOut()和ExtTextOut()函数 233
379 使用TabbedTextOut 233
380 理解GrayString()函数 233
382 旋转文本 234
384 用CEdit和CStatic派生出来的类设置文本属性 239
383 设置文本和背景颜色 239
385 GDI示例:绘制一个字符镜像 243
389 MFC是如何在Visual Studio中实现的 254
第二十九章 Microsoft Foundation Class库 254
386 了解类库 254
387 使用类库来创建程序 254
388 引入Microsoft基础类库 254
390 调用Visual Studio向导创建一个基于MFC的程序 255
391 引入CObject 256
393 使用对象类 257
392 应用程序结构类 257
395 使用设备场景类 258
394 文件服务类 258
396 绘图对象类 262
398 数组、列表和映射类 263
397 控件、支持、数据库、菜单、命令行、同步和Socket类 263
399 Internet服务类 271
401 理解CWnd子孙类 273
400 窗口类:CWnd介绍 273
403 使用CFrameWnd类:单文档界面 274
402 框架窗口类 274
404 使用CFrameWnd类:多文档界面 275
405 使用CSplitterWnd类 277
406 控件栏类 279
407 属性表类 281
408 使用对话框类 282
409 理解通用对话框类 283
411 理解用户对话框类 284
410 理解属性页类 284
413 MFC视图类介绍 285
412 理解视图类 285
415 调用Visual Studio向导创建基于对话框的程序 286
414 调用Visul Studio向导创建视图类程序 286
417 使用CFile及其子孙类 295
416 文件服务类介绍 295
418 使用内存文件 296
421 理解CRecentFileList类 297
419 使用Socket文件 297
420 使用CStdioFile 297
422 理解控件类 298
423 非CObject派生类 299
425 理解CPoint 300
424 理解CString 300
426 理解Crect 301
429 理解同步(锁)类 302
427 理解CSize 302
428 理解支持类 302
430 使用CInternetConnection 305
431 使用CFtpConnection 307
432 理解CRuntimeClass 308
434 理解异常类 309
433 理解文档类 309
435 使用工具栏类 311
437 理解线程类 313
436 用MFC类实现打印和打印预览 313
438 理解命令操作器:CCmdUI类 314
439 理解CWaitCursor类 316
440 使用CImageList类 317
441 从MFC类库派生自定义类 320
444 创建工作区 322
第三十章 Developers Studio向导:创建工程 322
442 理解New菜单命令 322
443 创建文件 322
448 理解MFC AppWizard 324
445 创建其他文档 324
446 创建工程 324
447 理解小工程 324
452 理解数据库支持 325
449 创建MFC EXE工程 325
450 在工程中加入多文档支持 325
451 理解文档/视图支持 325
454 选择工程特色 326
453 在工程中加入复合文档支持、ActiveX和Automation 326
457 其他工程选项 327
455 理解工具栏选项 327
456 理解高级选项 327
460 为基于对话框的工程选择特色和支持选项 328
458 最后一步:为类命名和选择视图类 328
459 创建基于对话框的工程 328
463 创建Win32库 329
461 选择对话框选项 329
462 使用MFC创建DLL工程 329
465 理解文档对象 331
第三十一章 文档和视图 331
464 理解文档/视图结构 331
466 理解视图对象 332
467 理解文档/视图结构中的窗口框架 333
470 在工程中加入多文档类型 336
468 理解文档管理器 336
469 理解文档模板 336
473 重载框架消息处理函数 338
471 理解文档/视图中的Windows消息路径 338
472 理解默认消息 338
474 理解CArchive类 339
475 使用串行化函数 341
476 理解CView 342
478 在CView中显示文本 343
477 重载OnPaint消息处理函数 343
479 在CView中绘制图形对象 345
480 使用CScrollView类 355
483 理解插入和覆盖模式 360
481 使用CEditView类 360
482 在编辑视图中插入文本 360
484 在编辑视图中加入覆盖模式 361
485 使用编辑视图保存和恢复文本文件 364
486 使用CRichEditView类 368
488 理解复合文档支持 369
487 使用CRichEditView创建工程 369
490 理解服务器和最小服务器支持 370
489 理解OLE容器支持 370
491 添加菜单和工具栏项以支持多文本 371
493 理解CHARFORMAT和CHARFORMAT2结构 372
492 理解多文本编辑控件中的字符属性 372
494 改变字体 373
495 改变多文本编辑文档视图中的默认字体 374
497 为文本设置斜体、下划线和删除线 375
496 为文本设置粗体 375
498 设置字体和背景颜色 376
499 设置段落对齐 377
500 在格式栏中添加字体和字号框 379
501 在多文本编辑视图中添加用户和文件信息 387
502 使用串行化保存与恢复用户信息和文件信息 393
503 使用CListView类 394
505 创建图像列表 395
504 理解带CListView的CImagelist类 395
506 在列表控件中显示不同的样式 397
507 增加工具栏来改变显示样式 412
509 使用自主绘图属性产生整行选择 414
508 使用LVS OWNERDRAWFIXED样式 414
510 使用CTreeView类 420
511 组合CTreeView、CListView和CSplitterWnd创建一个资源管理器类型的应用程序 432
512 在资源管理器类型的应用程序右面板里使用其他代替视图 435
513 使用CFormView类 436
515 向程序中插入新的表单 437
514 创建基于表单的应用程序 437
516 在程序中使用多重视图 438
519 创建其他视图类:CCtrlView 441
517 向文档中添加视图 441
518 从文档中删除视图 441
520 使用CSplitterWnd实现多重视图 449
521 切分一个分割窗口 451
522 联合使用CSplitterWnd和文档视图 455
523 通过改写InitInstance函数避免创建初始化文档 462
524 理解永久保存数据机制 463
525 保存状态栏中的信息 467
526 更新与同一文档关联的多个视图 470
528 设置工程项目选项 475
第三十二章 调试技术 475
527 使用Visual Studio Debugger 475
529 使用调试窗口 478
530 设置和使用断点 480
531 单步执行程序 481
534 输出到Output窗口 482
532 调试命令行程序 482
533 使用Edit and Continue进行调试 482
536 建立远程调试器 483
535 理解远程调试 483
538 理解实时调试 484
537 在远程和本地调试间切换 484
539 有用的调试技术 485
540 使用CMemoryState类来检查内存泄漏 487
543 理解通用控件窗口类 488
第三十三章 Windows通用控件 488
541 理解Windows环境下的控件 488
542 理解通用控件 488
544 理解通用控件样式 489
546 通用控件使用的宏 490
545 通用控件的Windows通知消息 490
548 使用通用控件 492
547 通用控件库使用的结构 492
549 确定通用控件DLL的修订版本 493
550 Windows通用控件列表 494
551 从MFC控件类派生自定义类 496
553 从CStatic派生自定义类以获取功能 497
第三十四章 基本通用控件 497
552 理解静态文本控件 497
554 使用CStatic类 505
555 理解编辑框控件 510
556 使用CEdit类 511
558 添加编辑框控件的消息处理 520
559 理解按钮控件 522
560 使用CButton类 522
561 添加按钮控件的消息处理 523
562 使用命令更新启用或禁用按钮 531
563 理解复选框 531
564 使用下压按钮式复选框 532
565 理解单选按钮 532
566 将单选按钮分组 532
567 使用下压式单选按钮 532
568 在复选框和单选按钮中使用位图和图标 533
569 理解分组框控件 534
570 理解列表框控件 534
571 使用CListBox类 535
572 理解列表框消息 548
573 使用列表框字符串函数 549
574 使用列表框Dir()函数 549
575 理解组合框控件 550
576 使用CComboBox类 550
577 理解组合框样式 554
578 理解组合框消息 554
580 在视图中添加滚动条 555
581 在控件中添加滚动条 555
579 理解滚动条控件 555
582 理解SCROLLINFO结构 556
583 理解CScrollBar类 556
584 隐藏和显示滚动条 557
585 解释滚动条消息 558
586 使用滚动条作为输入控件 559
587 理解32位控件 565
588 理解图像列表控件 565
第三十五章 Windows 95及后继版本的通用控件 565
589 建立图像列表 566
590 在控件中添加图像列表 566
591 绘制图像列表中的图像 576
592 管理并操作图像列表 580
593 理解扩展组合框控件 583
594 使用CComboBoxEx类 583
597 理解CComboBoxEx操作 591
596 在CComboBoxEx中使用CImageList 591
598 理解Rich Edit控件 591
595 在扩展组合框中添加项目 591
599 理解CRichEditCtrl类 592
600 在Rich Edit控件中进行字符格式化 605
601 在Rich Edit控件中设置颜色 606
602 理解Rich Edit事件屏蔽 607
603 理解Rich Edit控件通知消息 607
604 理解进度条控件 608
605 使用CProgressCtl类 608
607 设置进度条值域和位置 616
608 理解进度条操作 616
606 理解进度条样式 616
609 理解滑动条控件 617
610 理解CSliderCtrl类 617
611 使用滑动条控件 628
612 解释滑动条控件消息 628
613 理解滑动条控件样式 630
614 设置Tick Mark 630
616 理解微调控件 631
617 理解CSpinButtonCtrl类 631
615 使用CSliderCtrl成员函数 631
618 理解微调按钮样式 639
619 使用CSpinButtonCtrl的成员函数 640
620 解释微调按钮控件消息 641
621 理解标头控件 643
622 使用CHeaderCtrl类 643
623 动态重排列标头域的使用 660
624 在标头中使热键追踪功能有效 660
625 在标头中使用图像列表 661
626 理解列表控件 661
627 使用CListCtrl类 662
628 理解列表控件样式 679
629 在报表视图模式中启用整行选取 680
630 为列表控件添加项目 681
631 使用带图像列表的列表控件 682
632 理解LPSTR_TEXTCALLBACK和I_IMAGECALLBACK样式 682
633 根据标头域的选择对列表控件排序 683
634 理解树状控件 683
635 理解CTreeCtrl类 684
636 为树状控件添加分支 691
637 理解树状控件样式 692
638 在树状控件中使用图像列表 693
639 展开和折叠分支 693
640 理解动画控件 694
641 使用CAnimateCtrl类 694
642 理解CAnimateCtrl类的成员函数 699
644 在工程中添加一个AVI动画文件 700
645 动画的播放、暂停和停止 700
643 创建动画文件 700
646 理解标签控件 701
647 理解CTabCtrl类 701
649 在标签控件中使用图像列表 719
650 在空白标签控件页面上添加控件 719
648 向标签控件中添加页面 719
652 理解状态栏控件 721
653 使用CStatusBarCtrl类 721
651 解释标签控件消息 721
654 在状态栏控件上设置指示 728
655 向状态栏中添加控件 729
656 理解工具栏控件 734
657 使用CToolBar类 734
658 在工具栏控件中使用图像列表 740
659 理解工具提示控件 741
660 使用CToolTipCtrl类 742
661 理解热键控件 754
662 使用CHotKeyCtrl类 754
663 设置和使用热键 760
664 理解日期和时间采集控件 760
665 使用CDateTimeCtrl类 761
666 理解日期和时间控件样式 765
667 理解日期和时间格式 766
668 理解日历控件 767
669 使用CMonthCalCtrl类 768
670 定制日历控件 776
671 理解日历控件属性 776
672 使用日历消息 777
673 MFC库中的其他控件类 777
674 理解位图按钮控件 777
675 理解IP地址控件 779
第三十六章 进程和线程 783
676 理解程序和进程 783
677 理解exec和spawn 783
678 处理不成功的exec 788
679 理解线程 789
680 使用MFC线程类 790
681 理解Windows如何调度线程 790
682 理解线程优先级 791
683 使用工人线程 791
684 使用用户接口线程 792
685 终止和挂起线程 792
686 从另一个线程终止线程 793
687 获取线程返回代码 793
689 在线程之间共享对象 794
690 同步线程 794
688 挂起和恢复线程 794
691 理解互斥量和信号量 795
692 理解关键段 800
693 理解事件 801
694 等待单个事件 801
695 等待多个事件 806
696 使用多线程C运行时库 810
697 理解ASSERT宏 811
698 理解异常 811
第三十七章 高级专题:异常处理 811
701 理解throw语句 812
700 理解try...catch块 812
702 捕获异常 812
699 抛出异常 812
703 使用多条catch语句 813
704 处理错误 815
705 使用异常通知失败的对象 816
706 理解TRY、CATCH和END_CATCH宏 816
707 理解CATCH_ALL和END_CATCH_ALL宏 817
708 理解MFC异常类 818
709 获取和解释异常类错误信息 818
710 删除异常对象 819
711 创建自己的异常类 819
712 嵌套try...catch块 820
713 理解进程间通信 822
714 理解句柄 822
第三十八章 进程间通信 822
715 理解进程控制例程 823
716 理解信号 823
717 在进程之间使用Windows消息 824
718 理解排队和非排队消息 824
719 理解管道 825
720 使用无名管道进行进程间通信 825
721 使用CreatePipe() 832
722 使用命名管道进行进程间通信 836
724 连接和断开管道 845
725 关闭管道 845
723 理解管道操作 845
726 使用_popen函数 846
727 理解事件作为IPC设备 850
728 创建命名事件 851
731 使用MFC信号量类 852
730 创建和删除信号量 852
732 锁定和解锁信号量 852
729 理解信号量作为IPC设备 852
733 理解映射文件 853
734 理解内存映射文件 854
735 理解共享内存 854