图书目录

第1章 Windows程序基础1

1.1 Windows应用程序的基本概念1

1.1.1 一般概念1

1.1.2 Windows内核、API和开发工具7

1.2 Windows的数据类型8

1.2.1 Windows的一个特殊数据类型--句柄9

1.2.2 窗口类WNDCLASS13

1.2.3 Windows函数的调用说明14

1.3 窗口的创建和显示15

1.4 事件、消息循环和窗口函数18

1.5 Windows应用程序的结构20

1.5.1 主函数20

1.5.2 窗口函数22

1.5.3 Windows系统、主函数、窗口函数之间的关系23

1.6 Windows程序代码重构30

1.6.1 用函数封装消息处理代码30

1.6.2 消息映射表34

练习题38

思考题38

第2章 Windows应用程序的类封装39

2.1 应用程序主函数的C++类封装39

2.1.1 窗口类的声明40

2.1.2 应用程序类的声明41

2.1.3 主函数封装后的程序42

2.2 派生类的应用46

2.2.1 应用程序类的派生类47 MFC Windows应用程序设计(第3版)目录     2.2.2 窗口类的派生类49

2.3 窗口函数的封装--消息映射53

2.3.1 消息处理函数的简单封装54

2.3.2 消息映射56

2.3.3 消息映射表的声明和实现59

小结62

练习题62

思考题63

第3章 MFC应用程序框架65

3.1 早期的应用程序框架及其MFC类65

3.1.1 早期的应用程序框架65

3.1.2 MFC的窗口类66

3.1.3 CWinApp类67

3.2 最简单的MFC程序实例68

3.2.1 程序的编写68

3.2.2 程序主函数的代码70

3.3 应用程序的文档/视图结构71

3.3.1 文档/视图结构的基本概念71

3.3.2 单文档界面和多文档界面结构73

3.4 文档类CDocument的派生类74

3.5 视图类CView的派生类75

3.6 窗口框架类CFrameWnd的派生类76

3.7 文档模板类CDocTemplate78

3.8 应用程序类的派生类79

3.8.1 应用程序类派生类的代码79

3.8.2 程序员的主要工作80

3.9 MFC文档/视图应用程序框架中各个对象的关系81

3.9.1 应用程序各对象创建的顺序81

3.9.2 应用程序各对象之间的联系82

3.9.3 文档/视图应用程序消息的传递85

3.10 对象的动态创建85

3.10.1 问题的提出与解决85

3.10.2 类信息表及其声明和实现90

3.10.3 对象类信息表的提取91

小结92

练习题92

思考题92

第4章 图形93

4.1 DC和GDI93

4.1.1 设备描述环境93

4.1.2 Windows的GDI94

4.2 CDC类94

4.3 CPen类96

4.4 CBrush类99

4.5 绘图模式101

4.6 文本和CFont类102

4.6.1 显示文本102

4.6.2 字体和CFont类105

4.7 CDC的其他派生类107

4.7.1 窗口用户区设备描述环境CClientDC类107

4.7.2 图元文件设备描述环境CMetaFileDC类108

小结110

练习题110

思考题110

第5章 MFC的通用类111

5.1 简单数据类111

5.1.1 点类CPoint111

5.1.2 矩形类CRect112

5.1.3 尺寸类CSize112

5.1.4 字符串类CString113

5.2 群体数据类114

5.3 数据在文档/视图结构程序中的位置116

小结118

练习题118

思考题118

第6章 Windows应用程序界面的设计119

6.1 SDI和MDI界面119

6.2 SDI界面窗口的样式120

6.2.1 在MFC AppWizard中确定窗口样式120

6.2.2 在函数PreCreateWindow中修改窗口的样式121

6.2.3 可拆分为小窗口的SDI界面125

6.3 拆分窗口的同步更新及更新效率126

6.3.1 拆分窗口的同步更新126

6.3.2 提高拆分窗口更新效率的方法126

6.4 创建带有滚动条的窗口131

小结135

练习题135

思考题136

第7章 鼠标和键盘137

7.1 处理鼠标消息137

7.1.1 用户区鼠标消息138

7.1.2 非用户区鼠标消息142

7.1.3 鼠标消息的捕获143

7.2 处理键盘消息144

7.2.1 按键的虚拟码144

7.2.2 一般按键消息147

7.2.3 系统按键消息148

7.3 应用程序窗口的焦点149

小结150

练习题151

思考题152

第8章 资源153

8.1 资源和资源文件153

8.1.1 什么是资源153

8.1.2 资源头文件154

8.1.3 资源描述文件155

8.2 菜单155

8.2.1 资源描述文件的菜单部分155

8.2.2 编辑现有的菜单157

8.2.3 自定义菜单160

8.2.4 用菜单编辑器编辑菜单162

8.2.5 菜单命令选项的动态修改162

8.3 快捷键表165

8.3.1 资源描述文件的快捷键表部分165

8.3.2 使用快捷键编辑器编辑快捷键表166

8.4 图标166

8.4.1 制作图标166

8.4.2 资源描述文件的图标部分167

8.5 位图168

8.5.1 资源描述文件的位图部分168

8.5.2 位图资源的使用168

小结171

练习题172

思考题172

第9章 MFC的文件处理机制173

9.1 CFile类173

9.1.1 CFile类常用成员函数173

9.1.2 文件的创建与打开173

9.1.3 文件的读写175

9.1.4 CFile的派生类CMemFile179

9.1.5 CFileFind类180

9.2 CArchive类181

9.2.1 插入符和提取符的重载181

9.2.2 CArchive类对象与CFile类对象的关联182

9.3 对象的序列化184

9.3.1 序列化的基本概念184

9.3.2 MFC的Serialize函数185

9.3.3 MFC应用程序的序列化过程187

9.3.4 序列化的顺序188

9.4 宏DECLARE_SERIAL和IMPLEMENT_SERIAL191

9.5 MFC文件命令的默认处理流程196

9.5.1 应用程序启动后文档的初始化流程196

9.5.2 应用程序菜单命令的默认处理196

小结197

练习题197

思考题197

第10章 控件199

10.1 标准控件及其使用199

10.1.1 标准控件200

10.1.2 静态文本控件200

10.1.3 按钮控件202

10.1.4 编辑控件206

10.2 通用控件208

10.2.1 进度条控件208

10.2.2 微调器控件209

10.2.3 图像列表控件213

10.2.4 列表视图控件214

10.3 控件的背景颜色223

小结224

练习题225

第11章 对话框227

11.1 对话框模板资源描述文件227

11.2 自定义对话框类230

11.2.1 MFC的对话框类及用户自定义对话框类230

11.2.2 模态对话框231

11.3 对话框的数据交换和数据检验235

11.3.1 数据交换235

11.3.2 使用Class Wizard为对话框添加成员变量237

11.3.3 数据检验239

11.4 以对话框为主界面的应用程序239

11.4.1 应用程序框架的设计240

11.4.2 应用程序代码的设计240

11.5 MFC预置的通用对话框242

11.5.1 文件对话框242

11.5.2 字体选择对话框244

11.6 非模态对话框247

11.7 属性页249

小结252

练习题253

思考题253

第12章 进程与线程的管理255

12.1 进程、线程及其优先权255

12.1.1 进程、线程的基本概念255

12.1.2 进程和线程的优先级255

12.2 工作线程和用户界面线程257

12.2.1 工作线程的创建257

12.2.2 用户界面线程的创建258

12.3 线程同步260

12.3.1 线程同步的基本概念260

12.3.2 事件261

12.3.3 临界段265

12.3.4 互斥体267

12.3.5 信号量268

12.4 线程通信270

12.4.1 利用全局变量进行通信271

12.4.2 利用自定义的消息进行通信272

小结273

练习题274

第13章 动态链接库及其使用275

13.1 链接库275

13.1.1 静态链接库275

13.1.2 动态链接库277

13.2 动态链接库的创建279

13.2.1 导出函数的声明279

13.2.2 用MFC编写DLL282

13.3 动态链接库的使用285

13.3.1 隐式链接方式285

13.3.2 显式链接方式286

小结287

练习题288

思考题288

第14章 组件对象模型基础289

14.1 组件对象模型概述289

14.1.1 软件模块化的发展历程289

14.1.2 组件对象模型297

14.1.3 COM术语297

14.2 组件类、接口的标识及注册298

14.3 COM规定的标准服务299

14.3.1 接口IUnknown299

14.3.2 接口IClassFactory和IDispatch303

14.4 COM接口的二进制标准及IDL语言305

14.5 使用ATL设计组件305

14.5.1 ATL对COM的支持305

14.5.2 使用ATL设计组件的步骤和方法306

14.5.3 浏览ATL生成的代码309

14.6 组件的包含与聚合312

14.6.1 包含312

14.6.2 聚合313

小结313

练习题314

思考题314

第15章 ActiveX应用基础315

15.1 ActiveX技术概述315

15.1.1 ActiveX的前身--OLE315

15.1.2 ActiveX技术的缘起317

15.1.3 ActiveX自动化317

15.1.4 ActiveX控件318

15.1.5 ActiveX文档319

15.1.6 ActiveX文档与ActiveX控件的区别319

15.2 用MFC设计ActiveX容器320

15.2.1 ActiveX容器的结构320

15.2.2 用MFC设计ActiveX容器320

15.3 用MFC设计ActiveX服务器323

15.4 用MFC设计ActiveX自动化应用程序324

15.4.1 用MFC设计ActiveX自动化服务器324

15.4.2 用MFC设计ActiveX自动化客户327

15.5 用MFC设计ActiveX控件329

小结332

练习题333

第16章 用MFC设计数据库应用程序335

16.1 数据库系统及数据库应用程序335

16.1.1 数据库系统335

16.1.2 数据库应用系统的设计336

16.2 ODBC的基本构成336

16.3 配置ODBC数据源337

16.3.1 ODBC管理器338

16.3.2 配置ODBC数据源的方法和步骤338

16.4 MFC的ODBC类340

16.4.1 CDatabase类341

16.4.2 CRecordset类342

16.4.3 CDBException类346

16.5 ODBC应用程序实例347

16.5.1 显示和处理表中的数据347

16.5.2 连接两个表352

16.6 使用DAO设计数据库应用程序简介353

16.6.1 DAO简介353

16.6.2 DAO和MFC353

16.6.3 使用MFC DAO类编程354

小结355

练习题355

第17章 异常和异常处理357

17.1 异常处理的基本思想357

17.2 异常对象360

17.3 MFC的异常类362

17.3.1 CException类362

17.3.2 CException类的子类362

小结363

练习题364

第18章 Visual C++.NET简介365

18.1 .NET及.NET Framework365

18.1.1 .NET的出现365

18.1.2 .NET概览367

18.1.3 开发语言和开发工具370

18.1.4 托管和非托管代码370

18.2 Visual C++与.NET372

18.2.1 符合标准的C++ 372

18.2.2 .NET中开发MFC程序 377

18.2.3 C++/CLI的出现 379

18.3 C++/CLI语言简介 379

18.3.1 C++/CLI的控制台输出和输入380

18.3.2 类的引用类型和值类型381

18.3.3 接口382

18.3.4 抽象类和封闭类384

18.3.5 属性384

18.3.6 委托388

18.3.7 事件389

18.3.8 System::Object393

18.3.9 装箱和拆箱394

18.4 Visual C++的Windows窗体应用程序394

练习题396

附录A 数据类型与Windows句柄397

A.1 简单数据类型397

A.2 结构数据类型399

A.3 句柄399

附录B 标识符的匈牙利记法401

附录C MFC的消息映射403

C.1 三类消息403

C.2 消息映射表项结构AFX_MSGMAP_ENTRY403

C.3 在类声明文件中声明消息映射404

C.4 在类实现文件中实现消息映射405

附录D 文档/视图框架的补充内容409

D.1 文档类与其他类对象之间的配合409

D.2 资源中与文档模板类型有关的字符串411

D.3 文档类CDocument的代码411

附录E 多文档/视图框架的一个实例415

E.1 创建工程415

E.2 使默认文档模板成为TXT文档模板415

E.3 添加位图文档模板418

附录F 类信息表与CObject类421

F.1 类信息表421

F.2 CObject类对RTTI的支持422

F.3 CObject对文档序列化的支持422

F.4 CObject对提供程序调试诊断信息的支持423

附录G Visual C++中文件类型小结425