目 录 3
第一周学习概览 3
第1天初次尝试 3
1.1一般介绍 3
1.2如何使用本书 4
1.3你的第一个C++Windows程序 5
1.4什么是WINDOWS.H 9
1.5什么是WinMain 10
1.7你需要多少硬件 11
1.6GUI的尴尬 11
1.8编译器 13
1.9编码风格和其它重要问题 13
1.10什么是Windows 14
1.11关于API 14
1.12 32位的内涵是什么 15
1.13走出云雾 17
1.14展望 18
1.15小结 18
1.17.1测验 19
1.16问答 19
1.17作业 19
1.17.2练习 20
第2天建立项目,创建窗口 21
2.1声音 21
2.2DEF文件和可视元素 25
2.3编译和连接概述 29
2.4项目文件和模块定义文件 29
2.5Microsoft构造文件 30
2.6Borland构造文件 31
2.7模块定义文件 33
2.8建立窗口 36
2.9小结 40
2.10问答 40
2.11作业 41
2.11.1测验 41
2.11.2练习 41
第3天一个标准的Windows程序 42
3.1第一个能工作的GUI 42
3.2苹果与橘子和Windows与DOS 48
3.3进入程序 49
3.4从概念上理解WinMain和WndProc 50
3.5调用WinMain 52
3.6关于WINDOWS.H 55
3.7注册 56
3.8创建窗口 60
3.9循环往复 62
3.10窗口过程 63
3.13作业 65
3.12问答 65
3.11小结 65
3.13.1测验 66
3.13.2练习 66
第4天消息、WINDOWSX和显示正文 67
4.1什么是消息 67
4.2你的第二个完整的Windows程序 68
4.3 Switch语句、WINDOWSX和消息处理器 75
4.4宏HANDLE_MSG 79
4.5WINDOWSX和缺省窗口过程 80
4.6消息处理器小结 81
4.7显示正文 82
4.8BeginPaint,EndPaint和设备描述表 82
4.9 TextOut和DrawText 85
4.10小结 86
4.11问答 87
4.12作业 87
4.12.1测验 87
4.12.2练习 88
5.1报告鼠标和键盘事件的程序 89
第5天鼠标和键盘 89
5.2在WM_PAINT处理函数之外进行 98
输出操作 98
5.3利用WM_KEYDOWN消息来监测 100
按键 100
5.4系统键 103
5.5WM_MOUSEMOVE消息 104
5.6处理鼠标键选择和双击 107
5.7小结 108
5.9作业 109
5.9.1测验 109
5.8问答 109
5.9.2练习 110
第6天资源初步 111
6.1什么是资源 111
6.2资源脚本 113
6.3 Emerson程序第一部分 113
6.4准备开始 121
6.5使用资源编译器 122
6.6创建简单的菜单 123
6.7设计菜单 125
6.8给EMERSON.CPP增加图标和光标 128
6.9自定义资源 130
6.10再论自定义资源 131
6.11小结 132
6.12问答 133
6.13作业 133
6.13.1测验 133
6.13.2练习 134
7.1 Emerosn2 135
第7天高级资源位图与对话框 135
7.2这些文件都是干什么用的 148
7.3创建对话框 149
7.4弹出对话框 151
7.5关于MakeProcInstance 152
7.6DialogBox与AboutDlgProc 153
7.7 BMP的创建 155
7.8 Emerson程序显示位图 155
7.9字符串表 158
7.10滚动条 160
7.11小结 162
7.12问答 163
7.13作业 164
7.13.1测验 164
7.13.2练习 164
第一周复习 165
第二周学习概览 176
第8天Snako程序第一版 176
8.1作为奖励的程序 176
8.2子窗口 193
8.3 Grunt模块 196
8.4计时器 197
8.5显示Snake程序中的蛇 199
8.6小结 200
8.7问答 200
8.8作业 201
8.8.1测验 201
8.8.2练习 201
第9天字体基础 202
9.1给PC配备字体 202
9.2简单的字体程序 203
9.3开始学习字体 214
9.4逻辑字体部分 215
9.5旋转字体 217
9.6创建字体 218
9.7备用字体Stock Fonts 219
9.8协调WM_PAINT消息 221
9.9 GetTextMetrics与FontStr模块 223
9.10小结 225
9.12.1测验 226
9.12作业 226
9.11问答 226
9.12.2练习 227
第10天窗口控制 228
10.1理解控制和消息 228
10.2字体显示 229
10.3静态控制 241
10.4列表框 244
10.5复选框 245
10.6编辑控制 247
10.8问答 249
10.7小结 249
10.9作业 250
10.9.1测验 250
10.9.2练习 250
第11天 各种控制通信,使用EnumFontFamilies回调函数 251
11.1WM_STARTFON7S的简史 251
11.2收发邮件 252
11.3 SendMessage和PostMessage 253
11.4枚举系统字体 255
11.4.1回调函数 258
11.5与列表框通信 259
11.6显示字体 261
11.7回到EnumFontFamilies 263
11.8运用复选框 264
11.9再次强调重点步骤 265
11.10回到ShowTheFont 266
11.11小结 267
11.12问答 267
11.13.2练习 268
11.13.1测验 268
11.13作业 268
第12天窗口控制和控制消息API 269
12.1建立一个Windows外壳程序 269
12.2程序代码 271
12.3建立单选按钮 286
12.4 IsDialogMessage和控制间的跳转 288
12.5使用单选按钮进行方式转换 290
12.6按下你的鼠标右键 291
12.8小结 293
12.7WM_PARENTNOTIFY消息 293
12.9问答 294
12.10作业 294
12.10.1测验 294
12.10.2练习 294
第13天划分窗口控制子类 296
13.1使用下压式按钮 296
13.2限制窗口的尺寸 299
13.3目录魔术 300
13.4改变驱动器和目录 303
13.5介绍划分窗口控制子类 305
13.6子类控制:一个特例 306
13.7奖励程序为Windows桌面划分子类 309
13.8 MenuAid简介 319
13.9使用初始化文件 319
13.10动态菜单 322
13.11小结 323
13.12问答 323
13.13.1测验 324
13.13.2练习 324
13.13作业 324
第14天窗口风格 325
14.1设置窗口风格 325
14.2建立子窗口 327
14.3设计具有多种风格的窗口需要多种类 342
14.4背景简介 344
14.5改变刷子 346
14.6使用cbWndExtra字节 348
14.8问答 349
14.7小结 349
14.9作业 350
14.9.1测验 350
14.9.2练习 350
第二周复习 351
第三周学习概览 367
第15天对话框与映像模式 367
15.1协调坐标 367
15.2GDI和设备坐标 370
15.4高级映像概念 371
15.3什么是GDI 371
15.5暂停 372
15.6对话框:概述与回顾 389
15.7理解模态与非模态对话框 391
15.8编制模态对话框和非模态对话框 391
15.9小结 395
15.10问答 395
15.11作业 395
15.11.1测验 396
15.11.2练习 396
16.1在Size对话框中设置数据 397
第16天高级对话框获取与设置数据 397
16.2显示数据 399
16.3理论:模态对话框与父窗口进行对话 401
16.4实践:从Make Shape对话框中取数据 402
16.5对映像模式改变做出响应 404
16.6控制对话框的颜色 405
16.7 Mapper程序 406
16.8从程序员的角度观察Mapper程序 424
16.9新的内容:StretchBlt 425
16.12.1测验 427
16.12作业 427
16.11问答 427
16.10小结 427
16.12.2练习 428
第17天深入讨论菜单与图标 429
17.1菜单上有什么 429
17.2 MenuTest程序 433
17.3再谈菜单 448
17.4在菜单中放置位图 448
17.5修改系统菜单 452
17.6在菜单项前设置选中标记 454
17.7选择新光标 454
17.8高级图标 456
17.9加速器简述 458
17.10小结 459
17.11问答 460
17.12作业 460
17.12.1测验 460
17.12.2练习 461
18.1形状处理 462
第18天GDI与图元文件 462
18.2一个象征绘图程序 465
18.3后续内容预告 487
18.4橡皮筋技术 487
18.5什么是图元文件 490
18.6交互式创建图元文件 493
18.7使Metaphor成为实用程序 494
18.8从磁盘读取图元文件 496
18.9公用对话框 496
18.10小结 499
18.12作业 500
18.11问答 500
18.12.1测验 501
18.12.2练习 501
第19天MDI:多文档界面 502
19.1什么是MDI 502
19.2创建子窗口 529
19.3改变MDI子窗口的风格 531
19.4必须转发的特殊MDI消息 532
19.5专用于MDI应用程序的消息 533
19.6处理MDI菜单 535
19.7关闭窗口 537
19.8附加空间与共享CPU 539
19.9 Isotropic与AnIsotropic问题 540
19.10小结 542
19.11问答 543
19.12作业 543
19.12.1测验 543
19.12.2练习 544
第20天多媒体 545
20.1给多媒体下定义 545
20.2集中焦点 546
20.3熟悉MCI 548
20.4 Harmony程序 549
20.5启动 587
20.6总体MCI策略 588
20.7细节 589
20.8介绍DLL 591
20.9从DLL输出函数 591
20.10 DLL和内存 592
20.11揭开DLL的面纱 593
20.12对话框窗口 594
20.13小结 595
20.14问答 596
20.15作业 596
20.15.1测验 596
20.15.2练习 597
第21天Windows下的Snako程序 598
21.1 Snako程序 598
21.2源代码 599
21.3战略回顾 637
21.4使用指针 638
21.5文件I/O 642
21.6动态对话框和使对话框居中 643
21.7反思:Snako是不是一个真正的Windows程序 645
21.8小结 645
21.9问答 646
21.10作业 646
21.10.1测验 646
21.10.2练习 647
第三周复习 648
附录测验答案 673