目 录 2
前言 2
第一篇 Visual C++4.1使用基础 2
第一章一个简单例子 2
第一节VC4.1界面简析 2
一、常用名词解释 2
1.App Wizard 2
2.Class Wizard 2
3.Porject Workspace窗口 2
7.在线帮助 3
6.资源编辑 3
5.源程序浏览 3
4.Class View/File View/Resoure View/Info View 3
二、VC4.1界面简析 4
1.菜单功能简介 5
2.基本构成窗口介绍 6
第二节一个简单的例子 7
一、对文档类的修改 14
1.数据结构的确定 14
2.对文档类的修改 16
二、对视类的修改及与文档关系的建立 18
1.应用程序组织 21
一、Windows编程基本概念 21
第一节Windows编程基本概念 21
第二章MFC4.0构成分析 21
2.窗口 22
3.消息 22
4.图形设备接口(GDI) 22
5.VC/MFC实现(消息映射) 22
6.文档与视 23
第二节应用框架 24
一、“应用框架”的优点 24
二、MFC4.0的功能支持 24
三、“应用框架”如何实现你的应用 25
3.数据 26
1.LWinApp类 26
2.窗口 26
四、“应用框架”与你的“代码”的关系 28
五、例子分析 28
1.浏览工程类 29
2.文档和视 31
第三章文档模板——文档与视结构 36
第一节文档和视 36
一、视 36
1.视的概念 36
2.视的应用 37
3.滚动视 38
4.VC4.1视类 39
二、文档 40
1.文档的存取管理(序列化) 40
2.CArchive类 43
三、文档模板 44
1.文档模板的意义 44
2.文档模板的创建 44
3.文档与视的交互 45
2.单文档开发所需要的类 46
1.单文档应用的建立 46
四、单文档(SDI) 46
五、多文档(MDI) 47
1.多文档应用实现 47
2.多文档开发所需要的类 47
第二节文档应用 48
一、创建一个单文档的应用框架 48
二、滚动视 48
三、一个简单的文档组织 50
1.文档数据结构安排 50
四、增加菜单功能 55
1.资源编辑 55
2.文档类的修改 55
2.菜单编辑 56
3.在编程中对菜单命令进行处理 56
五、实现位图菜单 58
六、窗口内拖动的实现(Tracker) 60
第三节文档的多视 61
一、切分多视 62
1.切分多视的选择 62
2.切分多视的使用 62
二、基于文档模板的多视 64
1.创建文档模板 65
3.如何使用文档模板 66
2.文档模板如何加入到应用中 66
三、较低层的多视 67
1.文档的管理 67
2.视的组织 67
1.文档和视如何联系 67
第四章图形处理功能 73
第一节图形设备接口(GDI) 73
一、设备环境表(Device Context) 73
二、映设方式 74
1.“固定比例”的映射方式 75
2.“比例可变”的映射方式 75
3.用户坐标体系 76
2.全窗口坐标体系 76
四、坐标的转换 76
三、绘图坐标 76
1.屏幕坐标体系 76
五、VC的编程接口 77
1.有关DC类 78
2.DC类对象的获取 78
3.CDC的映射模式功能 78
六、其它设备的DC 81
第二节CDC类的位图功能 83
一、与设备无关的位图(DIB) 83
1.BMP文件头 83
2.位图(DIB)结构组织 84
一、对话框 103
第五章更一般的窗口——对话框 103
第一节对话框概述 103
二、对话框的分类 104
三、控制 104
四、对话框与控制的关系 104
五、资源编辑器 105
六、VC4.1对话框应用编程接口 106
1.CDialog类 106
2.控制类 107
第二节对话框的一般应用 107
一、对话框的创建 107
3.创建对话框 108
1.创建对话框模式 108
2:派生一个CDialog类 108
4.创建有模式对话框 109
5.创建无模式对话框 110
二、对话框的设计 113
1.设计对话框模板 113
2.设计“对话框类” 114
3.用Class Wizard增加控制变量 114
4.用Class Wizard增加控制功能 114
5.实现“控制功能” 114
三、一个简单的对话框应用 115
1.创建一个对话框模板 115
4.调用对话框 116
2.创建对话框类 116
3.修改对话框类 116
5.对返回属性的处理 117
第三节无模式对话框 119
一、基于对话框的应用 119
二、无模式对话框 121
1.更像一个一般的窗口 121
2.无模式对话框的生命期 121
3.无模式对话框的无意返回 121
三、对话框的多样性 122
1.对话框的多样性 122
2.对话框的包容性 123
第一节集合类 124
一、集合类的分类 124
二、集合类的形状 124
第六章动态数据结构——集合类 124
三、基于模板的集合类 125
四、非模板的集合类 125
五、集合类的选择 126
六、集合类的使用 127
2.链表(List) 129
3.映射类(Map) 129
1.列表(Array) 129
七、对所有元素的访问 129
八、对集合类元素的序列化 130
第二节集合类的应用 131
一、利用集合类来创建新的数据结构 131
1.创建堆栈 132
2.创建队列 133
二、在应用中使用集合类 133
1.利用集合类来实现文档的操作恢复功能(Un Do) 134
第七章 进程和线程 136
第一节概述 136
一、进程 136
1.32位系统进程的有关概念 136
1.Win32线程的概念 137
二、线程 137
2.VC/MFC编程接口 137
2.VC/MFC编程接口 138
三、同步 138
1.应用中线程间的同步 139
2.VC/MFC的编程接口 140
第二节多线程应用 140
一、创建线程 140
1.创建工作者线程 140
2.创建交互线程 142
二、线程的终止 143
1.工作者线程 144
三、编程实例 144
2.交互线程 146
第三节线程间的同步 157
一、线程局部存储区 157
二、窗口消息映射(Windows Handle Maps) 158
1.对象传递 158
2.用户自定义的消息机制 159
三、同步类的使用 159
1.VC/MFC同步类介绍 159
2.同步类的使用 160
3.线程安全类的设计 161
四、线程同步 162
一、属性页类介绍 163
第八章Windows95新功能的支持 163
第一节属性页功能 163
1.类CPropertyPage 164
2.类CPropertySheet 164
二、一个简单的属性页应用 166
1.创建一个单文档应用 166
2.创建属性页面 167
3.调用属性页(创建) 167
三、创建自己的属性页功能 168
1.属性页面对象的确定(即page) 169
2.属性页面的管理者(即sheet) 169
一、弹出菜单 173
第二节弹出菜单和其它功能 173
1.弹出菜单就是菜单 174
2.对菜单命令的处理 174
二、菜单对象(CMenu) 174
1.CWnd的菜单功能 176
2.对弹出菜单的命令处理 177
3.应用 177
三、其它功能 178
2.模块的共享 180
1.连接与模块的重用 180
一、什么是动态连接库 180
第一节动态连接库及其VC4.1的实现 180
第九章动态连接库——DLL 180
第二篇 Visual C++4.1高级技术 180
3.可执行程序 181
4.模块 182
二、类库“动态连接库” 183
1.“静态连接方式” 184
2.作为“共享动态连接库”的方式 185
三、动态连接库的使用 185
2.引出 186
1.内存使用 186
二、类库DLL的注意点 186
一、类库DLL的扩展的意义 186
第二节类库DLL的扩展 186
3.直接从类库构造对象 187
三、创建类库DLL扩展 187
1.定义文件 187
2.引入库 187
第十章复合文档——OLE容器 190
第一节OLE技术介绍 190
一、了解一点OLE知识 190
二、OLE的发展 191
三、OLE的基本概念 191
1.对象 191
2.连接与陷入 192
4.拖动(Drag and Drop) 193
3.剪贴板(Clipboard) 193
5.复合文档 194
6.服务器与容器 194
7.OLE动词 195
四、登记注册 195
五、OLE层次分析 196
1.服务器一端 196
1.服务器类 197
2.容器应用类 197
六、VC4.1 OLE支持 197
2.容器一端 197
3.自动化服务(OLE Automation) 198
七、OLE的优点 198
第二节OLE服务器 198
一、创建一个OLE服务器应用框架 201
1.使用AppWizard 201
2.框架浏览 201
二、有关类的分析 205
三、实现你的服务功能 205
1.实现应用功能 205
2.实现OLE服务器功能 205
第三节容器应用 207
2.Build并运行 212
一、新建一个工程(Ole0—2) 212
1.新建工程 212
二、实现容器功能 213
1.修改客户对象 213
2.对视的有关修改 215
3.实现对象的Edit功能(copy/paste) 218
4.实现拖动功能 222
5.对象激活功能 227
一、部件(component) 229
1.OLE控制并不是一个新的东西 229
二、什么是OLE控制 229
第一节OLE控制的基本概念 229
第十一章OCX——OLE控制 229
2.OLE控制 230
三、OLE控制容器 230
四、方法(Method) 230
五、属性和属性页 231
1.定义 231
2.分类 231
3.属性页 232
六、事件 232
七、OLE控制的使用 232
3.进行有关的消息处理(事件) 233
2.在对话框模板上加入OLE控制 233
1.DLE控制的引入 233
第二节OLE控制的创建 234
一、ControlWizard 234
二、修改控制位图 235
三、修改CLE控制的About对话框 236
四、创建控制(Build) 236
五、OLE控制的注册 236
六、OLE控制的测试 237
1.工具的调用过程 237
2.工具的使用 237
1.增加BackColor属性 239
七、固有属性(Stockproperty) 239
2.设置缺省背景色 240
3.修改绘制功能On Draw 240
二、用户属性(Custom) 241
1.增加一个属性Time 241
2.增加一个帮助函数GetCode() 241
3.修改OnDraw() 241
4.修改控制属性页 241
5.增加一动态设置功能 242
第十二章部件对象模型——COM 243
第一节概述 243
一、OLE的本质 243
三、OLE信息管理 244
二、部件对象模型(COM) 244
四、OLE部件和界面 245
五、界面及界面实现 245
1.一个界面不是一个C++类 246
2.一个界面也不是一个C++的对象 246
3.界面是不可更改的协议 246
4.界面是一个很强的类型 246
六、OLE类对象和标识 246
第二节复合文件及其使用 247
一、目录结构和IStorage 247
二、流和IStream 247
五、应用实例 248
四、复合文件的使用场合 248
三、复合文件的结构 248
第十三章 数据库——ODBC与DAO 282
第一节VC对数据库的支持 282
一、开放数据库连通性(ODBC) 284
1.ODBC的部件 284
2.ODBC标准 285
3.ODBC与SQL 285
4.ODBC MFC类 286
二、数据的直接访问(DAO) 287
1.DAO的优点 287
3.DAO的有关类 288
2.DAO与ODBC 288
第二节数据库应用 289
一、ODBC应用 289
1.ODBC使用基础 289
2.CRecorcset类的用法 290
3.CRecordset的SQL功能 290
二、DAO应用 292
1.类CMydBase 292
2.类CDaoSet 292
第十四章网络功能——Windows Socket 311
第一节 网络基础及Windows Socket 311
1.网络协议 312
一、网络基础 312
2.网络寻址 314
二、Windows Socket 315
1.有关网络编程接口 315
2.套接字(Socket) 315
3.Windows Socket 315
第二节网络应用编程实现 319
一、Windows Socket初始化 320
二、从CSocket派生一个类CExsocket 320
三、定义一个消息处理CMsg 321
四、修改文档类(CEx Sock Dos) 323
2.增加一个发送视 330
五、修的视 330
1.基本视CExSockView 330
六、增加连接设置对话框(Setup Dlg) 335
第十五章MAPI——电子信息编程接口 337
第一节MAPI概念和结构 337
一、MAPI的特征 337
二、MAPI结构 339
1.客户应用 339
2.消息子系统 339
三、客户应用 340
四、Spooler 340
3.服务提供者(Services Providers) 340
五、地址手册提供者 341
六、服务提供者 342
七、MAPI子系统 343
八、传送提供者 343
九、消息服务 344
十、消息存储提供者 345
1.消息存储区的概念 345
2.消息存储区的用途 345
十一、MAPI的形态——FORM 346
十二、描述文件(Profiles) 347
十三、MAPI的MFC支持 347