目录 1
译者序 1
前言 1
第1章创建第一个应用程序: 1
学习使用VC++ 1
1.1审视VC++ 1
1.1.1 Visual C++是什么 2
1.1.2使用Visual C++ 2
1.2 NotePod项目:初步介绍 3
应用程序风格 4
1.3.1 AppWizard第一步:指定 4
1.3从AppWizard开始 4
1.3.2 AppWizard第二步: 5
数据库支持 5
1.3.3 AppWizard第三步: 6
OLE支持 6
1.3.4 AppWizard第四步: 6
更进一步的一些东西 6
1.3.5 AppWizard“中场休息”: 7
命名扩展名 7
1.3.7 AppWizard第六步: 8
具有视图的应用程序 8
最后的一些事情 8
1.3.6 AppWizard第五步: 8
1.4浏览该项目 10
1.4.1丰富的文件:FileView 11
1.4.2浏览类:ClassView窗口 11
1.4.3 ResourceView概览 12
1.5运行NotePod项目 13
1.5.1创建NotePod 13
1.5.2运行NotePod 14
1.6开始新的一切 15
1.6.1通过WizardBar简单了解 15
1.7这究竟是怎么回事 17
1.6.2意料之外的帮助 17
第2章Windows程序设计 19
2.1 DOS的问题 19
2.1.1用户界面的问题 19
2.1.2硬件相关性问题 20
2.1.3协作问题 20
2.2 Windows解决方案 20
2.2.1统一的用户界面 21
2.2.2 Windows的消息体系结构 21
2.2.3设备无关的输入/输出体系结构 21
2.2.4进程间的通信和协作 22
2.3最初的Windows程序设计: 22
API的使用 22
2.3.1事件驱动是指什么 22
2.3.2 Windows应用程序体系结构 24
2.3.3如何完成 25
2.3.4WinMain()函数 26
2.3.5 WndProc()函数内幕 29
2.3.6 Windows API程序设计小结 30
2.4 Windows程序设计:MFC 30
2.4.1何谓MFC 30
2.4.2类库与应用程序框架 30
2.4.3为什么使用MFC 31
2.4.4一个MFC小程序 31
2.5马上转向MFC 36
3.1资源和对话框 37
第3章建立一个简单的基于对话框 37
的应用程序 37
3.2启动对话框编辑器 41
3.2.1控件工具栏 41
3.2.2开始About对话框 42
3.3位图编辑器的使用 43
3.3.1添加新图标 44
3.3.2修改应用程序图标 45
3.4对话框编辑器 48
3.4.1组件的选取、重定义大小 49
以及移动 49
3.4.3处理静态文本 50
3.4.2 对话框工具栏介绍 50
3.4.4创建位图资源 54
3.4.5最后一个控件:组框(Groupbox) 55
3.5最后的检查 56
第4章对话框 58
4.1 FourUp应用程序的结构 58
4.1.1所需模块 58
4.1.2其他方面 59
4.1.3 FourUp家族 60
4.2应用程序对象 61
4.2.1 CFourUp.h 62
4.2.2 FourUp.cpp 65
4.3.1关于CWnd 69
4.2.3关于CWinApp 69
4.3窗口 69
4.3.2 CDialog类 70
4.3.3 CAboutDlg浏览 70
4.3.4遍历CFourUpDlg 71
4.4资源介绍 75
4.4.1资源描述和资源编译器 75
4.4.2图标资源 76
4.4.3关于位图资源 76
4.4.4 对话框资源 77
4.5小结 77
对话框 78
5.1努力方向 78
第5章控件和ClassWizard:实现你的 78
5.2对话框编辑器回顾 79
5.2.1添加牌张 79
5.2.2安排图标 81
5.2.3添加游戏区域 82
5.2.4添加标题区 82
5.2.5创建赔率表 82
5.2.6标识按钮 83
5.3编写代码 84
5.3.1事件计划 84
5.3.2手工编写代码:添加数据成员 85
5.4响应BN_CLICKED事件 86
5.4.1生成OnCancel()函数 86
5.4.2编写代码:完成OnCancel() 87
函数 87
5.5编写OnDealCards()函数 88
5.5.1 OnDealCards():初稿 88
5.5.2 ClassWizard和控件变量介绍 89
5.6编写代码:发牌、计算输赢 91
5.6.1创建Card变量 91
5.6.2创建Icon变量 91
5.6.3编写DealCards()成员函数 92
成员函数 94
5.6.4编写CalculateWinnings() 94
5.6.5最后一件事 95
5.7姑且一试 95
第6章理解控件 96
6.1 CWnd的简短说明 96
6.1.1窗口的构造 96
6.1.2 CWnd::Create()函数 97
6.1.3窗口风格一览 97
6.1.4创建子窗口 98
6.1.5有用的CWnd函数 99
6.2 CStatic再学习 100
6.2.1创建CStatic控件 100
6.2.2 CStatic控件的使用 102
6.2.3 CStatic成员函数 103
6.3 CButton家族 103
6.3.1创建CButton控件 104
6.3.2 CButton控件的使用 108
6.4小结 109
第7章用数字绘图:建立一个画图 110
应用程序 110
7.1 LineOne上的图形 110
7.1.1 LineOne项目 110
7.1.2建立项目骨架 110
7.1.3加入一些线 111
7.2 LineOne内部 112
7.2.2获取画布 113
7.2.1 OnPaint()是什么 113
7.2.3准备环境 114
7.2.4绘制直线 114
7.3 LineTwo应用程序 115
7.3.1建立LineTwo 115
7.3.2 LineTwo是如何工作的 116
7.3.3 LineTwo工作的缺陷 117
7.3.4用ClassWizard添加一个窗口 117
消息处理函数 117
7.4 Windows的图案绘制 118
7.5绘图工具 120
7.5.2库存画笔和画刷的使用 121
7.5.1库存画笔和画刷 121
7.6连续绘图 122
7.7 PaintItGray 124
7.8勇往无前 126
第8章图形和文本 127
8.1 Windows和GDI的内幕 127
8.2 CDC家族介绍 129
8.3 GDI的画图工具箱 130
8.3.1 CPen、颜色和其他CDC属性 131
8.3.2 GDI CBrush类 135
8.4 CDC绘画的模式 137
8.5创建你自己的屏幕保护程序 138
8.6下一步 141
9.1 PaintORama版本1 142
第9章建立一个交互式的绘画程序 142
9.1.1建立PaintORama 143
9.1.2添加成员变量 144
9.1.3初始化成员变量 145
9.1.4添加一个Clear按钮 147
9.1.5鼠标消息如何工作 148
9.1.6 WM_LBUTTONDOWN: 148
启动画图 148
9.1.7 WM_LBUTTONUP:画线结束 150
9.1.8 WM_MOUSEMOVE: 150
使所有像素排成一行 150
9.2 PaintORama版本2:改进画笔 151
9.2.1 Spin控件 152
9.2.2与代码建立联系 154
9.3预告 157
第10章第二代PaintORama 158
10.1 PaintORama版本3:颜色和风格 158
10.1.1增加多种颜色 158
10.1.2颜色选择:CColorDialog 158
10.1.3颜色框绘制 161
10.1.4单选按钮和画笔风格 162
10.2 PaintORama:线和外形 164
10.2.1小巧而精美的组合框 164
10.2.2线和外形 166
10.2.3橡皮圈的秘密 168
10.3.1制作列表 169
10.3 PaintORama:最终的版本 169
10.3.2编写画刷部分的代码 171
10.3.3添加画刷预览和颜色支持 173
10.4仍需改进 174
第11章建立文档和视图 175
11.1 PaintORama:WM_PAINT 175
的再次处理 175
11.1.1 PaintORama概览 176
11.1.2创建CMetaFileDC对象 176
11.1.3用CMetaFileDC进行记录 177
11.1.4回放图元文件 180
11.1.5小的补充 181
11.2 SDIOne:转向DocView 182
11.2.1建立第一个SDI应用程序 183
11.2.2在SDIOne中处理文档 184
11.2.3 SDIOne中的视图处理 187
11.3立竿见影 189
第12章DocView环境 191
12.1 DocView概述 191
12.1.1 DocView程序的类型 191
12.1.2 DocView的优点 192
12.2 DocView的组成 192
12.2.1应用程序类 193
12.2.2主窗口类 193
12.2.3文档类 194
12.2.4视图类 197
12.2.5权利和义务 198
12.3 CSDIOneApp的InitInstance() 198
12.3.1应用程序的建立 200
12.3.2连接各模块 202
12.3.3外壳 203
12.3.4命令行 203
12.3.5窗口处理 204
12.3.6 CSDIOneApp的消息映射 204
12.4下面学习什么 205
13.1名称中有什么 206
第13章MiniSketch应用程序 206
13.2往MiniSketch应用程序 209
中增加菜单 209
13.2.1添加菜单标题: 210
ClearDrawing 210
13.2.2使用菜单编辑器 210
13.2.3添加一个菜单项处理过程 212
13.2.4幕后:ClassWizard的机制 214
13.3处理画笔 215
13.3.1添加一个新菜单 215
13.3.2画笔颜色:添加对话框选项 216
13.3.3画笔宽度:添加级联式菜单 219
13.4下一步的工作 222
14.1命令UI 224
第14章菜单、工具栏和状态栏 224
14.1.1方法1:单独的UI处理函数 225
14.1.2方法2:多个宏,一个处理 226
函数 226
14.1.3方法3:使用ON_UPDATE_ 227
COMMAND_UI_RANGE 227
来代替 227
14.2加速键 227
14.3工具栏 229
14.3.1打开颜色设置框——一个命令 230
按钮式的工具栏按钮 230
按钮和工具栏按钮 232
14.3.2添加图形形状类按钮:单选框 232
14.4状态栏 235
14.4.1移去不期望的指示器 235
14.4.2添加自己的指示器 235
14.4.3添加一个画笔颜色指示器 238
14.5下一步的工作 243
第15章保存MiniSketch:操作文档 244
和文件 244
15.1 点和图形 244
15.1.1类和属性 245
15.1.2 Shape对象的行为 246
15.2定义Shape类 246
15.2.1创建类文件 246
15.2.2 Shape类定义 248
15.2.3 Line类定义 249
15.2.4 Squiggle类定义 249
15.2.5 FilledShape类定义 250
15.2.6Box和Oval类定义 251
15.3实现Shape类 252
15.4使用Shape类 254
15.5保存MiniSketch中的数据 256
15.6序列化 259
15.6.1 MFC序列化细节 260
15.6.2编写Serialize() 260
15.7还要查看哪些东西 262
16.1画刷颜色 263
第16章新的视野:翻滚和打印 263
16.2把文档和视图联系起来 265
16.2.1创建新的图形 265
16.2.2完成该图形的绘制 266
16.2.3橡皮圈 267
16.3绘制图形 268
16.3.1自我描绘图形 268
16.3.2处理Update() 270
16.3.3重新编写OnDraw() 270
16.4选择视图:映射模式 271
16.4.1 MM_TEXT映射模式 272
16.4.2设备无关性映射模式 272
中的映射模式 273
16.4.3调整MiniSketch应用程序 273
16.5翻滚视图 274
16.6打印和打印预览 276
16.6.1 MFC打印函数 276
16.6.2 MiniSketch应用程序例子 278
16.7谈谈一个崭新的话题 280
第17章软件重用:构造一个基于组件 281
的应用程序 281
17.1考察Gallery 282
17.2 WordZilla应用程序范例: 286
17.3增强WordZilla应用程序 290
17.3.1安装缺省字体 290
17.3.2设置一个新字体 291
17.3.3创建字符属性按钮 293
17.3.4创建段落属性按钮 294
17.4在对话框中应用ActiveX 297
第18章ActiveX和基于组件的 298
应用程序 298
18.1给WordZilla添加对话框 299
18.1.1画一个Select A Date对话框 299
18.1.2创建对话框类 301
18.1.3联系该对话框 302
18.2模态对话框是如何工作的 304
18.2.1构造一个对话框 305
18.2.3对话框的数据传输怎样实现 306
18.2.2显示一个对话框 306
18.2.4关闭对话框 307
18.2.5处理OK 307
18.3使用非模态对话框 308
18.3.1非模态对话框如何工作 308
18.3.2 WordZilla中的非模态对话框 308
18.4 ActiveX日期捕捉器 313
18.4.1添加ActiveX控件 313
18.4.2对话框编辑器中的ActiveX 314
控件 314
18.4.3 ActiveX控件、代码和 316
ClassWizard 316
18.5再谈谈ActiveX 318
18.4.4属性事件和方法 318
18.6接下来的工作:操作存储空间 320
第19章创建数据库查寻和更新 321
应用程序 321
19.1获得一些数据 321
19.2使用ODBC的非编码记录 322
19.2.1步骤1:创建一个数据源名称 323
19.2.2步骤2:使用AppWizard创建一个ODBC应用程序 325
19.2.3步骤3:创建你的表单 326
19.2.4步骤4:联系各部分 328
19.3往OBos中添加代码 329
19.3.1添加一个记录过滤器 330
19.3.2添加和删除记录 331
19.4使用DAO 335
19.4.1创建一个CDaoRecordView 336
应用程序 336
19.4.2改进DBos应用程序 338
19.5使用OLE DB 341
19.6下一步:ActiveX和简便之途 342
第20章关系数据库 343
20.1什么是关系数据? 343
20.1.1设计图解 343
20.1.2关键字概念 344
20.2.1 DBExplore例子 345
20.2使用DAO查看数据库 345
20.2.2在OnFileOpen()中使用 348
DAO类 348
20.2.3探究其他的对象 349
20.3关系数据库:SQL 352
20.3.1 SELECT命令 352
20.3.2选择域 352
20.3.3选择行:使用Where子句 353
20.3.4谓词This 353
20.4 ActiveX数据库控件 355
20.5往DBExplore中添加ActiveX 356
20.5.1步骤1:添加ActiveX数据控件 356
20.5.2步骤2:往主表单添加组件 358
20.5.3步骤3:创建查询结果对话框 360
20.5.4步骤4:激活查询按钮 361
20.5.5工作原理的简单说明 363
20.6下一步:Web 364
第21章网络编程:浏览器和其他 365
客户程序 365
21.1 HTMLView 365
21.2提供Bowser缺省主页 367
21.2.1主页源代码 367
21.2.2理解HTML语言 370
21.2.3帮助Bowser找到主页 371
21.3 Visual C++新功能:HTML资源 372
21.3.1引入Bowser.html文件 373
21.3.2引入图形文件 374
21.3.3使用res:协议 375
21.4开发导航工具 376
21.4.1创建工具栏 376
21.4.2添加代码 379
21.4.3处理Open对话框 381
21.5使用WinInet类 383
21.5.1 WinInet是什么 384
21.5.2简单的WinInet应用程序 384
21.5.3 WinInet其他功能 386
21.6保存自己的Bowser 386
21.7再见 388