《MFC Visual C++6 编程技术内幕》PDF下载

  • 购买积分:21 如何计算积分?
  • 作  者:(美)厄拉森(Eugene Olafsen)等著;王建华等译
  • 出 版 社:北京:机械工业出版社
  • 出版年份:2000
  • ISBN:7111077296
  • 页数:790 页
图书介绍:本书是讲述用VisualC++进行MFC编程的专著,内容包括MFC编程的基本概念、MFC的基本结构、使用MFC进行Windows应用程序和数据库的编程、网络编程的基本方法,深入浅出、细致周到,可供中高级编程人员参考。附带光盘包括了本书所有实例的源代码,可以用于实际编程。

第一部分 MFC概述 1

第1章 MFC的结构 1

1.1 MFC的发展简史 1

1.2 MFC类的层次结构 4

1.2.1 CObject 4

1.2.2 CCmdTarget 8

1.2.3 CWinThread 11

1.2.4 CWinApp 14

1.2.5 CWnd 18

1.2.6 CFrameWnd 23

1.2.7 CView 24

1.2.8 CDocument 25

1.3 小结 27

第2章 MFC对话框、控件和数据的交互操作 29

2.1 创建应用程序 29

2.1.1 启动和使用MFC AppWizard 29

2.1.2 AppWizard生成的代码 31

2.2 修改应用程序 33

2.2.1 添加对话框控件 33

2.2.2 添加初始化信息 38

2.2.3 使用对话框控件 39

2.3 工具提示 40

2.3.1 激活工具提示 41

2.3.2 显示工具提示文本 41

2.4 对话框数据交换 42

2.4.1 标准DDX 42

2.4.2 UpdateData 42

2.5 使用标准对话框 43

2.5.1 文件打开/保存对话框 43

2.5.2 颜色选择对话框 43

2.5.4 打印配置对话框 44

2.5.3 字体选择对话框 44

2.6 小结 45

第3章 Windows的常用控件 46

3.1 常用控件的初始化和用法 46

3.2 用于Windows常用控件的通知 47

3.2.1 通知消息的结构 47

3.2.2 通知进程概述 48

3.2.3 更好的通知消息处理方案 48

3.2.4 用ON_NOTIFY_RANGE设定通知范围 49

3.3 热键控件:CHotKeyCtrl类 49

3.3.2 创建CHotKeyCtrl对象并对它进行初始化 50

3.3.3 使用热键控件 50

3.3.1 CHotKeyCtrl类的方法 50

3.4 微调控件:CSpinButtonCtrl类 51

3.4.1 微调控件的样式 52

3.4.2 CSpinButtonCrtl消息 52

3.4.3 CSpinButtonCtrl类的方法 52

3.4.4 创建微控件并对它初始化 53

3.4.5 示例程序:SPIN 1 53

3.5 滑块控件:CSliderCtrl 56

3.5.1 滑块控件的样式 56

3.5.2 CSliderCtrl消息 57

3.5.3 CSliderCtrl类的方法 58

3.5.4 创建滑块控件并对它进行初始化 59

3.5.5 滑块控件的示例程序SLIDER1 60

3.5.6 示例程序SLIDER1 61

3.6 进度栏控件:CProgressCtrl类 63

3.6.1 CProgressCtrl类的方法 63

3.6.2 创建CProgressCtrl对象并对它初始化 64

3.6.3 使用进度栏控件 64

3.7 图形列表:CImageList类 65

3.7.1 CImageList类的方法 65

3.7.2 创建CImageList控件并对它初始化 66

3.8 列表视图控件:CListCtrl类 67

3.8.1 列表视图控件的样式 68

3.8.2 图形列表与列表视图控件 69

3.9 列表视图项目和子项目 69

3.9.1 列表视图通知消息 70

3.9.2 创建CListCtrl对象并对它进行初始化 71

3.9.3 使用列表视图控件 71

3.10 树状视图控件: CTreeCtrl类 73

3.10.1 树状视图控件的样式 73

3.10.2 树状视图通知消息 74

3.10.3 CTreeCtrl类的方法 74

3.10.4 创建树状视图控件并对它进行初始化 75

3.10.5 使用CTreeCtrl对象 76

3.10.6 示例程序TREELIST.EXE 76

3.11 选项卡控件: CTabCtrl类 77

3.11.1 选项卡控件的样式 77

3.11.2 选项卡控件的通知消息 78

3.11.3 CTabCtrl类的方法 78

3.11.4 选项卡项目的代码结构 79

3.11.5 创建选项卡控件 79

3.11.6 使用选项卡控件 80

3.12 动画控件:CAnimateCtrl类 81

3.12.3 CAnimateCtrl类的方法 82

3.12.2 动画控件的通知消息 82

3.12.1 动画控件的样式 82

3.12.4 创建动画控件 83

3.12.5 使用动画控件 83

3.13 多信息文本编辑控件:CRichEditCtrl类 83

3.13.1 多信息文本编辑控件的窗口样式 85

3.13.2 字符格式的结构 85

3.13.3 段落格式的结构 86

3.13.4 CRichEditCtrl类的方法 87

3.13.6 CRichEditCtrl的文本选定方法 88

3.13.7 CRichEditCtrl的文本格式化方法 88

3.13.5 CRichEditCtrl与文本相关的方法 88

3.13.8 CRichEditCtrl的编辑方法 89

3.13.9 CRichEditCtrl的剪贴板方法 89

3.13.10 CRichEditCtrl的通用方法 89

3.13.11 创建多动能编辑控件 90

3.13.12 使用多信息文本编辑控件 90

3.14 小结 91

第4章 画图、设备环境、位图与字体 92

4.1 设备环境 92

4.2 图形设备界面 92

4.3 MFC设备环境的类 93

4.3.1 基类CDC 94

4.3.2 使用CPaintDC类进行绘图 95

4.3.3 用CClientDC类管理客户程序区域 97

4.3.4 用CWindowDC类管理图文框窗口 98

4.4 Windows的图形对象 99

4.4.1 画笔:CPen类 100

4.4.2 画刷:CBrush类 101

4.4.3 字体:CFont类 102

4.4.4 位图:CBitmap类 102

4.4.5 调色板:Cpalette类 102

4.4.6 区域:CRgn类 102

4.5 GDI坐标系 103

4.6 矢量图形 104

4.6.1 绘图模式 105

4.6.2 线条与折线 107

4.6.3 矩形 110

4.6.4 区域 112

4.6.5 多边形 113

4.6.6 椭圆 113

4.6.7 贝济埃曲线 115

4.7 字体与文本 117

4.7.1 字体特征 117

4.7.2 TEXTMETRIC结构 118

4.7.3 LOGFONT结构 120

4.7.4 创建字体 121

4.7.5 绘制文本 123

4.8 示例程序:矢量图形和文本方法 124

4.9 光栅图形 125

4.9.1 有名的光栅操作 125

4.9.2 位图 125

4.9.3 随设备而定的位图 126

4.9.4 不受设备限制的位图 127

4.9.5 CBitmap类 127

4.9.6 传送和伸展位图 128

4.10 位图资源 129

4.10.1 资源附加给可执行文件 129

4.10.2 从可执行文件中获取图形资源 130

4.11 示例程序:介绍位图资源 131

4.12 小结 134

第5章 创建自定义控件 136

5.1 Windows类与C++类 136

5.2 用于核实信息的编辑控件 137

5.3 时钟静态控件 138

5.3.1 控件的规格 139

5.3.2 画钟面 140

5.3.3 确定指针的位置 141

5.3.4 画指针 142

5.3.5 设置时间 143

5.3.6 建立标准控件的子类时出现的问题 144

5.4 超级链接控件 144

5.4.1 实现方法 146

5.4.2 字体的处理 147

5.4.3 画窗口 148

5.4.4 控制光标 149

5.4.5 鼠标输入 150

5.4.6 键盘输入 152

5.4.7 运行超级链接 153

5.5 高级自定义控件 154

5.5.1 建立子类时的局限性 154

5.5.2 通知消息 155

5.5.3 将资源编辑器用于自定义类 156

5.6 小结 156

第6章 MFC应用程序对象、消息的传送和空闲处理 157

6.1 MFC应用程序对象 157

6.1.1 CWinApp和应用程序的寿命 158

6.1.2 CWinApp数据成员 159

6.1.4 InitInstance--特定应用程序的初始化 162

6.1.3 CWinApp的成员函数 162

6.1.6 对OLE容器的支持 165

6.1.7 Windows NT 3.5的3D外观 165

6.1.5 InitInstance中的函数 165

6.1.8 注册表的使用 166

6.1.9 最近使用的文件列表 166

6.1.10 SDI和MDI文档/视图 166

6.1.11 创建主图文框窗口 167

6.1.12 支持Automation 167

6.1.13 支持多信息文本编辑控件 168

6.1.14 命令行的处理 168

6.2.1 消息传送 169

6.2 消息传送、消息表和消息类别 169

6.2.2 消息表 171

6.3 空闲处理 173

6.3.1 OnIdle 173

6.3.2 为对话框进行空闲处理 175

6.4 闪现屏幕组件 176

6.5 小结 177

第二部分 文档、视图和使用它们的应用程序 179

第7章 文档/视图的结构 179

7.1 文档、图文框和视图 179

7.2 创建新文档 181

7.2.1 打开新文件 183

7.2.2 单个文档模板与多个文档模板 185

7.3 视图 185

7.3.1 CView类 185

7.3.2 CScrollView类 185

7.3.3 CFormView类 186

7.3.4 数据库视图类 186

7.3.5 控件视图 186

7.3.6 改变SDI中的视图 189

7.3.7 使用MDI 193

7.4 小结 195

第8章 扩展用户界面 196

8.1 响应用户的输入 196

8.1.1 键盘消息 196

8.1.2 处理键盘消息 197

8.1.3 鼠标消息 198

8.1.4 处理鼠标消息 200

8.2 用户界面与App Wizard 201

8.3 扩展菜单 202

8.3.1 获取菜单和弹出式菜单 202

8.3.2 增加菜单项 202

8.3.3 使用浮动的弹出式菜单 203

8.4 将控件栏投入使用 204

8.4.1 使用工具栏和复合工具栏 205

8.4.2 使用状态栏 208

8.4.3 显示和隐藏控件栏 209

8.4.4 支持工具提示 210

8.5 更新用户界面 211

8.6 属性表和向导 212

8.6.1 MFC对属性表和向导的支持特性 213

8.6.2 创建简单的向导 215

8.7 分割视图 223

8.8 小结 224

第9章 打印 225

9.1 打印的基本概念 225

9.2 用MFC进行打印 225

9.2.1 在视图中打印 226

9.2.2 CPrintInfo对象 227

9.2.3 打印菜单命令 228

9.3 打印与GDI映像模式 229

9.4 所见即所得的打印方式 230

9.4.1 应用程序的资源 230

9.4.3 视图类 232

9.4.2 应用程序类 232

9.5 文档的分页 236

9.5.1 在页数已知的情况下打印文档 236

9.5.2 在页数未知的情况下打印文档 237

9.5.3 打印页号 238

9.6 停止和取消打印作业 239

9.6.1 用OnPrepareDC()函数停止打印作业 239

9.6.2 用OnPrint()函数停止打印作业 240

9.7 小结 240

10.1 发展历史 241

第10章 COM 241

第三部分 MFC和COM编程 241

10.2 接口、对象与方法 242

10.2.1 一些术语的说明 242

10.2.2 介绍一个实际的例子 243

10.2.3 IUnknown接口 243

10.3 服务程序、客户程序与类 246

10.4 COM运行期的环境 247

10.4.1 定义类工厂 247

10.4.2 COM对象如何重复使用 248

10.5 排列与线程 248

10.5.1 排列 249

10.5.2 线程 250

10.6 COM、OLE和自动化 251

10.6.1 IDispatch 251

10.6.2 自动化服务程序、对象和控制程序 253

10.6.3 同时支持IDispatch和IUnknown 253

10.7 永久性COM数据 253

10.8 标识COM数据 255

10.9 传送数据 255

10.9.1 统一数据传送 256

10.9.2 可连接的对象 256

10.10.1 对象的创建 257

10.10 DCOM 257

10.10.2 调用方法 259

10.10.3 安全问题 260

10.11 一些重要的信息 260

10.11.1 BSTR 260

10.11.2 SAFEARRAY 261

10.11.3 HRESULT 261

10.11.4 VARIANT 262

10.12 其他参考书目 262

10.13 小结 262

11.1.1 应用程序寿命的控制 263

11.1 了解Afx全局函数 263

第11章 COM和MFC 263

11.1.2 客户程序控件的管理 266

11.1.3 连接点的管理 266

11.1.4 控件的注册 268

11.1.5 异常情况 269

11.1.6 初始化 269

11.1.7 许可权 270

11.1.8 类型信息 270

11.2.1 类工厂 271

11.2.2 客户程序/容器常用的命令 271

11.2 关于OLE宏 271

11.2.3 控件属性的持久性 272

11.2.4 对话框数据交换 273

11.2.5 调度表 274

11.2.6 事件表 275

11.2.7 属性页数据表 278

11.2.8 属性页 278

11.2.9 类型库的访问 279

11.3 MFC和OLE类的类别 279

11.3.1 活动文档 279

11.3.2 自动化 280

11.3.3 OLE的常用对话框 281

11.3.4 容器 282

11.3.5 控件 284

11.3.6 拖曳和放置 285

11.3.7 文档服务程序 286

11.3.8 支持 287

11.4 小结 288

第12章 MFC OLE服务程序 289

12.1 文档服务程序 289

12.2 服务程序的类型 289

12.2.4 小型服务程序 290

12.3 文档服务程序的设计 290

12.2.2 活动文档 290

12.2.3 容器/服务程序 290

12.2.1 完整的服务程序 290

12.3.1 OLE文档 291

12.3.2 活动文档 294

12.4 建立一个活动文档服务程序 298

12.4.1 一致性 298

12.4.2显示视图 299

12.5 自动化服务程序 300

12.6 IDispatch 301

12.7 ODL中的IDispatch派生接口 302

12.8.1 GetIDsOfNames 303

12.8 通过IDispatch调用方法 303

12.8.2 类型信息的方法 304

12.8.3 Invoke 304

12.9 调度接口与普通接口不同 304

12.10 通过IDispatch访问C++中的自动化服务程序 305

12.11 双重接口 305

12.12 变码 306

12.13 使用MFC的自动化服务程序 308

12.13.1 服务程序的类型 308

12.13.3 添加方法和属性 311

12.13.2 声明和定义更多的调度接口 311

12.14 小结 313

第13章 MFC OLE客户程序 314

13.1 IDispatch和它在自动化中的作用 314

13.2 自动化服务程序的接口定义 314

13.2.1 IDL与ATL 315

13.2.2 ODL与MFC 316

13.2.3 双重接口 317

13.3 MFC与自动化 318

13.3.1 控制器 318

13.3.2 连接到服务程序 319

13.4 创建控制器 321

13.4.1 使用COleDispatchDriver 321

13.3.3 服务程序的回顾 321

13.4.2 使用# import 325

13.4.3 远程自动化 332

13.5 小结 335

第14章 MFC ActiveX控件 336

14.1 开发策略 336

14.1.1 MFC 336

14.1.3 MFC与ATL 337

14.1.2 ATL 337

14.2 控件开发 338

14.3 控件的两个方面 340

14.3.1 运行时 340

14.3.2 设计时 340

14.4 建立控件的子类 340

14.4.1 MFC 340

14.4.2 ATL 341

14.5 组件类别 341

14.6.1 属性 342

14.6 方法、属性和事件 342

14.5.2 ICatInformation 342

14.5.1 ICatRegister 342

14.6.2 方法 344

14.6.3 事件 344

14.7 属性页 346

14.8 组件注册 347

14.9 COM对象子关键字 348

14.10 建立一个MFC控件 349

14.11 接口定义 351

14.12 一个快速ATL移植 358

14.13 小结 362

第15章 MFC ActiveX控件容器 363

15.1 活动文档容器 363

15.1.1 存储区 364

15.1.2 现场对象 365

15.1.3 原地激活 365

15.1.4 文档扩展 367

15.1.5 建立最简单的活动文档容器 367

15.2 OLE控件 368

15.2.1 对已有项目添加包容 369

15.2.2 ActiveX容器 369

15.2.3 控件包容和事件 375

15.3 小结 380

第16章 使用MFC和ATL 381

16.1 什么是ATL,为什么ATL在MFC编程中很重要 381

16.2 对MFC应用程序有帮助的ATL COM支持 381

16.2.1 COM指针 381

16.2.2 其他ATL COM支持 383

16.3 对MFC应用程序的高级ATL支持 390

16.3.1 开始做MFC应用程序 390

16.3.2 添加所需要的ATL支持 390

16.3.3 自动建立ATL COM支持代码 391

16.3.4 检查添加到MFC应用程序中的ATL代码 394

16.3.5 添加另外的ATL COM支撑文件 400

16.3.6 修改项目设置 401

16.3.7 建立客户端应用程序 401

16.4 小结 403

第17章 用脚本语言编写MFC程序 404

17.1 脚本编程基础 404

17.1.1 脚本编程接口 405

17.1.2 对偶接口 409

17.2 对象模型 411

17.3 实现一个脚本编程的程序 412

17.4 小结 421

18.1 关系数据库概念 423

第四部分 MFC数据库编程 423

第18章 MFC数据库处理 423

18.2 存储和检索数据 425

18.3 数据库通信机制 427

18.4 ODBC/MFC 428

18.4.1 CDatabase 428

18.4.2 CRecordset 429

18.5 DAO 436

18.5.1 CDaoWorkspace 436

18.5.2 CDaoDatabase 437

18.5.4 CDaoTableDef 438

18.5.3 CDaoRecordset 438

18.5.5 CDaoQueryDef 439

18.6 小结 440

第19章 高级数据库支持 441

19.1 数据存取的COM途径 441

19.2 OLE DB消费者使用ATL包装类 441

19.2.1 CDataSource 445

19.2.2 CSession 446

19.2.3 存取器 447

19.2.4 行集 451

19.2.5 存取数据源的数据 454

19.3 使用ADO C++接口 456

19.3.1 ADOConnection 461

19.3.2 错误 463

19.3.3 ADORecordset 463

19.3.4 ADOCommand 465

19.3.5 ADOField 467

19.3.6 ADOProperty 468

19.3.7 ADOParameter 468

19.3.8 ADOError 469

19.4 小结 469

20.1 字符串和字符串类 471

20.1.1 CString类内情 471

第20章 字符串和集合 471

第五部分 MFC实用程序类 471

20.1.2 字符串分配 472

20.1.3 某些CString函数 474

20.1.4 CString实际用法 476

20.1.5 CString小结 478

20.2 集合 478

20.2.1 集合类内情 478

20.2.2 模板化集合 483

20.3 UNL_MultiEd应用程序 484

20.5 总结 488

20.4 一种STL方法 488

第21章 文件输入输出和MFC 489

21.1 CFile类 489

21.2 CFile类内情 491

21.2.1 CStdioFile类 494

21.2.2 CMemFile类 496

21.2.3 CSharedFile类 497

21.3 CFileDialog类 497

21.4 用户定义的CFileDialog类 499

21.5.1 打开文件 500

21.5 CFile和CFileDialog的实际使用 500

21.5.2 从文件中读数据 502

21.6 一种传统的途径 504

21.7 小结 505

第22章 异常处理技术 506

22.1 异常处理的用法 506

22.2 异常的类型 509

22.3 结构化异常处理程序 509

22.4 嵌套环境中的结构化异常处理 510

22.5 引发结构化异常 511

22.6 异常产生后的清理 512

22.7 C++异常处理 513

22.8 定义C++异常类 515

22.9 MFC异常处理 517

22.10 派生自己的与MFC兼容的异常对象 523

22.11 删除异常 525

22.12 使用MFC异常宏 525

22.13 混合使用异常处理技术 526

22.14 小结 527

第23章 MFC和DHTML 529

23.1 DHTML、MSIE和因特网 529

第六部分 MFC和 Web 529

23.2 使用IE Web ActiveX控件 530

23.2.1 IE ActiveX控件基础 530

23.2.2 在对话框中使用IE ActiveX控件 536

23.3 使用DHTML 536

23.3.1 DHTML对象模型 539

23.3.2 DHTML COM接口 542

23.4 小结 551

第24章 CSocket程序设计 552

24.1 网络通信如何进行 552

24.2 Winsock和MFC 553

24.2.2 创建一个Socket 554

24.2.1 Winsock环境的初始化 554

24.2.3 打开连接 555

24.2.4 发送和接收消息 556

24.2.5 关闭连接 557

24.2.6 Socket事件 558

24.2.7 事件激发的控制 558

24.2.8 检测错误 559

24.2.9 获取Socket信息 559

24.2.10 Socket和I/O串行化 562

24.3 建立联网的应用程序 562

24.3.1 建立应用程序外壳 562

24.3.2 视窗布局和启动功能 563

24.3.3 CAsyncSocket类的继承 565

24.3.4 连接应用程序 567

24.3.5 发送和接收 569

24.3.6 终止连接 571

24.4 小结 572

第25章 WinInet程序设计 573

25.1 Web应用协议和WinInet 573

25.1.1 超文本传输协议 573

25.1.2 文件传输协议 573

25.1.3 Gopher协议 574

25.2.1 CInternetSession 575

25.1.4 WinInet API和MFC 575

25.2因特网会话基础 575

25.2.2 CInternetFile 581

25.2.3 CIntenetException 582

25.2.4 CInternetConnection 582

25.2.5 生成一个简单的WinInet应用程序 583

25.3 应用程序级功能 588

25.3.1 HTTP类 589

25.3.2 FTP类 592

25.3.3 Gopher 595

25.3.4 生成一个简单的FTP客户程序 597

25.4 小结 603

第26章 ISAPI扩展 604

26.1 基础 604

26.2 由此及彼 616

26.3 从GET到POST 619

26.4 添加一些窗体元素 620

26.4.1 修改窗体 621

26.4.2 修改分析图 621

26.4.3 声明和使用处理函数 621

26.4.4 添加单选组 622

26.5.1 修改窗体 625

26.5 其他窗体输入元素 625

26.5.3 修改处理函数 626

26.5.2 修改分析图 626

26.6 小结 627

第27章 MAPI和MFC 628

27.1 通信应用程序接口 628

27.2 两个高级选择:简单MAPI和CMC 628

27.2.1 简单MAPI 629

27.2.2 公共消息转发调用 629

27.2.3 MapiMessage结构 630

27.4 CDocument连接 631

27.4.1 以MFC方法实现MAPI 631

27.2.4 MapiFileDesc结构 631

27.3 MFC提供的受限的MAPI功能 631

27.4.2 CDocument::OnFileSendMail()方法 632

27.5 实例程序:MAPI 1.EXE 636

27.6 小结 638

第28章 TAPI和MFC 639

28.1 概述 639

28.2 TAPI发展简史 643

28.3 使用辅助电话 646

28.4.1 配置TAPI 647

28.4 使用基本电话服务 647

28.4.2 连接TAPI 654

28.4.3 用TAPI传输数据 657

28.4.4 用TAPI断开连接 658

28.4.5 结束TAPI会话 659

28.5 小结 659

第七部分 MFC与图形编程 661

第29章 MFC和OpenGL 661

29.1 OpenGL是什么 661

29.2.1 核心术语和关键概念 662

29.2 图形基本知识 662

29.2.2 图形程序设计的数学基础 663

29.3 OpenGL基础 665

29.3.1 OpenGL数据类型 666

29.3.2 OpenGL函数命名约定 666

29.3.3 OpenGL渲染函数范围 667

29.3.4 OpenGL矩阵栈 668

29.3.5 OpenGL渲染描述表 669

29.4 最小OpenGL程序和自定义 671

29.4.1 生成基本MFC应用程序 671

29.4.2 添加自定义OpenGL基类 672

29.4.4 生成3维场景 678

29.4.3 把自定义视图类整合进应用程序 678

29.4.5 把OpenGL库添加到项目的链表 679

29.5 2维和3维模型 679

29.5.1 基本模型开发 680

29.5.2 模型变换 681

29.5.3 显示列表 683

29.6 光 686

29.6.1 OpenGL光处理技术的基础 686

29.6.2 光的类型 687

29.6.3 物体的材料特性 688

29.7.1 OpenGL图像和Windows独立于设备的位图 689

29.7 纹理贴图 689

29.7.2 贴纹理图 690

29.8 特殊效果 691

29.8.1 融合 691

29.8.2 雾化 692

29.9 小结 693

第30章 MFC和DirectX 694

30.1 DirectX是什么 694

30.1.1 DirectX概述 694

30.1.2 DirectX的部件 695

30.2.2 DirectX部件启动顺序 696

30.2.1 COM编程风格和DirectX的差异 696

30.2 DirectX基础 696

30.3 DirectDraw基础 697

30.3.1 DirectDraw初始化 697

30.3.2 DirectDraw和调色板 701

30.3.3 DirectDraw表面 704

30.3.4 建立DirectDraw表面 704

30.3.5 位图在表面间传送 705

30.3.6 清除DirectDraw表面 706

30.3.7 DirectDraw页面翻转 706

30.3.8 从一个窗口使用DirectDraw 708

30.4.2 把位图加载进表面 710

30.4 在实际中使用DirectDraw 710

30.4.1 表面和位图 710

30.4.3 调色板问题 713

30.4.4 窗口渲染 716

30.4.5 错误处理 717

30.4.6 DirectDraw关闭 719

30.5小结 721

第31章 多媒体与MFC 722

31.1 多媒体基础 722

31.2 DirectX媒体播放器控件 722

31.2.2 媒体播放器详情 723

31.2.1 媒体播放器控件支持的媒体格式 723

31.2.3 CMediaPlayer类 724

31.3 使用媒体播放器控件 724

31.4 播放声音 731

31.4.1 与声波打交道 732

31.4.2 回到DirectSound 738

31.4.3 用DirectSound播放声响效果 740

3.15 小结 749

第八部分 高级MFC 751

第32章 注册表详解 751

32.1 Windows注册表的使用 751

32.2 注册表结构 752

32.3 注册表的程序控制 754

32.4 注册表示例程序 755

32.4.1 注册表的Key Editor对话框 755

32.4.2 生成一个新键 756

32.4.3 删除一个键 759

32.4.4 删除名字/数值对 760

32.5 关于包装注册表函数 762

32.6 关于安装的几句话 762

32.7 小结 763

33.1.2 模块特性和封装 764

33.1.1 消除重复代码 764

第33章 DLL编写及使用 764

33.1 DLL的优点 764

33.1.3 可扩性 765

33.2 AFX DLL详解 765

33.3 导出类、函数和数据 765

33.3.1 导出效率的考虑 765

33.3.2 混合的名字 766

33.3.3 导出类 767

33.3.4 导出与导入 767

33.3.6 导出数据 768

33.3.5 导出显函数 768

33.3.7 导出MFC数据 769

33.3.8 导出析构函数 770

33.3.9 导出工具集include文件 771

33.3.10 导出选择 771

33.4 其他DLL问题 772

33.4.1 AfxLoadLibrary和AfxFreeLibrary 772

33.4.2 可扩充和可复用设计 772

33.4.3 资源分配 773

33.4.4 多模块定义文件 773

33.4.5 地址加载和链接程序 774

33.5 小结 775

34.1 属性表和属性页 776

34.1.1 CPropertySheet和CPropertyPage类 776

第34章 创建自定义向导 776

34.1.2 引导过程与属性表连接 777

34.2 创建一个向导 777

34.2.1 设置向导模式 778

34.2.2 激活向导的按钮 778

34.2.3 显示向导 778

34.2.7 成功结束 779

34.3 示例程序;WIZARD1.EXE 779

34.2.5 向后退 779

34.2.6 移到下一个 779

34.2.4 向导通知消息 779

34.3.1 生成向导页对话模板资源 780

34.3.2 为每个对话资源创建对话类 781

34.3.3 Welcome页详解:类CIntroPage 782

34.3.4 About You页详解:类CPagel 784

34.3.5 更新CPage2和CPage3的向导信息 787

34.3.6 创建和显示向导 789

34.4小结 790