第1章 MFC类库简介 3
1.1 Win32 API及MFC 3
1.2 MFC的中文支持 3
第一部分 用.NET MFC编程 3
1.3 Win 9.x与NT平台 4
1.4 MFC的组成 4
1.4.1 MFC类库中最重要的三个类 4
1.4.3 从应用程序角度对MFC类库分类 5
1.4.4 MFC类库的全局函数、全局变量、宏 5
1.4.2 MFC 7.0类库层次结构全图 5
1.5 MFC类库的主要文件 6
第2章 .NET MFC编程环境 7
2.1 应用向导 7
2.1.1 用应用向导生成一个应用框架 7
2.1.2 生成的主要的类及其作用 11
2.1.3 生成的其他主要文件及其作用 11
2.1.4 Debug与Release版本 11
2.1.5 退出或再次进入ex2工程 11
2.3 类向导的几个主要功能 12
2.2 视图菜单 12
2.3.1 创建一个类 12
2.1.7 编译与连接ex2工程 12
2.1.8 执行ex2工程 12
2.1.6 转移ex2工程 12
2.3.2 响应Windows消息 14
2.3.3 增加一个成员变量 15
2.3.4 增加一个成员函数 16
2.3.5 覆盖一个虚函数 16
2.4 添加资源 17
2.5 Debug与TRACE宏 17
2.6 其他工具 18
第3章 消息映射 19
3.1 消息驱动 19
3.2 消息映射机制 23
3.3 OnPaint及OnDraw函数 24
3.4 例程 25
3.4.1 ex31例程 25
3.4.2 ex32例程 27
4.1.1 CDC类 30
4.1.2 CDC类及其派生类的使用 30
4.1 CDC类及其派生类 30
第4章 设备环境类及绘制工具类 30
4.1.3 无效矩形区 31
4.1.4 ex41例程 32
4.2 CDC类的属性 33
4.3 逻辑坐标与物理坐标 34
4.3.1 逻辑坐标与物理坐标 34
4.3.2 映射方式 35
4.3.3 ex42例程 36
4.4.1 视图类的PreCreateWindow函数 41
4.4 视图类的两个函数及窗框类的一个函数 41
4.4.2 窗框类的PreCreateWindow函数 42
4.4.3 视图类的OnPrepareDC 42
4.5 GDI对象 43
4.5.1 六个GDI对象 43
4.5.2 CPen、CFont, CBrush的使用 43
4.5.3 ex43工程 44
4.5.4 CRgn的使用 46
4.5.5 ex44工程 46
4.6 ex45例程 47
5.3 CBitmap的使用方法 51
5.2 BMP位图文件的格式 51
5.1 与设备无关的位图类CBitmap 51
第5章 位图与调色板 51
5.4 位图例程 52
5.4.1 ex51例程 52
5.4.2 OpenBmpFile例程 54
5.4.3 SunRises例程 57
5.5 调色板类CPalette 62
5.5.1 CPalette的使用场合 62
5.5.2 Palette例程 62
5.6 绘制工具类对象的句柄表示 69
6.1.2 控件的种类 70
6.2.1 公共控件的种类 70
6.2 Windows的公共控件 70
6.1 控件 70
6.1.1 控件的定义 70
第6章 控件与对话框 70
6.2.2 ex60工程 71
6.2.3 对Win3.x中的六种控件的事件处理 73
6.2.4 对在Win9.x中开始使用的控件的事件处理 73
6.2.5 对控件进行操作的一般方法 73
6.3 公共控件使用例程 74
6.3.1 CtrlAnimate例程 74
6.3.2 CtrlBitmapButton例程 75
6.3.3 CtrlButton例程 76
6.3.4 CtrlComboBox例程 78
6.3.5 CtrlEditandListBox例程 78
6.3.6 CtrlExComboBox例程 80
6.3.7 CtrlHeader例程 81
6.3.8 CtrlHotKey例程 83
6.3.9 CtrlList例程 85
6.3.10 CtrlSlider例程 86
6.3.11 CtrlSpin例程 87
6.3.12 CtrlTab例程 88
6.3.14 CtrlTree例程 90
6.3.13 CtilPicture例程 90
6.4 提示信息框 92
6.5 模式对话框 93
6.5.1 模式对话框的设计 93
6.5.2 DoModal函数 96
6.5.3 改造OnOK函数 97
6.6 Tab页对话框 98
6.6.1 Tab页对话框 98
6.6.2 CtrlTabSheet例程 98
6.8.1 无模式对话框 101
6.8 无模式对话框 101
6.7 公用对话框 101
6.8.2 无模式对话框例程 102
第7章 菜单及键盘加速键 107
7.1 主框架窗口类CMainframe 107
7.2 菜单 107
7.3 菜单命令消息的处理 109
7.4 键盘加速键 111
7.5 常规菜单例程ex71 112
7.6.1 二级菜单 116
7.6.2 浮动菜单 116
7.6 菜单的其他形式 116
7.6.3 两套以上菜单 118
第8章 工具条及状态条 119
8.1 工具条类及状态条类 119
8.2 工具条 120
8.2.1 一般情况 120
8.2.2 显示或隐藏工具条 122
8.2.3 两套菜单及工具条例程——ex70第三步 122
8.3 状态条 127
8.3.1 状态条定义 127
8.3.3 状态指示器 128
8.3.2 在状态条上显示提示信息 128
8.3.4 重新定义状态条 129
8.3.5 状态条例程ex81 129
8.3.6 状态条例程ex82 132
第9章 文档视图结构 135
9.1 应用程序中的主要对象 135
9.2 文档/视图结构 136
9.3 文档类 138
9.4 视图类 139
10.2 文档模板类 141
10.1 单文档应用程序的启动、运行过程 141
第10章 单文档应用及窗口切分 141
10.3 OnFileNew函数 142
10.4 InitInstance函数 144
10.5 OnIdle函数 146
10.6 File菜单下的四条命令的执行 147
10.7 文档模板字符串 147
10.8 例程 148
10.8.1 SDI例程 148
10.8.2 Edit例程 149
10.8.3 Form例程 150
10.8.4 SDI2例程 154
10.8.5 SDIMV例程——多视及窗口切分 155
10.9 单文档应用中各个类之间的关系 162
第11章 多文档应用与序列化及窗口切分 163
11.1 多文档应用的框架窗口类 163
11.2 主框架窗口与子框架窗口之间的关系 164
11.3 多文档应用文档模板类 164
11.4 InitInstance函数 164
11.5 OnFileNew函数 165
11.6 多文档应用各个类对象创建过程 167
11.8.1 MDI例程 168
11.7 多文档应用各个类之间关系 168
11.8 例程 168
11.8.2 MScribble例程 169
11.8.3 SScribble例程 176
11.8.4 mdiEdit例程 177
11.8.5 MDIMV例程——多视及窗口切分 179
11.9 序列化 180
11.9.1 使类序列化的条件 181
11.9.2 集合类及其在序列化中的应用 182
11.11 多视及窗口切分 183
11.9.3 序列化的其他问题 183
11.10 主框架窗口的有关消息 183
第12章 内存管理 186
12.1 内存分配的五种途径 186
12.2 虚拟内存 186
12.3 Win95及NT的地址空间的分布 187
12.4 堆及栈 188
12.5 GlobalAlloc及LocalAlloc函数 188
12.6 CRT函数 188
12.8 直接分配虚拟内存 189
12.9 Memory例程 189
12.7 内存映射文件 189
12.10 内存疏漏 194
第13章 多线程编程 195
13.1 基本概念 195
13.2 工作者线程编程 196
13.2.1 开始一个工作者线程 196
13.2.2 终止一个工作者线程 196
13.2.3 主线程与工作者线程之间的同步 197
13.2.4 自定义Windows消息 197
13.2.5 BkWork例程 198
13.3.1 用户接口线程的创建、运行、终止 203
13.3 用户接口线程 203
13.3.2 UTT例程 204
第14章 动态链接库 210
14.1 基本概念 210
14.2 动态链接库的分类 210
14.3 常规与扩展DLL的制作及使用——MakeDll例程 211
16.1 打印 211
14.4 可执行文件对DLL的调用方法 215
14.4.1 隐式链接 215
14.4.2 显式链接 216
15.2 ADO例程ADODB 217
15.1 ADO基本概念 217
第15章 MFC ADO数据库访问 217
第16章 打印及打印预览 221
16.1.1 你在打印中的任务与框架的任务 221
16.1.2 默认打印过程 221
16.1.3 打印命令的执行过程 222
16.1.4 如何控制打印页数 223
16.1.5 在打印文档中添加页眉和页脚 225
16.1.6 分配与释放GDI资源对象 226
16.2.2 修改打印预览 227
16.2 打印预览 227
16.2.1 打印预览过程 227
16.3 例程 228
16.3.1 例程1——所见即所得 228
16.3.2 例程2——多页打印 230
第17章 帮助文件 234
17.1 选“WinHelp格式”项生成帮助文件 234
17.1.1 生成的主要帮助文件及其作用 234
17.1.3 WinHelp.hm文件 235
17.1.4 WinHelp.rtf文件 235
17.1.2 WinHelp.hpj文件 235
17.1.5 WinHelp.hlp文件 236
17.1.6 WinHelp.cnt文件 236
17.2 “WinHelp格式”下的帮助例程 236
17.2.1 增加帮助内容 237
17.2.2 F1及Shift+F1支持 240
17.2.3 直接调用增加的帮助内容 241
17.2.4 直接调用.hlp帮助文件 241
17.3 选择“HTML帮助格式”项生成帮助文件 242
17.3.1 生成的主要帮助文件及其作用 242
17.4 “HTML帮助格式”例程 243
17.3.2 调用帮助执行文件 243
17.5 HTML帮助开发工具 251
第二部分 用.NET类库编程 257
第18章 .NET框架及类库 257
18.1 Visual C++.NET 257
18.2 .NET框架 257
18.2.1 公共语言运行库 258
18.2.2 中间语言 258
18.2.4 公共语言规范 259
18.2.5 .NET框架类库 259
18.2.3 公共类型系统 259
18.3 第一个托管C++应用ex181 260
18.4 .NET框架类库命名空间 263
18.4.1 在托管C++程序中使用命名空间 264
18.4.2 System命名空间 264
18.4.3 System::Collections命名空间 265
18.4.4 System::IO命名空间 266
18.4.5 Forms命名空间 267
18.4.6 其他命名空间简介 267
19.2 Windows Forms命名空间 269
19.1.2 Windows Forms与MFC 269
19.1.1 Windows Forms与设计程序 269
19.1 什么是Windows Forms 269
第19章 Windows窗体 269
19.3 使用Forms 270
19.3.1 WForm1例程 270
19.3.2 Form类的属性、方法和事件 273
19.3.3 WForm1_1例程 274
19.4 委托与事件 276
19.4.1 委托 276
19.4.2 Delegate1例程 277
19.4.3 事件 279
19.4.4 Event1例程 280
19.5 事件与消息 283
19.5.1 鼠标与键盘等事件 284
19.5.2 Event2例程 284
第20章 控件与对话框 288
20.1 在窗口上放置两个按钮——FormButton例程 288
20.2 控件种类 290
20.2.1 从Control类派生的控件 290
20.2.2 从Component类派生的控件 291
20.3.1 Dialog1例程 292
20.3 普通对话框 292
20.3.2 Dialog2例程 296
20.3.3 公用对话框例程Dialog3 303
20.4 控件进一步使用——Calculator例程 305
第21章 菜单 312
21.1 常规菜单 312
21.2 菜单事件处理 313
21.3 菜单属性Enabled and Checked 313
21.4 浮动菜单 313
21.5 菜单例程Notepaper 314
22.1.1 什么是GDI+ 322
22.1.2 GDI+的功能 322
第22章 图形文字输出 322
22.1 GDI+ 322
22.1.3 GDI+新增功能 323
22.1.4 GDI+托管类接口 323
22.2 GDI+托管类的命名空间 324
22.2.1 四个命名空间 324
22.2.2 System::Drawing命名空间 324
22.3 Graphics类及Color结构 326
22.3.1 Graphics类 326
22.4.1 Graphics1例程 327
22.3.2 Color结构 327
22.4 例程 327
22.4.2 Graphics2例程 330
第23章 打印及打印预览 335
23.1 打印及打印预览概述 335
23.2 Print1例程——打印及预览各种单页位图 336
23.3 Print2例程——打印及预览单页文本 344
23.4 多页打印 348
24.1.2 ADO.NEP结构简介——DataSet及数据提供程序 349
24.1.1 ADO.NET的设计目标 349
24.1 ADO.NET概述 349
第24章 ADO.NET数据库访问 349
24.1.3 ADO.NET名字空间及dll文件 351
24.1.4 ADO.NET平台要求 351
24.2 第一种应用方式——ADONET1例程 351
24.3 第二种应用方式——ADONET2例程 355
第25章 XML Web服务 359
25.1 XML Web服务概述 359
25.2 XML Web服务实例MCPPWS1 360
25.2.1 MCPPWS1——托管C++ XML Web服务 360
25.2.2 MCPPWS1Setup——安装MCPPWS1服务 364
25.2.3 调用MCPWS1服务——托管C++应用UseMCPPWS1 366
25.3 用UDDI创建托管C++应用 371
25.3.1 UseUDDI1例程 372
25.3.2 UseUDDI2例程 379
25.4 XML Web Service概念补充 384
25.4.1 XML 384
25.4.2 XML Web服务通讯协议 385
25.4.3 Web服务描述语言WSDL 386
25.4.5 XML Web服务名字空间 389
25.4.6 XML Web服务小结 389
25.4.4 UDDI 389
第26章 应用程序的部署 390
26.1 在目标机器上安装公共语言运行库 390
26.2 打包.NET框架下开发的应用程序 390
26.2.1 打包托管C++应用程序 390
26.2.2 打包MFC开发的应用程序 392
26.3 应用程序打包和分发的类型 393
26.3.1 打包类型 393
26.3.2 分发类型 393
附录A Form类的全部成员 394
附录B P/Invoke——托管代码与非托管代码之间的桥梁 402