第1章 语言基础 1
1.1 基础语句 2
0001 注释的使用方法及注意事项 2
0002 使用汇编语言 2
0003 如何使用内联函数 2
0004 如何使用#define自定义宏 3
0005 使用goto语句进行无条件跳转 3
0006 while循环转为for循环 3
0007 do while循环的分析与使用 4
0008 利用条件运算符简化代码 4
0009 使用exit函数退出进程 5
0010 函数exit的注意事项 5
0011 调试无限循环 5
0012 控制台输入/输出 5
0013 delete与delete []的差别 6
0014 符号#、##、#@的用法 6
0015 将某个地址转换为指针 6
0016 常用内存分配及释放函数 6
0017 生成小于100的随机数 7
1.2 类型与变量 7
0018 静态变量的定义及应用 7
0019 使用全局变量的注意事项 7
0020 如何使用全局对象 7
0021 变量作用范围 8
0022 创建自己的变量类型 8
0023 如何声明同样类型的多个变量 8
0024 extern关键字的使用 9
0025 const关键字的应用范围 9
0026 去除const属性的转换 9
0027 使用enum定义类型 10
0028 定义只有零个元素的数组 11
0029 利用零进行初始化的对象 11
0030 初始化数组的简单方法 11
0031 结构体的字节对齐 11
1.3 模板与函数 12
0032 成员函数的模板不可以是虚函数 12
0033 利用递归函数计算阶乘 12
0034 函数模板的应用 13
0035 使用指针数组 13
0036 函数指针数组的应用 13
0037 函数重载的注意事项 14
0038 使用typename关键字 14
1.4 引用 14
0039 使函数返回多个值 14
0040 如何使用引用 15
0041 如何应用值传递参数 15
0042 赋值与初始化的区别 16
0043 如何初始化左值 16
1.5 名称空间 16
0044 为什么使用命名空间 16
0045 如何定义及访问命名空间 16
0046 利用命名空间解决命名冲突 17
0047 名称空间简单应用 18
0048 使用:: 运算符调用全局函数 18
0049 :: 使用命名空间的注意事项 18
1.6 继承 19
0050 两个类互为成员的声明 19
0051 为什么要避免直接存取数据成员 19
0052 避免使用memset初始化对象 19
0053 C++类中成员初始化的顺序 19
0054 基类的析构函数应该是虚方法 20
0055 访问限定符分析 21
0056 访问其他类的私有成员函数 21
0057 如何定义友员类 22
1.7 多态 23
0058 纯虚函数的使用 23
0059 覆盖基类的成员函数 23
0060 如何应用多重继承 24
0061 如何利用虚函数实现动态绑定 25
0062 如何利用抽象类进行数据封装 25
0063 数据类型与类对象大小的区别 26
0064 实现类的强制转换 26
1.8 高级函数 27
0065 如何重载操作符 27
0066 如何定义重载函数 28
0067 默认构造函数 28
0068 复制构造函数 28
0069 this指针分析 29
0070 如何用非静态的类成员函数作为线程函数 29
0071 如何在常量函数中修改数据成员 30
1.9 STL模板库 30
0072 为什么在程序中广泛使用STL 30
0073 如何在STL中使用容器 30
0074 STL算法的优点 31
0075 如何设计和使用STL迭代器 31
0076 使用STL需要包含哪些头文件 32
0077 STL简单应用 32
1.10 C++.NET语法 33
0078 在C++.NET中如何判断空指针 33
0079 C++与C++.NET中纯虚函数的区别 33
0080 C++.NET中数据类型转换的方法 33
0081 在C++.NET中如何定义具有输出参数的函数 33
0082 C++.NET中如何实现方法的默认参数 33
0083 在C++.NET中如何获取系统信息 34
第2章 数据类型 35
2.1 常用类型 36
0084 CString的多种初始化方式 36
0085 Windows字符串指针类型分析 36
0086 BSTR类型与CString类型的相互转换 36
0087 _bstr_与其他字符串类型的相互转换 37
0088 _VARIANT类型的初始化 37
0089 _variant_t与字符串类型的转换 38
0090 ColeVariant与其他数据类型的转换 38
0091 格式化类型 39
第1章 语言基础 1
1.1 基础语句 2
0001 注释的使用方法及注意事项 2
0002 使用汇编语言 2
0003 如何使用内联函数 2
0004 如何使用#define自定义宏 3
0005 使用goto语句进行无条件跳转 3
0006 while循环转为for循环 3
0007 do while循环的分析与使用 4
0008 利用条件运算符简化代码 4
0009 使用exit函数退出进程 5
0010 函数exit的注意事项 5
0011 调试无限循环 5
0012 控制台输入/输出 5
0013 delete与delete []的差别 6
0014 符号#、##、#@的用法 6
0015 将某个地址转换为指针 6
0016 常用内存分配及释放函数 6
0017 生成小于100的随机数 7
1.2 类型与变量 7
0018 静态变量的定义及应用 7
0019 使用全局变量的注意事项 7
0020 如何使用全局对象 7
0021 变量作用范围 8
0022 创建自己的变量类型 8
0023 如何声明同样类型的多个变量 8
0024 extern关键字的使用 9
0025 const关键字的应用范围 9
0026 去除const属性的转换 9
0027 使用enum定义类型 10
0028 定义只有零个元素的数组 11
0029 利用零进行初始化的对象 11
0030 初始化数组的简单方法 11
0031 结构体的字节对齐 11
1.3 模板与函数 12
0032 成员函数的模板不可以是虚函数 12
0033 利用递归函数计算阶乘 12
0034 函数模板的应用 13
0035 使用指针数组 13
0036 函数指针数组的应用 13
0037 函数重载的注意事项 14
0038 使用typename关键字 14
1.4 引用 14
0039 使函数返回多个值 14
0040 如何使用引用 15
0041 如何应用值传递参数 15
0042 赋值与初始化的区别 16
0043 如何初始化左值 16
1.5 名称空间 16
0044 为什么使用命名空间 16
0045 如何定义及访问命名空间 16
0046 利用命名空间解决命名冲突 17
0047 名称空间简单应用 18
0048 使用:: 运算符调用全局函数 18
0049 :: 使用命名空间的注意事项 18
1.6 继承 19
0050 两个类互为成员的声明 19
0051 为什么要避免直接存取数据成员 19
0052 避免使用memset初始化对象 19
0053 C++类中成员初始化的顺序 19
0054 基类的析构函数应该是虚方法 20
0055 访问限定符分析 21
0056 访问其他类的私有成员函数 21
0057 如何定义友员类 22
1.7 多态 23
0058 纯虚函数的使用 23
0059 覆盖基类的成员函数 23
0060 如何应用多重继承 24
0061 如何利用虚函数实现动态绑定 25
0062 如何利用抽象类进行数据封装 25
0063 数据类型与类对象大小的区别 26
0064 实现类的强制转换 26
1.8 高级函数 27
0065 如何重载操作符 27
0066 如何定义重载函数 28
0067 默认构造函数 28
0068 复制构造函数 28
0069 this指针分析 29
0070 如何用非静态的类成员函数作为线程函数 29
0071 如何在常量函数中修改数据成员 30
1.9 STL模板库 30
0072 为什么在程序中广泛使用STL 30
0073 如何在STL中使用容器 30
0074 STL算法的优点 31
0075 如何设计和使用STL迭代器 31
0076 使用STL需要包含哪些头文件 32
0077 STL简单应用 32
1.10 C++.NET语法 33
0078 在C++.NET中如何判断空指针 33
0079 C++与C++.NET中纯虚函数的区别 33
0080 C++.NET中数据类型转换的方法 33
0081 在C++.NET中如何定义具有输出参数的函数 33
0082 C++.NET中如何实现方法的默认参数 33
0083 在C++.NET中如何获取系统信息 34
第2章 数据类型 35
2.1 常用类型 36
0084 CString的多种初始化方式 36
0085 Windows字符串指针类型分析 36
0086 BSTR类型与CString类型的相互转换 36
0087 _bstr_与其他字符串类型的相互转换 37
0088 _VARIANT类型的初始化 37
0089 _variant_t与字符串类型的转换 38
0090 ColeVariant与其他数据类型的转换 38
0091 格式化类型 39
2.2 类型转换 39
0092 CString和char*之间的转换 39
0093 char与char*类型应用 39
0094 COLORREF类型转换RGB分量 40
0095 DWORD与 WORD之间的转换 40
0096 WORD与BYTE之间的转换 40
0097 字符串数值转换 40
2.3 字符串截取与转换 41
0098 获取字符串中的中文 41
0099 英文字符串首字母大写 41
0100 指定符号分割字符串 42
0101 在文本中删除指定的中文或中文句子 43
0102 替换指定的字符串 44
0103 向字符串中添加子字符串 44
0104 截取字符串中的数字 45
0105 将选定字符转换成大写 46
0106 截取指定位置的字符串 47
2.4 字符串的比较与判断 48
0107 判断字符中是否有中文 48
0108 判断字符串是否可以转换成整数 48
0109 如何判断字符串是否含有数字 49
0110 判断指定位置字符的大小写 49
0111 判断字符串中是否有指定的字符 50
0112 两个字符串进行比较 50
0113 在进行字符串比较时忽略大小写 50
0114 获取字符串中的英文子字符串 51
2.5 字符串技巧 52
0115 字符串加密 52
0116 字符串连接 52
0117 如何在字符串中使用双引号 53
0118 如何在字符串中添加多个空格 53
0119 字符反转 53
0120 去除字符首尾空格 53
0121 去除字符串中所有的空格 53
2.6 字符串应用 54
0122 将选定内容复制到剪贴板 54
0123 在ListBox中查找的字符串 54
0124 编辑框的行数,以及回车换行的数量 55
0125 字符串数组搜索 55
0126 设置编码方式 56
2.7 字符串统计 56
0127 如何统计中文个数 56
0128 获取字符串中数字位置 56
0129 获取字符在字符串中最后出现的位置 57
0130 获取大写字符的位置 58
0131 统计字符个数 59
0132 获取字符在字符串中出现的位置 60
0133 获取字符在字符串中出现的次数 61
0134 获取指定字符起始位置 62
0135 获取字符串中英文字母个数 63
第3章 开发环境 65
3.1 扩展开发环境 66
0136 利用VBScript脚本扩展Visual C++开发环境 66
0137 在Visual C++集成开发环境中定制自己的工具栏 70
0138 向Visual C++开发环境中添加插件 71
3.2 编译程序 72
0139 头文件的预编译 72
0140 Debug版本与Release版本的区别 72
0141 如何编译Unicode版本的应用程序 72
0142 Visual C++中加快链接速度 72
0143 强制编译器生成内联代码 72
0144 如何禁止函数内联 72
0145 如何让控制台应用程序支持MFC类库 73
3.3 编程技巧 73
0146 在代码编辑器中使用代码录制功能 73
0147 快速调整控件的Tab键顺序 73
0148 从位图中获取工具条资源 73
0149 从其他文件中抓取资源 74
0150 生成自定义的关键字 74
0151 利用Visual C++修改可执行文件的图标 74
0152 如何使用源代码浏览工具 74
0153 在一个工作区中管理多个工程 75
0154 如何将控件分组 75
0155 注册自己的对话框模板 75
0156 如何彻底地从工程中删除一个类 75
0157 在类向导中处理没有发现的窗口消息 76
0158 如何导入lib文件 76
0159 完全取词功能不可用 76
0160 判断代码中的括号是否匹配 76
0161 如何对齐零乱的代码 77
0162 显示函数参数 77
0163 在类向导中处理没有发现的窗口消息 77
0164 如何汉化可执行文件 77
0165 查看Exe或Dll文件中的资源 78
0166 _T()在代码中的含义 78
0167 运行时库和静态库与DLL的比较 78
0168 快速删除项目下Debug 文件夹中临时文件 78
0169 Visual C++文件扩展名介绍 78
0170 Visual C++快捷键 79
3.4 程序调试 82
0171 在发行版本中调试程序 82
0172 在Visual C++中如何进行远程调试 82
0173 利用简单断点进行程序调试 82
0174 利用数据断点进行程序调试 83
0175 利用条件断点进行程序调试 84
0176 利用消息断点进行程序调试 85
0177 检测内存泄漏 86
0178 利用Watch调试窗口查看对象信息 87
0179 利用Call Stack窗口查看函数调用信息 87
0180 利用Memory窗口查看内存信息 88
0181 利用Variables窗口查看变量信息 88
0182 利用Registers窗口查看CPU寄存器信息 89
0183 利用Disassembly窗口查看汇编信息 90
0184 如何确定GetLastError返回的错误代码的含义 91
0185 在Watch窗口中获得当前线程的最后错误代码 91
0186 调试Dll 92
0187 如何调试指针数组 92
第4章 MFC实用技术 93
4.1 MFC常用宏应用 94
0188 获取32位整数的低字节和高字节数据 94
0189 将两个16位数组合为一个32位数 94
4.2 MFC常用函数 94
0190 MFC常用调试函数 94
0191 判断某个句柄是否关联一个窗口 95
0192 MFC应用程序信息和管理函数 95
0193 Internet URL解析全局函数 95
4.3 MFC框架技术 96
0194 在类的定义时使其具有运行时类型识别的功能 96
0195 运行时判断某个对象是否是指定的类型 96
0196 禁止文档/视图应用程序运行时显示视图选择窗口 96
0197 多个窗口消息共享同一个消息处理函数 98
0198 遍历对话框中的子控件 99
0199 在程序中捕捉CException及其派生类的异常 100
0200 扩展消息映射宏 100
0201 THIS_FILE的含义 100
0202 为静态文本控件命名 100
0203 在基于对话框的应用程序中添加文档\视图的支持 101
0204 解析浮动状态下工具栏的父窗口 101
4.4 MFC编程技术 101
0205 根据位图资源ID获取位图大小 101
0206 将某个控件对象关联到对话框中的控件资源 102
0207 将一个全局函数指针关联到对话框类的某个方法 102
0208 修改应用程序的图标 102
0209 使用安全数组 103
0210 将子窗口的客户区域映射到父窗口中 103
0211 判断两个时间段的差距 103
0212 重新设置工程名称 103
0213 为dll文件生成lib文件 104
0214 如何将一个工程中的部分资源加到另一个工程中 104
0215 根据句柄获得窗口对象的方法 104
0216 如何共享MSDN 104
0217 从完整的文件名中去除路径 104
0218 从复合字符串中解析子串 105
0219 如何获得应用程序的完整路径 105
0220 修改对话框图标的几种方法 105
0221 将多个具有不同参数的函数赋值为同一个函数指针 105
第5章 控件技术 107
5.1 常用控件技巧 108
0222 如何一次绘制多个控件 108
0223 如何使控件对齐 108
0224 如何使控件大小相同 108
0225 如何调节控件的间距 108
0226 跟随鼠标移动的控件 109
0227 使用回车键移动控件焦点 109
0228 设置控件的Tab顺序 110
0229 为多个控件设置相同属性 110
0230 遍历控件 110
0231 随对话框大小改变的控件 110
0232 为控件添加提示 111
0233 如何隐藏控件 112
0234 设置控件是否可用 112
0235 将控件复制到其他对话框中 112
5.2 静态类控件和编辑框类控件应用 112
0236 使用Picture控件显示图片 112
0237 为静态控件添加成员变量 113
0238 设置静态文本控件的背景和字体颜色 113
0239 使用静态文本控件模拟按钮单击事件 114
0240 使Static控件背景透明 114
0241 制作超级链接控件 115
0242 自定义复选框控件 116
0243 数字格式的静态文本控件 117
0244 具有分隔条的静态文本控件 119
0245 限制编辑框只能输入数字 119
0246 限制编辑框的输入字符 120
0247 限制编辑框输入字符的个数 120
0248 设置编辑框多行显示 120
0249 设置在编辑框中按回车键进行换行 121
0250 为编辑框加滚动条 121
0251 设置密码编辑框 121
0252 获得编辑框控件中文本的行数 121
0253 选中编辑框中的文本 121
0254 让两个编辑框的内容同时改变 122
0255 设计多彩边框的编辑框 122
0256 设计漂亮的编辑框控件 123
0257 保护编辑框中的密码 124
0258 背景透明的编辑框控件 125
0259 如何显示使用RichEdit控件的对话框 126
0260 对RichEdit控件中指定的字符进行替换 126
0261 使用RichEdit控件显示图片 127
5.3 按钮类控件和时间日期控件 128
0262 使用按钮控件显示图片和图标 128
0263 设置单选按钮的群组 128
0264 在CButton按钮中显示位图 129
0265 在程序运行时使单选按钮被选中 129
0266 获得一组单选按钮中被选中的按钮文本 129
0267 设置时间控件的显示格式 130
0268 使用时间控件修改系统时间 130
0269 时间控件和日历控件的关联使用 131
0270 同时在日历控件中选择多个日期 131
5.4 列表框和组合框应用 131
0271 向ListBox控件中添加文本 131
0272 向ListBox控件中的指定位置插入文本 132
0273 为ListBox控件添加水平滚动条 132
0274 在ListBox控件间实现数据交换 133
0275 避免将重复数据添加到ListBox控件 134
0276 利用ListBox控件实现复选数据功能 135
0277 在ComboBox控件的属性窗口添加数据选项 135
0278 设置ComboBox控件中数据按字母顺序排列 136
0279 带查询功能的ComboBox控件 136
0280 使用ComboBox控件列举磁盘目录 137
0281 自动调整ComboBox控件的列表宽度 138
5.5 ListControl控件、树控件和标签控件 139
0282 设置ListControl控件的显示风格 139
0283 为ListControl控件设置列标题 139
0284 为ListControl控件添加行 139
0285 为ListControl控件添加列 139
0286 设置ListControl控件的扩展风格 140
0287 设置ListControl控件数据的排列顺序 140
0288 单击ListControl控件列标题进行排序 140
0289 具有热点效果的视图控件 141
0290 具有背景的列表视图控件 143
0291 设计类似OutLook的导航列表控件 143
0292 以+、?号和线条形式显示树控件节点层级关系 149
0293 如何在程序运行时展开根节点 149
0294 动态编辑树控件的节点 149
0295 带复选功能的树控件 150
0296 使用树控件显示磁盘目录 151
0297 向TXT文件中保存并提取树控件中数据 152
0298 具有背景的树形控件 154
0299 在树形控件中利用位图添加复选框 154
0300 为标签控件添加标签 157
0301 带图标的标签控件 157
0302 设置按钮形状的标签 158
0303 在控件底部显示标签选项 158
0304 CTabCtrl控件的使用方法 158
5.6 其他基本控件应用 159
0305 为微调控件建立伙伴控件 159
0306 设置进度条控件的显示方式 159
0307 如何设置进度条控件的范围和步长 159
0308 设置滑标控件的滑块形状 160
0309 使用热键控件 160
0310 自定义滚动条控件 160
0311 设置滚动条的背景颜色 162
0312 利用CImageList绘制图标 162
0313 自定义群组框控件 162
5.7 常用ActiveX控件 163
0314 导入ActiveX控件 163
0315 使用ADO Data和DataGrid控件连接数据库 164
0316 刷新ADO Data控件的数据源 164
0317 使DataGrid控件不可编辑 165
0318 设置DataGrid控件显示时的列宽 165
0319 对DataGrid单元格数据进行计算 165
0320 将DataGrid控件中数据输出到Excel中 166
0321 使用条形码控件 167
0322 在程序中如何为条形码控件赋值 168
5.8 MSChart控件 168
0323 如何通过代码将MSChart控件关联到MSADODC控件上 168
0324 如何修改MSChart控件的字体和颜色 168
0325 显示柱型图 168
0326 显示柱型图数据对比 169
0327 显示折线图数据信息 169
0328 显示折线图数据对比 170
0329 显示饼型图 170
0330 显示多个饼型图数据对比 171
0331 使用区域进行数据对比 171
第6章 用户界面 173
6.1 窗体标题栏应用 174
0332 闪烁标题栏的窗体 174
0333 隐藏和显示标题栏 174
0334 拖动没有标题栏的窗体 174
0335 获取标题栏中的内容 174
0336 滚动的窗体标题栏 175
0337 让窗体的标题栏不响应鼠标双击事件 175
0338 无标题对话框的拖动方法 176
6.2 窗体位置和大小控制 176
0339 不可移动的窗体 176
0340 始终在最上面的窗体 176
0341 跟随鼠标移动的窗体 177
0342 控制窗体的最大化和最小化 178
0343 判断窗体是否最小化在任务栏 178
0344 可调整大小的对话框 179
0345 限制窗体的大小 179
0346 使用鼠标按键调整窗体大小 179
0347 根据图片大小显示的窗体 180
0348 获取当前鼠标点处的控件 180
0349 在标题栏上绘制控件的简单方法 181
6.3 个性化窗体 181
0350 半透明窗体 181
0351 透明窗体 182
0352 字型窗体 183
0353 圆角窗体 183
0354 以图片的形状显示窗体 184
0355 应用程序背景与桌面融合 185
0356 制作立体窗口阴影效果 186
6.4 动画窗体界面 186
0357 动画显示窗体 186
0358 淡入淡出的窗体 187
0359 如QQ般隐藏的窗体 188
0360 可横向伸展的对话框 188
0361 可纵向伸展的对话框 189
0362 调用Office助手 189
0363 屏幕滚动字幕 190
0364 在窗体中显示彩虹文字 191
0365 在窗体中实现文字横拉效果 192
0366 在窗体中实现万花筒效果 192
0367 在窗体中实现动画效果 193
6.5 实用窗体技术 195
0368 随机更换背景的窗体 195
0369 显示欢迎窗体 195
0370 显示关于窗体 196
0371 不使用ESC键关闭窗体 197
0372 关闭窗体前弹出确认对话框 197
0373 如何在主窗体显示前弹出登录框 197
0374 设置对话框背景颜色 198
0375 使用画刷绘制背景颜色 198
0376 设置窗体颜色渐变 199
0377 将对话框以位图形式保存到磁盘中 199
0378 在对话框中显示HTML文件 201
0379 在对话框中创建视图 202
0380 如何共享对话框资源 203
0381 如何实现窗体继承 203
0382 怎样使对话框的关闭按钮变灰 204
0383 模式对话框与非模式对话框的使用 204
0384 在对话框中使用CDialogBar 204
0385 如何在基于对话框的程序中为控件设置提示信息 205
6.6 光标应用 205
0386 十字光标定位 205
0387 获得光标的位置坐标 206
0388 限制光标的移动范围 206
0389 如何建立一个等待光标 207
6.7 菜单应用 207
0390 创建级联菜单 207
0391 为菜单添加快捷键 207
0392 在系统菜单中添加菜单项 207
0393 带历史信息的菜单 208
0394 设置菜单是否可用 209
0395 为菜单添加核对标记 210
0396 浮动的菜单 210
0397 单击右键弹出菜单 211
0398 可以下拉的菜单 212
0399 任务栏托盘弹出菜单 212
0400 绘制渐变效果的菜单 213
0401 将菜单项的字体设置为粗体 217
6.8 工具栏和状态栏应用 218
0402 带背景的工具栏 218
0403 在工具栏中添加编辑框 218
0404 具有提示功能的工具栏 219
0405 工具栏按钮的热点效果 220
0406 定义XP风格的工具栏 221
0407 带进度条的状态栏 222
0408 显示系统时间的状态栏 222
0409 显示滚动字幕的状态栏 223
0410 显示动画的状态栏 224
0411 使状态栏随对话框的改变而改变 224
6.9 文档视图结构应用 225
0412 向视图中放置控件 225
0413 分割窗口 226
0414 实现视图窗口的任意分割 226
0415 编辑视图CEditView类应用 227
0416 表单视图CFormView类应用 227
0417 滚动视图CScrollView类应用 227
0418 树型视图CTreeView类应用 228
0419 列表视图CListView类应用 229
0420 HTML视图CHtmlView类应用 229
0421 文档/视图结构的打印流程 230
第7章 通用对话框 231
7.1 文件对话框 232
0422 打开对话框 232
0423 可以显示图片预览的打开对话框 233
0424 另存为对话框 234
0425 隐藏文件对话框中的控件 234
0426 使用Windows 2000新型的打开对话框 235
7.2 查找替换对话框 236
0427 查找对话框 236
0428 设置查找方向 237
0429 设置是否区分大小写 237
0430 替换对话框 239
0431 设置全部替换 240
7.3 其他通用对话框 241
0432 打印对话框 241
0433 打印设置对话框 241
0434 页面设置对话框 242
0435 颜色对话框 243
0436 字体对话框 243
第8章 图形图像与多媒体 245
8.1 字体效果 246
0437 如何设计空心字 246
0438 渐变颜色的空心字 246
0439 如何设计贴图字 247
0440 获取路径点信息 248
0441 文字跟随鼠标 249
0442 空间旋转字体 250
0443 文字水平滚动 251
0444 垂直滚动的字体 252
0445 可任意旋转的文字 253
8.2 OpenGL 254
0446 制作OpenGL动画 254
0447 利用OpenGL绘制立体模型 256
8.3 特殊曲线 259
0448 绘制蜗牛线 259
0449 绘制贝塞尔曲线 260
0450 绘制正弦曲线 261
8.4 图像特效 262
0451 图像锐化处理 262
0452 图像柔化处理 264
0453 图像反色处理 265
0454 图像灰度处理 266
0455 图像浮雕效果 267
0456 图像翻转 269
0457 图像缩放 270
0458 图片剪切 271
0459 图片马赛克效果 271
0460 水平百叶窗显示图片 273
0461 垂直百叶窗显示图片 274
0462 显示3D灰色图像 275
8.5 图像控制 276
0463 在图片上绘制线条 276
0464 在图片上绘制网格 277
0465 打开高颜色质量图像 278
0466 最顶层窗体 279
0467 在视图中拖动图片 280
0468 屏幕截图 281
0469 保存屏幕图像到剪贴板 283
0470 获取图像RGB值 283
0471 显示Word艺术字 285
0472 渐隐渐显的图像 286
0473 保留椭圆下图片内容 288
0474 去除椭圆下的图片内容 289
8.6 图像基础技术 290
0475 如何创建含有位图的画刷 290
0476 保存屏幕抓图文件 290
0477 利用内存画布防止绘图时出现屏幕闪烁 291
0478 创建几何画笔 292
0479 绘制网格 293
0480 创建不同的画刷 294
0481 填充矩形区域 295
0482 模拟时钟 296
0483 颜色渐变算法 297
0484 如何绘制渐变颜色 297
0485 绘制立体模型 298
0486 如何设计字型窗体 300
0487 元文件的保存与打开 300
0488 使用IFS算法模拟山 301
0489 图像居中显示 302
0490 图片融合效果 303
0491 保存设备上下文 303
0492 将设备上下文保存到剪贴板 304
0493 复制设备上下文 304
0494 设计彩票抽奖机游戏 304
0495 手写数字识别程序 306
8.7 多媒体声音控制 309
0496 简单声音录制与播放 309
0497 可以选择播放曲目的CD播放器 310
0498 控制音量 311
0499 控制左右声道 313
0500 利用PC喇叭播放声音 313
0501 定时播放WAV文件 314
0502 开发具有记忆功能的MP3播放器 315
0503 用Visual C++编写MIDI文件播放程序 316
8.8 多媒体应用 317
0504 滚动字体的屏幕保护 317
0505 像册屏幕保护程序 318
0506 成组浏览图片 320
0507 如何设计画图程序 321
8.9 动画效果 323
0508 标题栏及任务栏动画图标 323
0509 通过Image控件实现动画 323
0510 通过DrawIcon实现图标动画 324
0511 系统托盘动态图标 324
0512 显示系统桌面助手 325
8.10 多媒体文件的播放 326
0513 播放Gif动画 326
0514 播放Flash动画 326
0515 播放RM文件 327
0516 播放VCD 329
0517 显示JPEG图像 330
8.11 Direct Show编程 331
0518 利用Direct Show进行视频捕捉 331
0519 利用Direct Show进行音频捕捉 333
第9章 Windows相关技术 337
9.1 磁盘信息 338
0520 获取驱动器的卷标 338
0521 检测软驱是否有软盘 339
0522 判断是否插入存储器 339
0523 判断光驱是否有光盘 339
0524 判断驱动器类型 340
0525 获取磁盘序列号 341
0526 获取磁盘空间信息 342
9.2 磁盘操作 343
0527 格式化磁盘 343
0528 关闭磁盘共享 343
0529 设置磁盘卷标 343
0530 磁盘碎片整理 344
0531 从FAT32转换为NTFS 344
0532 隐藏磁盘分区 345
0533 显示被隐藏的磁盘分区 345
0534 如何更改分区号 346
0535 如何监视硬盘 346
9.3 系统控制与调用 347
0536 调用外部程序的方法 347
0537 调用创建快捷方式向导 348
0538 访问启动控制面板中的各项 348
0539 控制光驱的弹开与关闭 349
0540 实现关闭、重启和注销计算机 349
0541 关闭和打开显示器 350
0542 打开和关闭屏幕保护 350
0543 关闭当前输入法 350
0544 程序发出提示音 351
0545 列举系统中的可执行文件 351
9.4 应用程序操作 352
0546 如何确定应用程序没有响应 352
0547 检索任务管理器中的任务列表 353
0548 判断某个程序是否运行 353
0549 设计具有插件功能的应用程序 355
0550 怎样在程序中执行DOS命令 359
0551 修改其他进程中窗口的标题 359
0552 如何设计换肤程序 360
0553 PE档案格式分析 364
0554 修改应用程序图标 365
0555 列举应用程序使用的dll文件 368
0556 调用具有命令行参数的应用程序 369
0557 在程序中调用一个子进程直到其结束 371
0558 提取并保存应用程序图标 371
9.5 系统工具 373
0559 为程序添加快捷方式 373
0560 用列表显示系统正在运行的程序 375
0561 如何获得毫秒级时间 376
0562 注册和卸载组件 376
0563 清空回收站 377
0564 如何在程序中显示文件属性对话框 377
9.6 桌面相关 377
0565 隐藏和显示桌面文件 377
0566 隐藏和显示开始按钮 378
0567 隐藏和显示Windows任务栏 378
0568 判断屏幕保护程序是否在运行 379
0569 判断系统是否使用大字体 379
0570 获取任务栏属性 379
0571 获取任务栏窗口句柄 379
0572 隐藏任务栏时钟 380
0573 改变桌面背景颜色 380
0574 获取桌面列表视图句柄 380
9.7 系统信息 380
0575 获取CPU ID值 380
0576 获取CPU时钟频率 381
0577 获得Windows和System的路径 381
0578 获取特殊文件夹路径 382
0579 检测系统启动模式 382
0580 判断操作系统类型 383
0581 获取当前系统的运行时间 383
0582 如何获取Windows 2000系统启动时间 384
0583 获取处理器信息 385
0584 通过内存映射实现传送数据 385
0585 检测是否安装声卡 387
0586 获取当前用户名 387
0587 获取系统环境变量 387
0588 修改计算机名称 388
0589 获取当前屏幕颜色质量 388
0590 获得当前屏幕的分辨率 388
9.8 进程与线程 389
0591 如何使用TLS 389
0592 创建线程 389
0593 创建用户界面线程 390
0594 终止线程的方法 390
0595 使进程处于睡眠状态 391
0596 启动记事本并控制其关闭 391
0597 创建闪屏线程 392
0598 利用互斥对象实现线程同步 393
0599 利用临界区实现线程同步 395
0600 利用事件对象实现线程同步 396
0601 用信号量实现线程同步 398
0602 挂起系统 399
0603 调用记事本程序并暂停其运行 399
0604 等待打开的记事本程序关闭 400
0605 禁止程序重复运行 400
0606 在Visual C++与Delphi间实现对象共享 401
9.9 消息 402
0607 如何自定义消息 402
0608 如何向Windows注册消息 402
0609 PostMessage和SendMessage函数的区别 402
0610 利用WM_COPYDATA消息实现进程间数据传递 403
9.10 剪贴板 404
0611 列举剪贴板中数据类型 404
0612 监视剪贴板复制过的内容 405
0613 通过剪贴板传递全局数据 406
9.11 鼠标键盘 407
0614 交换鼠标左右键 407
0615 设置鼠标双击的时间间隔 407
0616 获得鼠标键数 407
0617 获取鼠标下窗体句柄 407
0618 模拟鼠标单击按钮 409
0619 在程序中添加快捷键 410
0620 在对话框中使用加速键 411
0621 处理鼠标滚轮消息 411
0622 获取键盘按键 412
0623 获取键盘类型及功能号 412
0624 控制键盘指示灯 413
9.12 动态链接库与钩子 414
0625 从动态库中获取位图资源 414
0626 屏蔽键盘POWER键 415
0627 屏蔽键盘WIN键 415
0628 禁止使用Alt+F4键来关闭窗体 416
0629 枚举模块中的所有图标 417
0630 使用模块对话框资源 418
0631 替换应用程序中对话框资源 419
0632 可导出的动态链接库函数 420
0633 动态链接库动态加载 420
第10章 内核技术 423
10.1 内核对象基本概念 424
0634 内核对象的创建及在程序中的应用 424
0635 内核对象与GDI对象的区别 424
0636 如何获取进程句柄 424
0637 如何存储内核对象句柄 424
0638 线程与进程的关系 425
0639 如何在一个进程中管理多个进程 425
10.2 内核对象操作技术 425
0640 如何创建作业 425
0641 如何将进程放入作业中 425
0642 如何终止作业中的进程 426
0643 如何限制作业中的进程 426
0644 内核对象句柄的继承 427
0645 利用匿名管道实现进程间通信 427
0646 如何结束未正常退出的线程 429
第11章 注册表和INI文件 431
11.1 INI文件的读写函数 432
0647 向INI文件中指定键值写入字符串数据 432
0648 获取INI文件中指定键值下整型数据 432
0649 获取INI文件中指定键值下字符串数据 432
0650 向INI文件指定节下写入数据 433
0651 获取INI文件中所有节名 434
0652 将数据结构数据写入INI文件 435
0653 获取INI文件中数据结构数据 435
0654 获取INI文件指定节下的键名及数据 436
11.2 读写注册表的API函数 436
0655 三种读写注册表的函数 436
0656 创建带安全属性的注册表项 437
0657 快速创建注册表项 437
0658 注意子注册表项字符串写法 437
0659 打开注册表项 438
0660 判断注册表项是否存在 438
0661 删除注册表项 438
0662 打开注册表根项 439
0663 向指定注册表项默认键值写入数据 439
0664 设置注册表键值数据 440
0665 快速设置注册表键值字符串数据 441
11.3 读写注册表的MFC类 441
0666 使用CRegKey 类写入新键值 441
0667 使用CRegKey 类写入默认键值 442
0668 使用CRegKey 类查询键值 442
11.4 注册表的查询与枚举 442
0669 查询注册表键值信息 442
0670 快速查询注册表键值信息 443
0671 两个API函数可以枚举注册表项 444
0672 列举注册表中启动项 444
0673 两个API函数可以枚举注册表键值 445
0674 枚举安装程序 446
11.5 读写Win.ini文件 446
0675 获取Win.ini文件中的数据 446
0676 设置Win.ini文件中的数据 447
11.6 注册表应用 448
0677 保存注册表项 448
0678 开机自动运行 449
0679 隐藏和显示我的电脑 450
0680 隐藏和显示回收站 450
0681 隐藏显示所有驱动器 451
0682 禁止“查找”菜单 451
0683 禁止“文档”菜单 452
0684 在退出WINDOWS时清除“文档”中的记录 452
0685 禁用注册表编辑器 453
0686 禁止使用inf文件 453
0687 禁止使用reg文件 454
0688 无法显示隐藏文件或文件夹 454
第12章 文件与内存管理 455
12.1 文件的复制 456
0689 使用API函数CopyFile实现文件复制 456
0690 使用CFile类实现文件的复制 456
0691 实现网络文件复制 457
0692 使用CopyFileEx复制文件 458
12.2 文件的修改与删除 459
0693 重命名文件和文件夹 459
0694 批量移动文件 460
0695 删除文件 462
0696 删除文件夹 462
0697 将文件删除到回收站 463
12.3 文件创建与打开 464
0698 创建多级目录 464
0699 创建文件 465
0700 创建文件夹 465
0701 打开文件两种方法 465
0702 文件过滤器相关 466
0703 CFileDialog类选中多个文件 466
0704 拖曳文件到对话框 466
12.4 文件查找 467
0705 列举文件夹下所有文件 467
0706 指定目录查找文件 468
0707 显示磁盘目录 469
0708 用C语言判断文件是否存在 471
12.5 文件读写 471
0709 运行库函数读写文件 471
0710 C函数文件操作 472
0711 读取有规律文本文件 473
0712 读取XML文件中的数据 474
0713 制作日志文件 475
12.6 文件属性 476
0714 获取文件扩展名 476
0715 获取文件所在路径 477
0716 当前程序所在路径 478
0717 成员函数GetFileTitle的使用 478
0718 获取文件属性 478
0719 设置文件属性 480
12.7 内存相关 481
0720 获取内存状态 481
0721 获得指定内存基本信息 481
0722 查看内存泄露 482
12.8 文件实用工具 483
0723 将Word文档存成文本文件 483
0724 如何加密文件 484
0725 二进制浏览文件 485
0726 如何设计文件分割器 486
0727 设置文件夹图标 488
0728 获取文件图标 489
第13章 数据库 491
13.1 ADO技术 492
0729 导入ADO动态链接库 492
0730 创建ADO对象的两种方法 492
0731 使用ADO连接数据库 492
0732 利用ADO连接SQL Server数据库的两种格式 493
0733 遍历记录集 493
0734 使用记录集对象的AddNew方法添加记录 494
0735 使用记录集对象的Update方法修改记录 494
0736 使用记录集对象的Delete方法删除记录 495
0737 利用Execute执行SQL语句 496
0738 在应用程序中使用事务 496
13.2 数据库应用 497
0739 获取SQL Server数据库的表结构 497
0740 获取Access数据库的表结构 498
0741 获得SQL Server中数据库名称 499
0742 如何判断一个表是否存在 500
0743 如何备份数据库 501
0744 如何还原数据库 501
0745 对数据库进行录入图片 502
0746 对数据库进行提取图片 503
0747 将Excel表格中数据导入到数据库中 504
0748 将数据库中数据导入到Word文档中 506
0749 将数据库文件转化为文本文件 507
0750 枚举SQL Server服务器 508
0751 断开SQL Server服务器连接 509
0752 在程序中执行SQL Server脚本 509
0753 附加SQL Server数据库 510
0754 利用ADO访问带密码的Access数据库 510
0755 如何使ADO Recordset对象的RecordCount可用 511
0756 如何获取ADO连接数据库的字符串 511
0757 制作数据库连接文件 511
0758 结束某个程序与SQL Server数据库的连接 512
0759 获取SQL Server数据库连接的进程数量 512
13.3 SQL基本查询 512
0760 在查询中使用通配符 512
0761 使用Like进行模糊查询 513
0762 Not与谓词进行组合条件的查询 513
0763 利用Between...and进行时间段查询 513
0764 利用关系表达式进行时间段查询 514
13.4 SQL相关技术 515
0765 列出数据中的重复记录和记录条数 515
0766 利用关键字Distinct去除重复记录 515
0767 格式化金额 516
0768 随机显示数据表中记录 516
0769 使用Top语句查询前3条记录 516
0770 查询后3条记录 517
0771 对数据进行降序排序 517
0772 分组统计查询结果 518
0773 利用Having语句过滤分组数据 518
0774 追加查询结果到已存在的表 519
0775 对数据库数据进行局部删除 520
0776 把查询结果生成表 520
0777 使用IsNull函数来处理空值 521
0778 使用Nullif函数来处理空值 521
13.5 多表和连接查询 522
0779 利用From子句进行多表查询 522
0780 合并结果集 522
0781 利用多个表中的字段创建新记录集 523
0782 如何使用左外连接查询 523
0783 如何使用右外连接查询 524
0784 如何使用完全外连接查询 524
0785 利用Transform进行交叉表查询 525
13.6 嵌套查询 525
0786 嵌套查询 525
0787 使用一个单行的子查询来更新列 526
0788 使用IN引入子查询限定查询范围 526
0789 带Some的嵌套查询 527
0790 带Any的嵌套查询 527
0791 带All的嵌套查询 528
0792 带Exists的嵌套查询 528
13.7 聚合函数 529
0793 MAX函数和MIN函数的应用 529
0794 利用聚集函数Sum对数据进行汇总 529
0795 利用聚集函数Avg求数据的平均值 530
0796 利用聚集函数Count统计记录数量 530
13.8 数学函数 531
0797 使用ABS函数求绝对值 531
0798 CEILING函数的应用 531
0799 FLOOR函数的应用 532
0800 EXP函数的应用 532
0801 使用ROUND函数对数据四舍五入 533
0802 使用POWER函数计算乘方 533
0803 使用SQUARE函数计算平方 534
0804 使用SQRT函数计算平方根 534
0805 使用RAND函数取随机浮点数 534
0806 使用PI函数(圆周率) 535
13.9 字符串函数 535
0807 从MID函数截取字符串 535
0808 LEFT函数取左侧字符串 536
0809 RIGHT函数取右侧字符串 536
0810 使用LTRIM函数去除左侧空格 537
0811 使用RTRIM函数去除右侧空格 538
0812 使用REPLACE函数替换字符串 538
0813 转换为小写字符 539
0814 转换为大写字符 539
0815 使用LEN函数返回字符个数 540
0816 取得指定个数的子字符串 540
0817 取得字符串的起始位置 541
0818 以指定次数重复输出字符串 542
0819 获得字符表达式的反转 542
0820 获得由重复空格组成的字符串 543
0821 删除指定的字符并在指定的位置插入字符 543
13.10 日期时间函数 544
0822 根据出生日期计算年龄 544
0823 添加日期时间 545
0824 返回当前系统日期时间 545
0825 返回指定日期、指定部分的整数 546
0826 返回指定日期、指定部分的字符串 546
0827 返回当前UTC时间 547
0828 如何应用YEAR函数 547
0829 如何应用MONTH函数 548
0830 如何应用DAY函数 549
13.11 视图、触发器和存储过程 549
0831 创建视图 549
0832 删除视图 550
0833 创建触发器 551
0834 创建存储过程 552
0835 使用存储过程 553
0836 删除存储过程 553
0837 调用具有输出参数的存储过程 554
0838 执行具有out参数的存储过程 555
第14章 打印技术 557
14.1 打印控制 558
0839 获取打印机画布 558
0840 在打印位图时防止打印灰色斑点 558
0841 获取打印机DC 558
0842 设置打印页数 559
0843 设置打印份数 559
0844 设置分页打印 560
0845 实现横向打印 560
0846 设置打印纸边距 561
0847 设置打印纸大小 562
0848 获取当前选择的打印机 563
0849 获取用户选择的打印机端口 563
0850 如何解决屏幕和打印机分辨率不统一的问题 563
0851 打印新一页 563
0852 获取当前打印机设置打印纸的左边距和上边距 564
14.2 打印应用 564
0853 在基于对话框的程序中进行打印预览 564
0854 在基于对话框的程序中调用文档视图结构 565
0855 打印窗体 566
0856 打印图片 567
0857 打印报表 567
0858 打印图表 569
0859 打印条形码 570
0860 利用Word进行打印 571
0861 批量打印Word文档 572
0862 利用Excel进行打印 573
第15章 硬件程序开发 575
15.1 视频程序开发 576
0863 如何使用VFW 576
0864 VFW视频捕捉的开发流程 576
0865 将视频演示作为应用程序的启动界面 576
0866 开发远程监控程序 577
0867 编写视频录像程序 580
15.2 硬件设备程序开发 581
0868 使用IC卡的注意事项 581
0869 利用IC卡制作考勤软件 581
0870 将密码写入加密狗 585
0871 如何使用加密狗验证用户身份 585
0872 如何利用条形码扫描器销售商品 586
0873 利用神龙卡设计点歌系统 588
0874 开发语音卡拨号程序 590
0875 开发语音卡来电显示 594
0876 利用短信猫发送短信 596
0877 利用短信猫实现远程关机 597
0878 将显示器设置为节能模式 599
15.3 串口程序开发 599
0879 常用串口通信函数 599
0880 利用串口函数开发应用程序 609
0881 查看系统中打开的端口 610
0882 判断某个端口是否打开 611
0883 利用猫拨打电话 611
0884 判断Medom连接在哪个Com上 612
第16章 局域网编程 613
16.1 局域网操作 614
0885 在应用程序中映射网络驱动器 614
0886 获得映射驱动器的路径名称 615
0887 列举局域网内的计算机 615
0888 局域网中文件夹的共享 616
0889 获取网卡地址 617
0890 在局域网中发送短消息 618
0891 获取多穴主机的多个IP地址 619
16.2 IE浏览器操作 620
0892 如何清空IE的历史记录 620
0893 如何删除Internet临时文件 620
0894 修改IE标题栏内容 621
0895 隐藏IE浏览器的右键关联菜单 622
0896 设置IE的默认主页 622
0897 清空上网历史记录 623
0898 修改网卡物理地址 623
0899 隐藏和显示网上邻居 624
0900 快速访问网页及发送邮件 624
0901 判断当前活动窗口是否为IE 625
第17章 套接字技术 627
17.1 套接字基础技术 628
0902 套接字函数讲解 628
0903 使用套接字函数 632
0904 使用MFC套接字 632
0905 网络字节顺序 632
0906 TCP/IP的C语言描述 633
0907 套接字的断开重连 633
0908 在套接字中如何设置超时连接 635
0909 在套接字关闭时释放套接字资源 636
17.2 套接字实例开发 636
0910 设计网络五子棋游戏 636
0911 开发网络监听程序 640
0912 利用音频函数实现局域网实时音频传送 643
0913 利用UDP协议实现广播通信 644
0914 利用套接字实现HTTP客户端应用程序 645
0915 IP端口扫描 646
第18章 Internet编程 649
18.1 网页操作技术 650
0916 获取网页源码 650
0917 提取网页所有连接 651
0918 如何使用ISAPI过滤器 652
0919 如何使浏览器支持ISAPI DLL 654
0920 如何卸载浏览器加载的ISAPI DLL 654
18.2 FTP编程技术 655
0921 遍历FTP文件目录 655
0922 FTP应用实现步骤 656
0923 获取FTP文件大小 656
0924 FTP常用命令讲解 657
0925 利用套接字实现FTP文件下载 657
18.3 邮件发送技术 660
0926 利用MAPI发送电子邮件 660
0927 分析Internet的邮件格式 662
0928 如何进行Base64编码 662
0929 开发邮件发送程序 664
0930 POP3命令讲解 669
0931 检测邮箱中是否有邮件 669
18.4 常用网络操作技术 669
0932 HTTP多线程文件下载 669
0933 HTTP应用实现步骤 671
0934 修改计算机的网络名称 672
0935 TAPI的基本通信过程分析 672
0936 在程序中实现网络拨号 672
第19章 ATL Com编程 675
19.1 ATL应用程序开发 676
0937 ATL与Com的关系 676
0938 编写控制面板小程序 676
0939 编写扩展存储过程 677
0940 用ATL编写Windows 服务 679
0941 获取Word文档的属性 681
0942 在程序中导入Word文件 683
0943 在程序中显示PDF文件 684
0944 向IE工具条中添加图标 684
19.2 开发ocx控件 684
0945 在程序中注册和卸载ocx控件 684
0946 在网页中调用Visual C++对话框 685
0947 开发ASP文件上传控件 686
第20章 常用算法 689
20.1 计算类算法 690
0948 计算1~10之间数的阶乘 690
0949 如何使用完数的算法 690
0950 求最大公约数 691
0951 求最小公倍数 692
0952 统计中文字符数的算法 692
0953 统计英文字符数的算法 693
0954 统计数字个数的算法 693
0955 如何计算x的y次方 693
0956 1~6位数的任意排列 694
0957 获得汉字的拼音简码 695
0958 获得汉字的区位码 696
0959 根据汉字区位码获得汉字 696
0960 数据加密、解密算法 697
0961 产生0~N范围内的随机数算法 698
0962 随机产生中奖号码的算法 698
0963 如何求解时钟指针 698
20.2 判断类算法 700
0964 判断是否是闰年 700
0965 判断素数的算法 701
0966 判断城市电话区号是否合法的算法 701
0967 判断身份证是否合法的算法 702
20.3 排序算法 704
0968 如何使用选择法排序 704
0969 如何使用冒泡法排序 704
0970 如何使用交换法排序 705
0971 如何使用插入法排序 705
0972 如何进行快速排序 706
20.4 典型算法 707
0973 如何使用穷举算法 707
0974 如何使用递归算法 708
0975 如何求解韩信点兵 709
0976 如何求解百钱百鸡算法 709
0977 如何使用菲波那契数列算法 710
0978 如何求水仙花数的算法 711
0979 如何实现数字斜塔 711
0980 如何使用杨辉三角的算法 712
0981 如何验证歌德巴赫猜想的算法 713
0982 如何使用大整数相乘算法 714
0983 如何实现ASCII码压缩方法 715
0984 如何实现RSA数据加密算法 716
0985 如何实现猫吃老鼠算法 717
20.5 转换类算法 719
0986 如何进行8421码转换 719
0987 将Byte转换成GB、MB和KB 720
0988 十进制和二进制数相互转换的算法 721
0989 十进制和十六进制数相互转换的算法 722
0990 十六进制和二进制数相互转换的算法 723
0991 金额大小写转换的算法一 725
0992 金额大小写转换的算法二 730
0993 数字大小写转换的算法 732
20.6 简单游戏算法 733
0994 猜数字游戏 733
0995 井字棋游戏 734
0996 掷骰子 736
0997 赛跑游戏 737
第21章 联机帮助 739
0998 通过Word文档制作htm文件 740
0999 为HTM文件设置超级链接 740
1000 使用HTML Help Workshop工具创建新工程 740
1001 设置显示在帮助文件工具条上的按钮 741
1002 设置帮助文件的窗口大小和位置 742
1003 设置帮助文件左侧的浏览窗口 743
1004 配置工程文件 744
1005 如何创建目录 744
1006 如何创建索引 745
1007 生成chm文件 747
1008 在Visual C++程序中调用帮助文件 747