Visual C++代码参考与技巧大全
作 者: 郭克新
出版时间:2008
丛编项: C/C++开发专家
内容简介
本书介绍了在使用Visual C++开发应用程序时所遇到的问题的解决技巧及技巧实现的代码参考。本书共分为13章,内容包括:Visual C++代码的排版,开发环境的设置,数据类型的转换,Visual C++常用控件的使用技巧,对话框处理技巧,窗口和界面处理技巧,文件、文件夹及磁盘操作技巧,数据库操作技巧,进程、线程和DLL操作技巧,多媒体的处理技巧,通信的操作技巧,COM组件技术操作技巧,系统编程等。本书具有实用性强、通俗易懂和注重实践等特点。本书适合Visual C++程序员使用,能够帮助他们解决在实际开发中所遇到的问题,在解决问题时采用了启发式的方式,首先给出了问题的阐述,然后给出问题的解决技巧,最后给出了相关问题解决的实例代码。希望本书能够帮助读者提高解决实际问题的能力,真正做到举一反三。
目录
第1章 C++语法及编程技巧 1
1.1 C++编程规范和排版技巧 2
1.1.1 程序的排版 2
1.1.2 添加注释 3
1.1.3 命名规则 4
1.1.4 复合表达式的书写技巧 5
1.1.5 if语句的书写技巧 7
1.1.6 循环语句的书写技巧 9
1.1.7 循环控制语句 10
1.1.8 函数设计的技巧 12
1.1.9 宏定义的使用技巧 13
1.2 const使用技巧 14
1.2.1 const常量 14
1.2.2 const在函数中的使用 15
1.2.3 const指针 17
1.2.4 类const成员变量的初始化 17
1.2.5 const与宏常量的区别 19
1.3 sizeof使用技巧 19
1.3.1 sizeof运算符应用技巧 19
1.3.2 sizeof与strlen()的区别 22
1.4 函数与预处理技巧 22
1.4.1 在C++中调用C编译器的
函数 23
1.4.2 内联函数和宏的比较 23
1.4.3 #include 和
#include "filename.h"的区别 24
1.4.4 回调函数的概念与操作技巧 24
1.4.5 函数的调用规范 26
1.5 C++数据类型转换技巧 27
1.5.1 将字符串转化换为整数 27
1.5.2 其他数据类型转换为字符串 28
1.5.3 将字符串转化为其他的
数据类型 30
1.5.4 char*和Cstring的相互转换 31
1.5.5 CString与BSTR的相互转换 32
1.5.6 BSTR、_bstr_t与CComBSTR
的关系 32
1.5.7 typedef和typename关键字 33
1.5.8 UNICODE的处理技巧 34
1.5.9 UNICODE字符串和MBCS
字符串的相互转换 35
1.5.10 VARIANT的处理技巧 37
1.6 内存管理技巧 38
1.6.1 内存分配的不同方式 38
1.6.2 避免内存泄漏的方法 39
1.6.3 数组和指针的区别与
处理技巧 43
1.6.4 指针和引用的区别 44
1.6.5 this指针 45
1.6.6 传递动态内存 47
1.6.7 杜绝“野”指针 48
1.6.8 C++中堆内存操作方法 49
1.7 面向对象编程技巧 51
1.7.1 struct和class的区别 51
1.7.2 构造函数和析构函数 53
1.7.3 函数的多态 55
1.7.4 重载、覆盖和隐藏的比较 57
1.7.5 运算符重载 59
第2章 VC开发环境设置和
编译调试技巧 67
2.1 VC开发环境的设置 68
2.1.1 VC++编程快捷键应用技巧 68
2.1.2 设置编辑区背景颜色和
字体的技巧 69
2.1.3 设置显示的最近打开工程、
文件的个数的技巧 70
2.1.4 设置VC默认头文件和
库文件 71
2.1.5 引入lib库到工程中 72
2.1.6 在工作区(WorkSpaces)
中导入多个项目 73
2.1.7 ClassView视图 73
2.1.8 让控制台应用程序支持
MFC类库 74
2.1.9 快速删除临时文件 74
2.1.10 检测程序中的括号是否匹配 75
2.1.11 快速找到变量或者函数、
宏的定义 75
2.1.12 成员变量或函数不能显示
提示功能 76
2.1.13 VC生成的各种文件的作用 76
2.1.14 生成新类到工程中 77
2.1.15 添加第三方的类到工程中 77
2.1.16 彻底删除工程的类 78
2.1.17 改变生成.exe文件的路径 78
2.1.18 处理ClassZiard找不到
系统消息的技巧 79
2.1.19 输出区的“Find in Files 2”
属性页 79
2.1.20 误删除类向导文件 80
2.1.21 发布程序设置 80
2.1.22 生成与现有项目除了项目
名外完全相同的新项目 81
2.2 VC程序调试技巧 83
2.2.1 Debug版本和Release版本的
区别 83
2.2.2 Release版本的调试技巧 84
2.2.3 断点调试 85
2.2.4 值调试技巧 86
2.2.5 Call Stack技巧(调用堆栈
调试) 86
2.2.6 ASSERT( )调试技巧 86
2.2.7 TRACE调试技巧 87
2.2.8 Try-Catch的使用技巧 87
2.2.9 利用GetLastError()的
返回值确定错误信息 88
2.2.10 dll工程的调试技巧 88
2.2.11 Link2001的常见错误 89
2.2.12 VC++的优化技术 90
第3章 键盘、鼠标输入处理技巧 93
3.1 键盘输入处理技巧 94
3.1.1 ASCII码查询器 94
3.1.2 虚拟键码和扫描码相互转换 96
3.1.3 字符转换为虚拟键码 97
3.1.4 模拟键盘特殊组合键输入 98
3.1.5 模拟键盘输入特殊字符 100
3.1.6 动态改变键盘的状态 102
3.1.7 键盘钩子程序的实现 104
3.1.8 创建进程外钩子 108
3.1.9 安装系统键盘钩子 111
3.1.10 如何屏蔽【Alt+Esc】/
【Alt+Tab】等组合键 111
3.1.11 获得桌面上的正在接收
键盘或鼠标输入的窗口的
HWND 114
3.1.12 捕获键盘【Home】等
虚拟键 115
3.1.13 使用回车键切换输入焦点 116
3.2 鼠标输入处理技巧 117
3.2.1 随时获得鼠标的窗口位置 117
3.2.2 在非客户区响应鼠标消息 118
3.2.3 锁定鼠标的活动范围 119
3.2.4 不规则窗口随鼠标移动
而移动 119
3.2.5 检测鼠标是否在任意
图形区域内 121
3.2.6 SetCapture函数使用技巧 121
3.2.7 判断鼠标是否与【Ctrl】键
共同操作 123
3.2.8 更改程序的默认光标 123
3.2.9 隐藏和显示光标 124
3.2.10 交换鼠标左右键和恢复 125
3.2.11 获取和设置鼠标双击时间 126
第4章 常用控件使用技巧 127
4.1 Static文本控件使用技巧 128
4.1.1 静态控件响应通告消息 128
4.1.2 静态文本控件显示 3D文本 129
4.1.3 改变静态文本控件背景
颜色的技巧 132
4.1.4 Static显示图标和位图 133
4.1.5 数字时钟 136
4.2 Button控件使用技巧 140
4.2.1 禁用和启用按钮
控件的技巧 141
4.2.2 在按钮控件上加载位图的
技巧 142
4.2.3 改变下压按钮的背景色 143
4.2.4 实现XP风格按钮 144
4.2.5 实现具有3D动画效果的
按扭 148
4.3 编辑框(Edit)控件使用技巧 152
4.3.1 设置编辑框为只读属性的
技巧 152
4.3.2 限制编辑控件输入的字符
类型的技巧 155
4.3.3 防止别人盗取Edit中的*号
密码的技巧 156
4.4 ListBox控件使用技巧 158
4.4.1 向ListBox添加项目的技巧 158
4.4.2 从ListBox中删除所选择项的
技巧 160
4.4.3 获取ListBox控件中所
选择项的技巧 161
4.4.4 清空ListBox中所有项的
技巧 162
4.4.5 防止在列表框中添加很多
数据出现不停的刷新的技巧 163
4.5 ListCtrl控件使用技巧 163
4.5.1 设置ListCtrl的背景
颜色的技巧 164
4.5.2 设置ListCtrl的字体的技巧 164
4.5.3 设置ListCtrl具有网格
样式的技巧 166
4.5.4 设置ListCtrl标题栏的
宽度的技巧 167
4.5.5 为CListCtrl添加选项的
技巧 167
4.5.6 使ListCtrl控件项可以
进行编辑的技巧 168
4.5.7 为CListCtrl控件增加列
标题栏的技巧 169
4.5.8 实现CListCtrl中的排序
问题的技巧 169
4.6 树型(TreeCtrl)控件
使用技巧 172
4.6.1 向TreeCtrl控件添加
数据的技巧 172
4.6.2 删除树节点的技巧 177
4.6.3 查看节点信息的技巧 178
4.6.4 树型节点排序技巧 179
4.6.5 使TreeCtrl响应鼠标的
双击消息的技巧 180
4.6.6 实现TreeCtrl节点的
自由拖动的技巧 181
4.6.7 判断TreeCtrl的某一项
被选择的技巧 188
4.6.8 给树型控件添加工具条
提示的技巧 189
4.7 RichEdit控件使用技巧 189
4.7.1 CRichEdit控件的应用
初始化技巧 190
4.7.2 控制RichEdit输入
字数的技巧 190
4.7.3 设置RichEdit控件不带
格式的数据粘贴的技巧 191
4.7.4 设置RichEdit控件的
自动换行的技巧 192
4.7.5 设置RichEdit控件的
只读属性的技巧 192
4.7.6 设置RichEdit控件的
显示字体的技巧 193
4.7.7 设置RichEdit控件显示
字体的行间距的技巧 194
4.8 进度条(ProgressCtrl)控件
使用技巧 195
4.8.1 动态创建一个进度条的技巧 195
4.8.2 进度条的编程技巧 196
4.8.3 制作以位图作为进度
显示的进度条的技巧 198
4.8.4 在状态栏中显示进度条的
技巧 202
4.9 组合框(ComboBox)控件
使用技巧 203
4.9.1 添加/删除ComboBox的
内容的技巧 203
4.9.2 获得ComboBox选择的
内容的技巧 204
4.10 Scroll Bar控件使用技巧 205
4.10.1 动态创建Scroll Bar
控件的技巧 205
4.10.2 设置Scroll Bar箭头的
允许和禁止状态的技巧 206
4.11 选项卡(Tab Control)控件
使用技巧 206
4.11.1 向Tab Control中添加
页面的技巧 207
4.11.2 获取、设置当前被选中
的页位置的技巧 208
第5章 对话框技巧 209
5.1 通用对话框处理技巧 210
5.1.1 “查找和替换”对话框的
使用技巧 210
5.1.2 “文件保存”对话框的
使用技巧 213
5.1.3 “打开”对话框的使用技巧 215
5.1.4 “另存为”对话框的
使用技巧 217
5.1.5 “页面设置”对话框的
使用技巧 219
5.1.6 “颜色”对话框的
使用技巧 223
5.1.7 “字体”对话框的
使用技巧 225
5.1.8 “打印”对话框的
使用技巧 228
5.1.9 “消息”对话框的返回值 232
5.2 “模态”对话框使用技巧 233
5.2.1 数据交换机制 234
5.2.2 更改对话框的背景的技巧 237
5.2.3 创建非规则窗体的技巧 239
5.2.4 让窗体透明或
半透明的技巧 241
5.2.5 让窗体在最前端
显示的技巧 242
5.2.6 改变窗体的显示
位置的技巧 243
5.2.7 拖动无标题窗口的技巧 244
5.2.8 保持窗口大小不变的技巧 244
5.2.9 控制对话框内的控件
Tab Order的技巧 245
5.2.10 单击除了窗口标题栏以外的
区域使窗口移动的技巧 247
5.2.11 屏幕保护程序的制作技巧 248
5.3 非模式对话框使用技巧 250
5.3.1 非模式对话框的概念与
使用技巧 250
5.3.2 创建一个非模式对话框的
技巧 251
5.3.3 销毁非模式对话框的技巧 252
5.4 属性页对话框处理技巧 253
5.4.1 获得属性表单中当前
激活页的索引值的技巧 253
5.4.2 获得当前属性页对话框中
属性页的个数的技巧 256
5.4.3 获得指定索引的属性页的
指针的技巧 257
5.4.4 获得当前激活的属性页的
指针的技巧 257
5.4.5 将指定索引号或指针的属性
页设置为激活页的技巧 258
5.4.6 设置属性表单的标题的技巧 259
5.4.7 创建一个一般属性页
对话框的技巧 260
5.4.8 制作向导对话框的技巧 261
第6章 窗口、界面处理技巧 265
6.1 框架和视图处理技巧 266
6.1.1 分割视图的技巧 266
6.1.2 获得各个视图的指针 269
6.1.3 通过代码获得主框架的
指针 270
6.1.4 改变视图的大小 270
6.1.5 不让程序自动打开新文档 271
6.1.6 使程序启动后就最大化
或者最小化显示 271
6.1.7 在MDI程序中关闭子窗口
同时关闭父窗口 272
6.1.8 改变视图的背景颜色 273
6.1.9 防止窗口闪烁的方法 274
6.1.10 使窗体右上角的系统
按钮无效 275
6.2 标题栏处理技巧 277
6.2.1 获取标题栏的颜色 277
6.2.2 设置标题栏的颜色 278
6.2.3 获取标题栏的高度 279
6.2.4 设置标题栏的文字 280
6.3 状态栏处理技巧 282
6.3.1 不启动默认状态栏 282
6.3.2 获取状态栏的指针 283
6.3.3 在状态栏显示鼠标的位置 284
6.3.4 在状态栏上显示系统时间 285
6.3.5 在状态栏上显示滚动的文本 286
6.4 工具栏处理技巧 288
6.4.1 不启动默认工具栏 288
6.4.2 设置工具栏的标题 289
6.4.3 设置工具栏按钮提示 289
6.4.4 关闭工具栏按钮提示 290
6.4.5 在工具栏增加下拉按扭 291
6.4.6 获取工具栏的指针 292
6.4.7 在对话框中加载工具栏 293
6.4.8 设置工具栏的停靠位置 295
6.4.9 工具栏的隐藏 297
6.5 菜单处理技巧 298
6.5.1 动态修改应用程序的菜单 298
6.5.2 为菜单项添加复选标记 300
6.5.3 为菜单项添加单选标记 300
6.5.4 动态增加和删除
系统菜单项 301
6.5.5 在对话框类型的应用程序
中加载菜单 302
6.5.6 右键菜单的弹出 303
6.5.7 使菜单项前带图标 304
6.5.8 获取菜单栏高度 305
6.5.9 获取顶层菜单所占的
菜单行数 306
6.5.10 显示程序菜单 307
6.5.11 隐藏程序菜单 308
6.5.12 取消标题栏的鼠标右键
系统菜单 309
6.5.13 给系统菜单添加一个
菜单项 310
6.6 光标处理技巧 311
6.6.1 光标的设置技巧 311
6.6.2 启动和结束一个等待光标 312
6.6.3 获取默认光标 313
6.6.4 捕捉光标热区 314
6.7 图标处理技巧 315
6.7.1 获取默认图标的大小 315
6.7.2 获取应用程序图标 316
6.7.3 设置应用程序图标 318
6.7.4 在系统托盘中设置图标 319
6.7.5 直接从文件中装入
一个图标 321
6.7.6 使应用程序标题栏
图标旋转 321
第7章 文件、文件夹、磁盘
操作技巧 325
7.1 文件操作技巧 326
7.1.1 文件的打开和关闭 326
7.1.2 文件的读写 327
7.1.3 文件大小的获取 328
7.1.4 ini文件的读/写 329
7.1.5 串行化读/写二进制文件 331
7.1.6 获得文件的属性 334
7.1.7 设置文件的属性 336
7.1.8 取消文件所有属性 337
7.1.9 获取系统所有文件类型 337
7.1.10 删除文件 340
7.1.11 复制文件 341
7.1.12 移动文件 342
7.2 文件夹操作技巧 343
7.2.1 复制文件夹 343
7.2.2 创建文件夹 345
7.2.3 删除文件夹 346
7.2.4 更名文件夹 346
7.2.5 删除多层文件夹 347
7.2.6 遍历整个文件夹 349
7.2.7 判断文件夹是否存在 350
7.2.8 获取Windows和Windows
系统目录 351
7.2.9 确定应用程序的路径 352
7.3 磁盘操作技巧 353
7.3.1 获取系统中所有的磁盘 353
7.3.2 获取磁盘的容量 354
7.3.3 获得磁盘序列号 355
7.3.4 获取磁盘的剩余容量 356
第8章 数据库操作 359
8.1 VC++数据库访问技术 360
8.1.1 ODBC(开放式数据库连接)
技术 360
8.1.2 DAO技术 365
8.1.3 OLE DB技术 366
8.1.4 ADO技术 373
8.2 数据库操作技巧 381
8.2.1 SQL Server的安装问题 381
8.2.2 调用SQL Server存储过程 381
8.2.3 UDL文件的创建和配置 385
8.2.4 使用UDL创建ADO的
连接 386
8.2.5 访问远程SQL Server数据库
服务器 387
第9章 进程、线程和DLL
操作技巧 389
9.1 进程的操作技巧 390
9.1.1 进程的概念 390
9.1.2 创建/终止进程 390
9.1.3 获取系统进程的技巧 392
9.1.4 终止指定进程的技巧 393
9.1.5 使用文件映射机制实现
进程间通信的技巧 395
9.1.6 使用消息实现进程间通信 397
9.1.7 使用共享数据段实现
进程间的通信的技巧 400
9.1.8 用命名管道实现进程间的
通信的技巧 403
9.1.9 使用邮槽实现进程间通信的
技巧 407
9.2 线程的操作技巧 409
9.2.1 线程的概念 409
9.2.2 创建/终止线程的技巧 409
9.2.3 工作线程实现的技巧 411
9.2.4 用户界面线程实现的技巧 413
9.2.5 使用事件对象完成线程的
同步的技巧 414
9.2.6 使用信号量完成线程的
同步的技巧 416
9.2.7 使用互斥量完成线程的
同步的技巧 419
9.2.8 使用临界量完成线程的
同步的技巧 419
9.3 DLL的操作技巧 421
9.3.1 DLL概念 422
9.3.2 DLL调用方式技巧 423
9.3.3 _stdcall和_cdecl调用约定 426
9.3.4 DLL导出变量的技巧 427
9.3.5 DLL中导出类的技巧 427
9.3.6 MFC创建动态链接库的
技巧 430
第10章 多媒体的处理技巧 431
10.1 GDI的操作技巧 432
10.1.1 GDI基本图形绘制 432
10.1.2 填充区域 443
10.1.3 输出旋转文字 446
10.1.4 输出空心字体 448
10.1.5 渐变字体的实现 449
10.1.6 防止屏幕闪烁实现技巧 450
10.1.7 截屏实现的技巧 452
10.2 图像显示技巧 458
10.2.1 BMP图片的显示技巧 458
10.2.2 JPG/GIF图片的显示技巧 463
10.3 声音视频的处理技巧 467
10.3.1 播放AVI视频流技巧 467
10.3.2 播放WAV视频的技巧 470
第11章 通信的操作技巧 475
11.1 网络通信编程技巧 476
11.1.1 TCP/IP协议 476
11.1.2 获取本机的名字的技巧 478
11.1.3 获取本机的IP地址的技巧 480
11.1.4 获取网卡信息的技巧 482
11.1.5 网卡MAC地址的获取的
技巧 485
11.1.6 获取局域网内机器IP的
技巧 489
11.1.7 端口状态扫描程序的
使用技巧 493
11.1.8 发送电子邮件的技巧 495
11.1.9 检查电子邮件数量技巧 499
11.1.10 实现连接FTP服务器
的技巧 506
11.1.11 获取FTP服务器的文件
列表技巧 509
11.1.12 实现向FTP上传
文件技巧 513
11.1.13 实现从FTP上下载
文件技巧 514
11.1.14 实现查询FTP站点的
技巧 515
11.1.15 实现查询HTTP
站点的技巧 517
11.2 串口通信的操作技巧 518
11.2.1 串口配置技巧 519
11.2.2 打开串口的技巧 521
11.2.3 事件设置技巧 525
11.2.4 读/写串口技巧 526
第12章 COM组件技术操作技巧 531
12.1 COM的概念和编程技巧 532
12.1.1 COM接口 532
12.1.2 CLSID和ProgID相互转换 533
12.1.3 利用IPicture接口实现
显示BMP/JPG/GIF图像 535
12.1.4 创建/删除快捷方式的技巧 538
12.1.5 C++类对象、DLL和COM的
区别和联系 541
12.1.6 使用C++API创建
COM对象 541
12.1.7 使用智能指针创建
COM对象 544
12.1.8 使用智能指针的封装类
创建COM对象 547
12.1.9 创建一个自动化组件的
技巧 548
12.1.10 使用ATL创建进程
外组件 552
12.2 MS Office中的COM应用 557
12.2.1 VC++实现Office自动化 557
12.2.2 VC++读/写Word文档 562
12.2.3 VC++修改Word字体
样式的技巧 565
第13章 系统编程技巧 577
13.1 系统信息处理技巧 578
13.1.1 获取CPU占用率的技巧 578
13.1.2 获取屏幕分辨率的技巧 582
13.1.3 获取操作系统版本的技巧 584
13.1.4 获取系统字体的属性的
技巧 586
13.1.5 获取系统显示元素的
颜色的技巧 589
13.1.6 设置系统启动自运行
程序的技巧 592
13.1.7 各种目录信息的获取的技巧 595
13.1.8 获取系统中字体类型的技巧 600
13.1.9 枚举系统当前进程的技巧 608
13.2 系统控制技巧 609
13.2.1 让应用程序只运行
一次的技巧 610
13.2.2 计算机相关信息的获取 614
13.2.3 隐藏和取消操作系统
任务栏的技巧 616
13.2.4 关闭计算机的技巧 617
13.2.5 清空回收站的技巧 621
13.2.6 打开/关闭CD-ROM的技巧 622