目录 1
第一章 程序设计——简单历史和风格指南 1
1.1 第一步:获得一个系统 1
1.2 ShadowCat技术编码约定 1
1.2.1 简介 1
1.2.2 命名和注释标准 1
1.3 函数 2
1.3.1 函数风格约定 2
1.3.2 函数定义格式 3
1.4 命名规范 7
1.4.1 文件头 9
1.5 其它问题 10
1.6 C++编程补充和规范 11
1.6.1 头文件和源程序 14
1.7 第二步:获取一个开发环境 15
1.8 第三步:建立了什么 16
1.9 第四步:建立一个外壳原型制作器 17
1.9.1 为什么使用AppStudio作为一个原型制作器 17
1.10 第五步:抛弃它 17
1.11 小结 17
2.1 从头开始学习建立项目 19
2.1.1 选择界面对象 19
第二章 使用界面对象、文档类型及其它细节工作 19
2.1.2 公用对话框 20
2.1.3 使用File Open对话框 20
2.1.4 选择文档类型 27
2.2 更新一个已有的项目以便使用IDE和C8 28
2.3 小结 33
第三章 C++、MFC、和核心——介绍性指南 35
3.1 C++的优点 35
3.1.1 可重用的程序对象 35
3.2 多态性(Polymorphism) 35
3.3 类方法 36
程序3-1.MOUSER.CPP 37
3.4 现存的对象类:MFC2.0 37
程序3-2.MOUSER.H 40
程序3-3.MOUSER.DEF 41
程序3-4.MOUSERDOC.H 41
程序3-5.MOUSERDOC.CPP 42
程序3-6.MOUSEVW.H 43
程序3-7.MOUSEVW.CPP 44
程序3-8.MAINFRM.H 47
程序3-9.MAINFRM.CPP 48
程序3-10.STDAFX.H 51
程序3-11.STDAFX.CPP 51
程序3-12.MOUSER.MAK 51
程序3-13.MOUSER.RC 54
程序3-14.RESOURCE.H 61
程序3-15.MOUSEDOC.H 64
程序3-16.MOUSEDOC.CPP 65
程序3-17.MOUSEVW.H 69
程序3-18.MOUSEVW.CPP 70
3.5 对象类:一种土生的方法 84
3.5.1 位图对象类 84
程序3-19.BITMAP.HPP 85
程序3-20.BITMAP.CPP 89
程序3-21.COMPATDC.HPP 95
程序3-22.COMPATDC.CPP 107
3.6 在已有工作上建立程序(从本身派生) 113
3.7 小结 114
第四章 示例一:在非用户区绘图 115
4.1 窗口的非用户区域 115
程序4-1.TICKER.H 115
程序4-2.TICKER.CPP 116
程序4-3.MAINFRMH 119
程序4-4.MAINFRMCPP 120
程序4-5.TICKEDOC.H 125
程序4-6.TICKEDOC.CPP 126
程序4-7.TICKEVW.H 128
程序4-8.TICKEVW.CPP 129
程序4-9.RESOURCE.H 130
程序4-10.MAINFRM.H 131
程序4-11.STDAFX.CPP 132
程序4-12.TICKER.RC 132
程序4-13.TICKER.DEF 137
程序4-14.TICKER.MAK 137
4.2 非标准MFC消息挂接 141
4.3 在非用户区绘图 142
4.3.1 确定画在哪儿 143
4.4 将菜单与位图连接 146
程序4-15.TICKER.H 146
程序4-16.TICKER.CPP 147
程序4-17.MAINFRM.H 150
程序4-18.MAINFRM.CPP 151
程序4-19.TICKEDOC.H 159
程序4-20.TICKEDOC.CPP 160
程序4-21.TICKEVW.H 162
程序4-22.TICKEVW.CPP 163
程序4-23.STDAFX.H 169
程序4-24.STDAFX.H 170
程序4-25.TICKER.DEF 170
程序4-26.TICKER.RC 170
程序4-28.TICKER.MAK 176
程序4-27.RESOURCE.H 176
4.5 创建一个弹出菜单 181
4.6 小结 184
第五章 示例二:窗口的中继以及如何使用它们 185
5.1 有关中继的更详细内容 185
5.2 定义一个中继回叫 187
程序5-1.HOOKMAIN.CPP 187
程序5-2.HOOKCALL.CPP 188
程序5-3.HOOKCODE.CPP 190
程序5-4.SKELVARS.CPP 195
程序5-5.HOOKDEN.CPP 195
程序5-6.SKELETON.HPP 196
程序5-7.SKELPROT.HPP 197
程序5-8.SKELEXTN.HPP 198
程序5-9.HOOK.DEF 199
程序5-10.HOOK.MAK 200
5.3 设置中继函数 202
5.4 使用中继函数——它能做什么 203
5.5 多个中继:工作在链上 204
5.6 让它交谈:选择我们的消息 205
5.7 发声:一个动人的经历 207
5.8 动态链接及其原因 207
程序5-11.PLAYER.CPP 210
5.9 将所有合起来:畅述己见 210
程序5-12.PLAYER.H 212
程序5-13.MAINFRM.CPP 213
程序5-14.MAINFRM.H 214
程序5-15.PLAYEDOC.CPP 215
程序5-16.PLAYEDOC.H 217
程序5-17.PLAYEVW.CPP 218
程序5-18.PLAYEVW.H 219
程序5-19.STDAFX.CPP 220
程序5-20.STDAFX.H 220
程序5-21.HOOKPROT.HPP 221
程序5-23.PLAYER.RC 222
程序5-22.PLAYER.DEF 222
程序5-24.RESOURCE.MAK 227
程序5-25.PLAYER.MAK 227
第六章 示例三:一些深奥的问题 233
6.1 用户定义的信息(我们正在逐渐了解它…) 233
程序6-1.DSKLETON.C.PP 235
程序6-2.DSKLINIT.CPP 236
程序6-3.DSKLVARS.CPP 236
程序6-4.MESSAGE.CPP 237
程序6-5.SKELETON.HPP 240
程序6-6.SKELDFNS.CPP 240
程序6-7.MSGPROT.HPP 241
程序6-8.SKELEXTN.HPP 242
程序6-9.SKELINCS.HPP 242
程序6-10.SKELPROT.HPP 243
程序6-11.CPPRES.RC 244
程序6-12.CPPSTRNG.H 245
程序6-13.MESG DLL.DEF 245
程序6-14.SKELTON.RC 245
程序6-15.MESG DLL.MAK 246
6.2 病态,自我感染的应用程序 251
程序6-16.SKELETON.CPP 252
6.3 我能看一下源程序吗? 252
程序6-17.SKELINIT.CPP 258
程序6-18.SKELVARS.CPP 261
程序6-19.SKELETON.HPP 262
程序6-20.SKELDFNS.HPP 262
程序6-21.SKELEXTN.HPP 263
程序6-22.SKELINCS.HPP 263
程序6-23.SKELPROT.HPP 264
程序6-24.MSGPROT.HPP 265
程序6-25.CPPSTRNG.H 266
程序6-26.SICKNESS.DEF 266
程序6-27.SICKNESS.MAK 267
程序6-28.SKELETON.RC 269
6.4 小结 274
附录A Visual C++1.5版本 275
A.1 什么是新功能? 275
A.2 使用内部支持ODBC 276
程序A-1.ENROLDOC.H 276
程序A-2.ENROLDOC.CPP 277
程序A-3.ENROLL.H 279
程序A-4.ENROLL.CPP 280
程序A-5.ENROLSET.H 283
程序A-6.ENROLSET.CPP 284
程序A-7.ENROLVW.H 285
程序A-8.ENROLVW.CPP 286
程序A-9.MAINFRM.H 289
程序A-10.MAINFRM.CPP 290
程序A-11.RESOURCE.H 293
程序A-12.STDAFX.H 293
程序A-13.STDAFX.CPP 293
程序A-14.ENROLL.DEF 294
程序A-15.ENROLL.RC 294
程序A-16.ENROLL.MAK 300
程序A-17.ENROLL.CLW 304
词汇 315
磁盘的用法 319