《精通MFC》PDF下载

  • 购买积分:20 如何计算积分?
  • 作  者:刘晓华等编著
  • 出 版 社:北京:电子工业出版社
  • 出版年份:2003
  • ISBN:7505390252
  • 页数:746 页
图书介绍:本书共分6部分。第一部分介绍掌握MFC必须具备的C++和面向对象的基础知识。第二部分详细阐述了MFC应用框架、文档视图结构、消息处理机制、窗口的原理、技术及相关实现。每一个技术难点,在进行理论阐述的同时,都给出了典型示例,以提高大家开发MFC应用的实践水平、拓宽程序设计思路。本书的第三部分跟绘图相关,除了介绍传统的GDI编程接口外,还详细讲解了最新的GDI+编程接口。通过对比两种编程接口,相信读者可以在短时间内就能熟悉并实际应用GDI+了。第四部分介绍跟操作系统关系密切的编程,包括进程、线程和动态链接库等。第五部分介绍COM编程技术,重点分析了MFC对IUnknown接口、聚合、自动化、连接点的支持。在这一部分,读者在了解MFC实现COM原理的同时,还将了解到一些非常实用的编程技术,譬如动态调用、接口映射等。第六部分则介绍了最新的托管C++扩展及其典型托管应用的开发。随书附赠光盘为书中部分实例源代码。

第1章 面向对象编程 1

1.1 面向对象的基本概念 1

1.1.1 类和对象 1

1.1.2 封装、多态和继承 2

1.1.3 消息 3

1.2 面向对象的建模技术和UML 4

1.2.1 类图 4

1.2.2 交互图 10

1.2.3 用例图 11

1.3 面向对象的C++语言 12

1.3.1 C++对象的内存布局 14

1.3.2 C++编程技术要点 17

1.4 小结 36

第2章 窗口 37

2.1 窗口结构 37

2.2 窗口类型 39

2.3 窗口关系 41

2.4 消息和消息处理 47

2.4.1 系统定义的消息 47

2.4.4 消息队列 49

2.4.3 消息参数 49

2.4.2 应用程序定义的消息 49

2.4.5 消息循环 52

2.4.6 窗口过程 55

2.5 窗口应用框架 58

2.6 小结 61

第3章 MFC简介 63

3.1 MFC的优势 63

3.2 MFC中的类 64

3.3 用MFC开发应用的基本方法 66

3.4.1 C++窗口对象和Windows窗体之间的关系 71

3.4 MFC中的窗口管理 71

3.4.2 创建窗口 72

3.4.3 销毁窗体 79

3.4.4 定位窗体 80

3.4.5 绘图 84

3.4.6 消息处理 86

3.5 小结 94

第4章 CObject类 97

4.1 概述 97

4.2 创建对象 98

4.2.1 直接构造 98

4.2.2 使用new操作符 100

4.3 诊断功能 102

4.3.1 Dump成员 102

4.3.2 AssertValid 104

4.4 运行时类信息 106

4.4.1 CRuntimeClass结构 106

4.4.2 添加运行时类信息 110

4.4.3 IsKindOf 111

4.5 动态创建 111

4.6 序列化 113

4.6.1 添加序列化支持 113

4.6.2 CArchive类 115

4.6.3 对象序列化实例 119

4.7 小结 120

第5章 MFC应用框架 123

5.1 应用程序对象和MFC类库的交互 123

5.2 应用程序的初始化 125

5.3 消息循环 128

5.4 空闲处理 131

5.5 应用程序的退出 134

5.6 CWinApp提供的其他服务 135

5.6.3 跟踪最近使用的文档 136

5.6.2 文件管理器拖放 136

5.6.1 外壳程序注册 136

5.7 小结 137

第6章 消息映射 139

6.1 基本概念 139

6.2 消息映射表 140

6.3 一般窗口消息的处理成员的定位 144

6.4 命令处理成员的定位 148

6.5 消息映射宏 150

6.5.1 窗口消息映射宏 150

6.5.2 命令映射宏 155

6.5.3 控件通知消息映射宏 158

6.5.4 通知消息映射宏 159

6.5.5 反射消息映射宏 161

6.6 小结 163

第7章 消息处理 165

7.1 处理标准窗口消息 165

7.1.1 处理WM_CREATE消息 166

7.1.2 处理WM_DESTROY消息 167

7.1.3 处理WM_NCDESTROY消息 168

7.1.4 处理WM_CLOSE消息 170

7.2 处理命令消息 173

7.3 处理反射消息 180

7.4 投递和发送消息 183

7.4.1 投递和发送消息的概念 184

7.4.2 PostMessage函数 184

7.4.3 SendMessage函数 185

7.4.4 SendNotifyMessage和SendMessageCallback 187

7.5 使用自定义命令 189

7.6 使用自定义窗口消息 191

7.7 使用登记消息 194

7.8 处理线程消息 196

7.9 跨进程处理消息 197

7.10 使用消息跨进程交换数据 200

7.11 消息钩子 205

7.11.1 钩子和过滤器 205

7.11.2 钩子的类型和范围 206

7.11.3 安装和解除消息钩子 208

7.11.4 使用线程范围的钩子实例 210

7.11.5 使用全局钩子实例 214

7.12 小结 222

8.1 对话框的生存期 225

8.1.1 对话框的创建 225

第8章 对话框 225

8.1.2 对话框的初始化 232

8.1.3 对话框的消息处理 234

8.1.4 对话框的结束 238

8.2 数据交换和数据验证 242

8.3 使用通用对话框 248

8.3.1 基本用法 248

8.3.2 定制通用对话框 251

8.4 运行时修改对话框 254

8.5 作为子窗口的对话框 256

8.6 TML对话框 258

8.6.1 HTML资源 259

8.6.2 让HTML全部可见 262

8.6.3 混合HTML元素和窗口控件设计对话框 263

8.6.4 HTML消息处理 265

8.6.5 HTML元素和对话框成员间的数据交换 281

8.6.6 导航 283

8.6.7 基于HTML对话框的应用实例 286

8.7 使用属性表 290

8.8 使用对话栏 295

8.8.1 创建 296

8.8.4 访问对话栏成员 297

8.8.3 处理控件消息 297

8.8.2 销毁 297

8.8.5 实例 298

8.9 小结 298

第9章 文档和视图 299

9.1 文档/视图结构 299

9.1.1 原理 299

9.1.2 为什么使用文档/视图结构 300

9.1.3 基于文档/视图结构的应用 301

9.2 文档/视图结构的创建 303

9.2.1 文档模板的创建 304

9.2.2 文档的创建 308

9.2.3 框架的创建 311

9.2.4 视图的创建 318

9.2.5 文档/视图的初始化 320

9.3 深入文档模板 322

9.3.1 文档模板管理器 322

9.3.2 文档模板的创建 330

9.3.3 管理文档 332

9.3.4 其他 338

9.4 文档对象 338

9.4.1 文档的初始化 338

9.4.2 保存文档 340

9.4.3 设置修改标志和保存修改 341

9.4.4 关闭文档 342

9.4.5 管理视图 343

9.4.6 文档的销毁 345

9.4.7 命令处理 346

9.4.8 文档的序列化 348

9.4.9 设计文档的成员 350

9.5 视图对象 351

9.5.1 视图的初始化 351

9.5.2 视图和文档间的数据交换 354

9.5.3 视图的绘制 355

9.5.4 视图的销毁 356

9.6 框架窗口 357

9.6.1 初始化 357

9.6.2 和文档的交互 362

9.6.3 和视图的交换 364

9.6.4 命令处理 365

9.6.5 确定视图大小 366

9.6.6 为框架添加其他子控件 371

9.7 打印 373

9.7.1 文档/视图框架中的打印流程 373

9.7.2 自定义打印 383

9.7.3 打印预览 385

9.8 小结 386

第10章深入视图 387

10.1 拆分 387

10.1.1 视图的创建 388

10.1.2 拆分窗口的命令处理 396

10.1.3 对拆分子窗口的管理 397

10.1.4 绘制 398

10.2 滚动和缩放 403

10.2.1 滚动 403

10.2.2 缩放视图 413

10.3 控件视图 416

10.4 窗体视图 420

10.5 基于HTML的视图——CDHtmlView 425

10.5.1 加载HTML 425

10.5.2 事件处理 426

10.5.3 在新的文档中打开HTML 434

10.6 小结 436

第11章GDI绘图 437

11.1 GDI绘图的编程模型 437

11.1.2 设备上下文 438

11.1.1 逻辑空间和设备空间 438

11.1.3 GDI对象 446

11.1.4 坐标变换和坐标映射 450

11.2 绘制图形 458

11.2.1 画线 458

11.2.2 绘制矩形 459

11.2.3 绘制椭圆 460

11.2.4 绘制弧线 461

11.2.5 绘制多边形 462

11.2.6 绘制贝济埃样条 463

11.2.7 使用路径 464

11.2.8 填充 470

11.2.9 区域 473

11.3 使用图像 482

11.3.1 位图的结构 482

11.3.2 位图类型 483

11.3.3 图像的初始化和销毁 484

11.3.4 从文件加载图像文件 487

11.3.5 将图像保存为文件 488

11.3.6 图像的显示、裁剪和缩放 489

11.3.7 图像处理 492

11.4 小结 500

第12章GDI+绘图 501

12.1 GDI+编程模型 501

12.1.1 GDI+的组成 502

12.1.2 GDI+的功能 502

12.1.3 GDI+编程步骤 502

12.1.4 新增功能 508

12.2 绘制基数样条曲线 509

12.3 独立的路径对象 510

12.4 Alpha混合 512

12.4.1 在钢笔中应用Alpha混合 512

12.4.2 在画刷中应用Alpha混合 513

12.4.3 对图像应用Alpha混合 514

12.5 渐变 520

12.5.1 线性渐变 521

12.5.2 轨迹渐变 522

12.6 变换和矩阵对象 529

12.7 使用图像 535

12.8 小结 544

第13章进程和线程 547

13.1 基本理论 547

13.1.1 什么是进程 547

13.1.3 进程地址空间 548

13.1.2 什么是线程 548

13.1.4 线程的生命周期 549

13.2 创建子进程 549

13.3 虚拟内存管理 552

13.4 进程间内存共享 555

13.5 用户界面线程 561

13.5.1 创建 561

13.5.2 退出 564

13.5.3 线程间通信 564

13.6.1 创建 565

13.6 辅助线程 565

13.6.2 退出 567

13.6.3 线程间通信 569

13.7 线程安全措施 571

13.7.1 需要采取线程安全措施的对象 572

13.7.2 线程安全的实现 573

13.8 小结 577

第14章动态链接库 579

14.1 简介 579

14.1.1 DLL的构成 580

14.1.2 到DLL的链接 582

14.1.3 DLL映射到进程空间 585

14.1.4 使用动态链接的好处 586

14.2 规则DLL创建及其使用 587

14.2.1 创建规则 DLL 588

14.2.2 规则DLL的使用 594

14.2.3 输出全局变量 599

14.2.4 输出类 600

14.2.5 输出进程间共享的数据 604

14.3 进程状态、模块状态和线程状态 606

14.3.1 线程局部存储 607

14.3.2 模块状态 616

14.4.1 创建 621

14.4 创建和使用扩展DLL 621

14.4.2 使用 631

14.5 DLL中的资源 637

14.5.1 资源的名字和类型 638

14.5.2 确定定义资源的模块 638

14.5.3 在模块中查找、加载资源 640

14.5.4 枚举资源 642

14.5.5 修改可执行文件的资源 648

14.5.6 纯资源DLL 651

14.5.7 附属DLL 655

14.6 小结 657

15.1 COM基础知识 659

第15章COM组件编程 659

15.1.1 COM中的接口 660

15.1.2 COM对象的线程模型 663

15.1.3 进程内组件和进程间组件 664

15.1.4 COM库 665

15.2 IUnknown接口在MFC中的实现 669

15.2.1 内部类 670

15.2.2 接口映射表 673

15.2.3 聚合的实现 674

15.3.1 COleObjectFactory类 679

15.3 类厂及其MFC实现 679

15.3.2 全局类厂链 680

15.3.3 类厂的注册/反注册 680

15.3.4 类厂对象的创建 680

15.3.5 类厂对象创建COM对象 680

15.3.6 为CCmdTarget添加类厂支持 682

15.4 用MFC实现简单的COM组件 683

15.4.1 创建支持自动化的规则DLL 683

15.4.2 定义接口文件 683

15.4.3 实现被聚合的COM组件 684

15.4.4 实现包容组件 686

15.4.5 编译、注册COM组件 688

15.4.6 创建一个对话框应用 688

15.5 双重接口 691

15.5.1 调度表 691

15.5.2 COleDispatchImpl 692

15.5.3 m_xDispatch成员 692

15.5.4 输出IDispatch接口 693

15.5.5 双重接口的客户端 693

15.5.6 范例 695

15.6 可连接对象及其MFC实现 695

15.6.1 用CCmdTarget实现可连接对象 697

15.6.2 可连接对象的客户端 698

15.7 封送的应用:在线程间传递接口指针 702

15.8 小结 703

第16章.NET应用开发 705

16.1 C++托管扩展简介 705

16.1.1 什么是.NET平台 705

16.1.2 托管C++中的类型 706

16.1.3 托管C++的用途 707

16.1.4 为MFC应用添加托管支持 707

16.1.5 使用.NET类型 708

16.1.6 实例:创建托管类型 709

16.1.7 装箱:值类型到引用类型的转化 710

16.1.8 托管类型和非托管类型的混用 711

16.1.9 固定指针 712

16.2 常用的托管C++编程技能 713

16.2.1 声明托管类 713

16.2.2 声明值类型的托管类型 715

16.2.3 添加属性 716

16.2.4 定义及实现接口 717

16.2.5 托管数组 720

16.2.6 处理异常 721

16.2.7 定义和使用委托 723

16.2.8 创建对象 726

16.2.9 对象的序列化和反序列化 728

16.2.10 用ADO.NET访问数据库 730

16.2.11 断言和条件编译 735

16.3 具有双重接口功能的规则DLL 738

16.4 典型托管应用开发 741

16.4.1 控制台应用 742

16.4.2 类库应用 742

16.4.3 窗体应用 743

16.5 小结 746