第1章 Visual C++6.0集成开发环境 1
1.1 Visual C++6.0工程及其文件构成 1
1.1.1 Visual C++中的文件 1
11.2 工作空间中的文件 2
1.1.3 可以创建的文件类型和工程类型 2
1.2 启动Visual C++6.0 4
1.2.1 Visual C++6.0的启动界面 4
1.2.2 Visual C++6.0的功能菜单 5
1.3.2 应用程序向导AppWizard 9
1.3.1 项目工作区 9
1.3 Visual C++6.0集成开发环境概述 9
1.3.3 向导ClassWizard 10
1.3.4 向导工具栏WizardBar 14
1.4 小结 15
1.5 练习题 16
第2章 程序开发基础 17
2.1 C++语法基础 17
2.1.1 C++程序的构成 17
2.1.2 C++的语言基础 19
2.1.3 C++中的类与对象 22
2.1.4 类的继承和多态性 23
2.1.5 C++中的输入/输出流 24
2.2 AppWizard的使用 25
2.2.1 AppWizard第一步 25
2.2.2 AppWizard第二步 26
2.2.3 AppWizard第三步 27
2.2.4 AppWizard第四步 28
2.2.5 AppWizard第五步 29
2.2.6 AppWizard第六步 29
2.3.1 创建过程 30
2.3 一个简单的应用程序 30
2.3.2 编译、链接并运行程序 32
2.4 程序结构剖析 33
2.4.1 CAboutDlg类 33
2.4.2 CEg2_1App类 33
2.4.3 CEg2_1Doc和CEg2_1View类 34
2.4.4 CMainFrame类 37
2.5 Win32编程基础 39
2.5.1 Win32数据类型 39
2.5.2 句柄 39
2.6 小结 40
2.5.3 标识符命名 40
2.7 练习题 41
第3章 构造应用程序框架 42
3.1 单文档应用框架 42
3.1.1 创建过程 42
3.1.2 CEg3_1App应用程序运行过程 45
3.1.3 InitInstance()函数 45
3.2 多文档应用框架 47
3.2.1 创建过程 47
3.2.2 单文档应用程序和多文档应用程序的比较 48
3.3.1 创建过程 49
3.3 基于对话框的应用框架 49
3.3.2 InitInstance()函数分析 50
3.4 程序运行流程分析 51
3.4.1 Windows的编程模式 51
3.4.2 MFC应用程序的运行过程 52
3.4.3 三种应用程序框架的异同 53
3.5 小结 53
3.6 练习题 53
4.2 根类:CObject 55
4.1 Microsoft类库概述 55
第4章 Microsoft类库基础 55
4.3 MFC应用程序框架结构类 56
4.3.1 CWinApp类 56
4.3.2 CDocument类 57
4.3.3 CView类 58
4.4 MFC窗口类 59
4.5.2 CNotSupportedException:(Request for an unsupported operation,系统不支持的操作) 60
4.5.3 CArchiveException:(Archive-specific exception文件归档异常) 60
4.5.1 CMemoryException:(Out-of-memory exception,内存不足异常) 60
4.5 MFC异常类 60
4.5.4 CFileException:(File-specific exception,文件操作异常) 61
4.5.5 CResourceException:(Windows resource not found or not creatable,资源未找到) 61
4.6 MFC文件类 62
4.6.1 打开和关闭文件 62
4.6.2 文件的读写 62
4.6.3 CStdioFile类 62
4.6.4 CMemFile类 62
4.6.5 CArchive类 62
4.7.2 图形对象类 63
4.7.1 设备环境类 63
4.7 绘图和打印类 63
4.6.6 CSocketFile类 63
4.8 ODBC类 64
4.8.1 CDatabase类 64
4.8.2 CRecordset类 65
4.8.3 CRecordView类 66
4.9 小结 66
4.10 练习题 66
5.1.1 系统生成的菜单 67
5.1 编辑菜单资源 67
第5章 菜单、工具栏与状态栏 67
5.1.2 菜单的编辑 68
5.2 使用ClassWizard添加消息处理函数 73
5.2.1 为应用程序添加消息处理函数 73
5.2.2 MessageBox()函数 74
5.3 加入键盘加速键 75
5.3.1 键盘加速键的含义 75
5.3.2 添加键盘加速键 75
5.4.1 工具栏 76
5.4 工具栏和状态栏 76
5.4.2 用MFC创建工具栏 77
5.4.3 创建一个实际的工具栏 78
5.4.4 状态栏 82
5.5 小结 85
5.6 练习题 85
第6章 对话框 87
6.1 消息映射 87
6.2 定义对话框 88
6.3.2 应用实例 91
6.3 通用对话框 91
6.3.1 通用对话框 91
6.4 消息对话框 92
6.5 属性对话框 93
6.6 鼠标和键盘消息 95
6.6.1 鼠标消息 95
6.6.2 键盘消息 97
6.7 小结 98
6.8 练习题 99
7.1.1 控件的手工编辑 100
7.1.2 控件的操作和使用 100
第7章 控件与功能函数 100
7.1 控件概述 100
7.1.3 用于常用控件的通知 101
7.2 静态控件 101
7.3 按钮控件 101
7.3.1 按钮控件的样式 102
7.4 编辑框控件 103
7.4.1 按钮控件的样式 103
7.3.3 按钮控件消息 103
7.3.2 类CButton 103
7.4.2 CEdit类所有成员函数 104
7.4.3 编辑框控件消息 104
7.5 列表框控件 104
7.5.1 列表框控件样式 104
7.5.2 类CListBox常用成员函数 105
7.5.3 列表框控件消息 105
7.6 组合框控件 105
7.6.1 组合框控件样式 105
7.7.1 滚动条控件样式 106
7.7 滚动条控件 106
7.6.3 组合框控件消息 106
7.6.2 类CComboBox常用成员函数 106
7.7.2 类CScrollBar 107
7.7.3 滚动条控件消息 107
7.8 常用控件应用实例 108
7.8.1 创建对话框资源 108
7.8.2 生成对话框类 110
7.8.3 为控件建立相关联的成员变量 111
7.8.4 成员变量的初始化 112
7.8.5 建立消息映射与响应函数 112
7.8.6 函数建立与调用 113
7.8.7 重载其他函数 115
7.8.8 运行程序 116
7.9 小结 116
7.10 练习题 116
第8章 高级控件 118
8.1 高级控件简介 118
8.2 动画控件 118
8.2.1 动画控件的样式 118
8.2.2 CAnimateCtrl类 119
8.3 标签控件 119
8.3.2 类CTabCtrl 120
8.3.3 标签控制的操作方法 120
8.3.1 标签控件的样式 120
8.3.4 应用实例 121
8.4 列表控件 122
8.4.1 列表控件的样式 122
8.4.2 CListCtrl类 122
8.4.3 应用实例 124
8.5 树形控件 125
8.5.1 树形控件的样式 125
8.5.2 CTreeCtrl类 125
8.5.3 应用实例 127
8.6 旋转按钮控件 128
8.6.1 旋转按扭控件的样式 128
8.6.2 CSpinButtonCtrll类 129
8.7 滑动条控件 129
8.7.1 滑动条控件的样式 129
8.7.2 CSliderCtrl类 130
8.8 进度条控件 130
8.8.1 进度条控件的样式 131
8.8.2 CProgressCtrl类 131
8.10 练习题 134
8.9 小结 134
第9章 绘图与打印 135
9.1 设备环境类 135
9.1.1 设备环境类CDC 135
9.1.2 其他设备环境类 136
9.2 GDI对象 138
9.3 坐标与坐标模式 139
9.3.1 固定映射模式 140
9.3.2 可变映射模式 140
9.4 常用绘图函数 141
9.3.3 坐标转换 141
9.4.1 常用位置类 142
9.4.2 简单图形函数 142
9.5 绘图实例 143
9.6 字体 149
9.7 画刷 153
9.8 打印和打印预览 154
9.8.1 打印控制流程 155
9.8.2 打印循环 156
9.8.3 打印预览 156
9.10 练习题 159
9.9 小结 159
10.1 MFC提供的数据库访问类 161
10.1.1 CDatabase类 161
第10章 访问数据库和文件读写 161
10.1.2 CRecordset类 163
10.1.3 CRecordView类 164
10.1.4 CDBException类 164
10.1.5 CFieldExchange类 164
10.2 建立、连接数据源 164
10.2.2 建立数据源 165
10.2.1 启动ODBC驱动程序 165
10.3 建立访问数据库的应用程序 167
10.3.1 建立并连接数据库 167
10.3.2 创建访问数据库的应用程序 167
10.4 实现数据访问 169
10.4.1 设计主窗体 169
10.4.2 添加变量 170
10.4.3 运行应用程序 171
10.5.3 编辑记录 172
10.5.2 删除记录 172
10.5 增加和删除记录 172
10.5.1 增加新记录 172
10.5.4 添加处理记录的功能 173
10.6 程序分析 175
10.6.1 三个主要函数的代码分析 175
10.6.2 程序运行机制分析 176
10.7 文件的读写 179
10.7.1 int fopen(string filename, string mode)函数 179
10.7.3 int rewind(int fp)函数 180
10.7.4 fread函数和fwrite函数 180
10.7.2 int fseek(int fp, int offset, [, int whence])函数 180
10.7.5 序列化 181
10.7.6 CFile类 182
10.8 小结 183
10.9 练习题 183
第11章 MFC的进程和线程 185
11.1 Win32的进程和线程概念 185
11.1.1 进程的概念 185
11.1.2 线程的概念 185
11.2 进程编程 186
11.2.1 进程的创建 186
11.2.2 进程的管理和终止 187
11.2.4 进程的终止 188
11.2.3 取得和设置进程的优先级 188
11.2.5 判断一个进程是否终止 189
11.3 Win32中关于多线程的几个函数 189
11.3.1 线程的创建 190
11.3.2 CreatRemoteThread函数 190
11.3.3 SuspendThread和ResumeThread函数 191
11.3.4 ExitThread和TerminateThread函数 191
11.3.5 取得一个线程的优先级的函数 191
11.4.1 与多线程编程相关的全局函数 192
11.4 MFC中多线程的实现 192
11.4.2 CWinThread类 193
11.4.3 工作者线程的创建 195
11.4.4 创建用户界面线程 195
11.5 线程之间的通信 196
11.6 线程的调度和同步 196
11.6.1 临界段对象 197
11.6.2 互斥对象 198
11.6.3 事件对象 199
11.6.4 信号量对象 200
11.6.5 各种同步方法的比较 201
11.7 应用实例 202
11.7.1 用户界面的设计 203
11.7.2 新增成员变量及初始化 204
117.3 创建菜单响应函数 205
11.7.4 创建游戏者线程 205
11.7.5 创建机器线程 207
11.7.6 修改系统界面 208
11.9 练习题 210
11.8 小结 210
11.7.7 运行程序 210
第12章 串口通信程序的开发 212
12.1 串口通信的内部机制 212
12.1.1 Windows串行通信的工作原理 212
12.1.2 串行通信的操作方式 212
12.1.3 单线程与多线程下的串口通信 213
12.2 串口通信的实现 214
12.2.1 串口的初始化 214
12.2.2 串口的配置 215
12.2.3 超时设置 215
12.2.5 串口的读操作 216
12.2.4 串口的写操作 216
12.2.6 关闭串口 217
12.3 串口通信程序举例 217
12.3.1 建立基于对话框的程序 218
12.3.2 添加控件 218
12.3.3 建立按钮的消息响应函数 219
12.3.4 重载对话框类的初始化函数OnInitDialog()函数 220
12.3.5 程序运行结果 222
12.5 练习题 224
12.4 小结 224
第13章 动态链接库 225
13.1 DLL基础知识 225
13.1.1 DLL概述 225
13.1.2 DLL与LIB的区别 226
13.1.3 DLL与EXE的区别 226
13.1.4 DLL的两种动态链接方法 227
13.2 DLL入/出口函数 228
13.2.1 DllMain函数 228
13.2.2 MFC AppWizard生成的Regular DLL入/出口 229
13.3.1 使用DEF文件导出函数 230
13.3 从DLL中导出函数 230
13.3.2 使用关键字_declspec(dllexport) 231
13.3.3 使用AFX_EXT_CLASS导出 231
13.4 DLL中的数据和内存 231
13.4.1 DLL多进程间的数据共享 231
13.4.2 DLL进程中多线程间的数据隔离 232
13.5 几种常用的DLL 233
13.5.1 Win32 DLL 233
13.5.2 Regular statically linked to MFC DLL 234
13.5.4 MFC Extension DLL 235
13.5.3 Regular using the shared MFC DLL 235
13.6 DLL的调用和调试 236
13.6.1 VC对DLL的调用 236
13.6.2 VB对DLL的调用 237
13.6.3 DLL的调试 237
13.7 DLL例程 237
13.7.1 使用已有的DLL 237
13.7.2 资源DLL 240
13.7.3 使用自己的DLL 247
13.8 小结 250
13.9 练习题 250
参考文献 251