书籍详情

CodeGuru Visual C++编程精粹

CodeGuru Visual C++编程精粹

作者:[美]Nigel Quinnin编;云巅工作室译

出版社:人民邮电出版社

出版时间:2004-01-01

ISBN:9787115121011

定价:¥56.00

购买这本书可以去
内容简介
本书面向中高级程序员,读者至少需要具备VisualC++6.0的实际编程经验,并对微软基础类库有所了解。本书的目的不是讲解特定的编程技巧,而是深入探索CodeGuru.com网站,介绍其中的文章、评论精华。本书章节按逻辑编排、精心组织,读者在阅读时,可以将它当成一本纯粹的技术参考书,用它快速找到难题的答案;也可以当成一本通读的资料集,从中发掘一些具有创造性、开拓性的思想,用于改进代码。Nigel是CodeGuru.com的活跃撰稿人,也是本书的项目编辑,他是QubitAutomation的首席技术官,也是ComputerlinkTechnology公司的创始人,该公司是圣地亚哥一流的软件研究开发公司。CodeGuru(www.codeguru.com)是由程序设计领域的教师、程序员和专业人士组成的社区,这里凝聚了全球数百万程序员的优秀代码与知识精华。本书是CodeGuru中上百篇优秀技术文章、评论精粹的汇编。全书分8部分、共42章,内容包括Windows编程、控件技术、图形与多媒体、数据库技术、网络编程和COM技术等方面。本书适合具备VisualC++编程基础知识的程序员作为参考书使用。
作者简介
  Nigel是CodeGuru.com的活跃撰稿人,也是本书的项目编辑,他是Qubit Automation的首席技术官,也是Computerlink Technology公司的创始人,该公司是圣地亚哥一流的软件研究开发公司。
目录
 第一部分 C++和MFC
 第1章 起步 2
 1.1 句柄和消息技术内幕 3
 1.2 C++精髓 4
 1.3 Visual C++ IDE和工作区 8
 1.4 MFC基础 9
 1.5 基于对话框的应用程序 10
 1.6 SDI和MDI应用程序 11
 1.7 数据查看器 12
 1.8 什么是线程 20
 1.8.1 引言 20
 1.8.2 何谓线程 20
 1.8.3 为什么要使用多线程 22
 1.8.4 更复杂的情况 22
 第2章 数组和集合 24
 2.1 从变体型安全数组设置和获取值的函数 25
 2.2 遍历表容器 26
 2.3 可排序CObArray类 28
 2.4 可排序CObList类 32
 第3章 文档和视图 37
 3.1 体验MFC:创建一个MFC应用程序 38
 3.1.1 隐藏代码 38
 3.1.2 一个简单的MFC应用程序 38
 3.1.3 单文档界面应用程序 40
 3.1.4 结论 41
 3.2 使用更理想跟踪来理解文档/视图结构 41
 3.2.1 目的 42
 3.2.2 运行演示程序 42
 3.2.3 在程序中使用CIndentedTrace 43
 3.2.4 CIndentedTrace的工作方式 45
 3.2.5 供更高级用户参考 46
 3.3 分割框之上的命令传递 48
 3.4 在文档-视图应用程序中替换视图 49
 第二部分 Visual Studio
 第4章 调试 55
 4.1 一些常规调试技巧 56
 4.1.1 以简单. “傻瓜”化方式亲密接触 56
 4.1.2 使用调试窗口 56
 4.1.3 使用所有可用资源 56
 4.1.4 阅读, 阅读, 再阅读 56
 4.2 为什么我的项目在发行模式下不工作 57
 4.2.1 预处理器的差异 57
 4.2.2 变量初始化差异 57
 4.2.3 是否忽略了编译器警告 58
 4.2.4 是否删除了任何资源 58
 4.2.5 在发行模式中调试 58
 4.2.6 补充 58
 4.3 扩展Visual Studio 6.0调试器——利用未正式入档的功能 59
 第5章 插件和宏 63
 5.1 WM_COMMAND用户消息宏 64
 5.2 插件Project Line Counter(v1.11) 67
 5.2.1 描述 68
 5.2.2 特征 68
 5.2.3 源代码 68
 5.2.4 新版本的更新 68
 5.3 文件对话框宏 69
 5.3.1 FileDialogHandler 69
 5.3.2 对WriteLn的注释 73
 5.4 注释/取消注释与其他宏 73
 第三部分 Windows编程
 第6章 Windows CE 80
 6.1 CCeButtonST v1.2 81
 6.1.1 摘要 81
 6.1.2 如何在应用程序中集成CCeButtonST 82
 6.1.3 类方法 83
 6.1.4 评论 90
 6.1.5 补充 90
 6.2 CCeFileFind——Windows CE的文件查找类 92
 6.3 检测WindowsCE中的内存泄漏 93
 6.3.1 引言 93
 6.3.2 调试技巧 93
 6.3.3 工作方式 94
 6.3.4 补充 94
 第7章 剪贴板 96
 7.1 基本复制/粘贴和拖/放支持 97
 7.1.1 综述 97
 7.1.2 在剪贴板上放置数据 97
 7.1.3 串行化到剪贴板 97
 7.1.4 从剪贴板读取数据 98
 7.1.5 从剪贴板串行化 99
 7.1.6 拖/放支持 100
 7.1.7 维护的问题 102
 7.1.8 补充 102
 7.2 高级复制/粘贴和拖/放支持 102
 7.2.1 引言 102
 7.2.2 在剪贴板上放置多种格式 103
 7.2.3 延迟实施 105
 7.2.4 常见剪贴板格式 107
 7.2.5 剪贴板优先顺序 110
 第8章 动态链接库(.DLL) 111
 8.1 MFC .DLL向导(一) 112
 8.1.1 不同.DLL类型 112
 8.1.2 构建.DLL 113
 8.1.3 在客户应用程序中使用.DLL 115
 8.1.4 警告 117
 8.2 MFC .DLL向导(二) 117
 8.2.1 MFC问题 117
 8.2.2 编译器不兼容性问题 117
 8.2.3 重新编译 118
 8.2.4 解决方案 118
 8.2.5 结论 121
 8.3 MFC .DLL向导(三) 121
 8.3.1 从.DLL 中导出资源 121
 8.3.2 建立客户应用程序 122
 8.3.3 导出基于CDialog的类 123
 第9章 文件和文件夹 125
 9.1 GetFolder:Shell扩展文件夹浏览器函数 126
 9.1.1 综述 126
 9.1.2 代码 126
 9.1.3 补充 127
 9.2 SHFILEOPSTRUCT和SHFileOperation 129
 9.2.1 引言 129
 9.2.2 解决名字冲突与hNameMappings成员 129
 9.2.3 获取文件名 130
 9.2.4 示例代码 130
 9.3 优化SHGetFileInfo获得最优性能 131
 第10章 打印 133
 10.1 生成WYSIWYG文本输出 134
 10.2 改进打印预览工具栏 137
 第11章 系统 140
 11.1 进程和模块枚举类 141
 11.2 从HWND获取模块(exe)文件名 141
 11.3 NotQuiteNullDacl类 143
 11.3.1 缺省的安全性并不总是完全令人满意 143
 11.3.2 Null Dacl解决方案 144
 11.3.3 求助于NotQuiteNullDacl 145
 11.3.4 使用NotQuiteNullDacl类 146
 11.3.5 一些副作用 148
 11.3.6 参考文献 148
 11.4 共享内存进程间通信(IPC) 148
 第四部分 控件
 第12章 Button控件 165
 12.1 从CStatic派生的平面按钮类 166
 12.1.1 描述 166
 12.1.2 小结 166
 12.2 标题栏界面 167
 12.3 CXPStyleButtonST v1.0 171
 12.3.1 摘要 171
 12.3.2 如何在应用程序中集成CXPStyleButtonST 172
 12.3.3 静态创建CXPStyleButtonST对象 172
 12.3.4 动态创建CXPStyleButtonST对象 173
 12.3.5 类方法 173
 12.3.6 评论 174
 12.3.7 致谢 174
 12.4 CCharSetBtn控件 174
 第13章 ComboBox控件 176
 13.1 包含选项历史的CComboBoxEx 177
 13.1.1 摘要 177
 13.1.2 如何使用 177
 13.1.3 函数 178
 13.2 包含选项工具提示的ComboBox 179
 13.3 具有树形下拉框的ComboBox 181
 13.3.1 使用类 181
 13.3.2 补充 182
 13.4 CCheckComboBox:具有复选树形下拉框的ComboBox 183
 第14章 Edit控件 186
 14.1 自动填充编辑控件 187
 14.2 综合提示文本和编辑控件的混合编辑控件 187
 14.2.1 引言 187
 14.2.2 显示规则 188
 14.2.3 使用CGreyEdit控件 188
 14.3 Masked Edit控件(3) 189
 14.4 Numeric Edit和Numeric Spin控件 192
 第15章 ImageList控件 194
 15.1 作为32bpp位图在ImageList中载入8bpp(256色)位图 195
 第16章 ListBox控件 198
 16.1 双向ListBox选择管理器 199
 16.2 类似Visual Studio的ListBox类 201
 16.2.1 如何使用 202
 16.2.2 其他改进 203
 16.2.3 补充 203
 第17章 ListView控件 208
 17.1 通过编程的办法选择某一项 209
 17.2 使用回调排序列表(数字/文本) 209
 17.2.1 第1步:实现类 209
 17.2.2 第2步:实际运用 213
 17.2.3 补充 213
 17.3 (无限制)多选项的CreateDragImage 214
 17.4 可修改的属性列表控件 217
 17.4.1 工作原理 218
 17.4.2 如何使用 218
 17.4.3 如何实现自定义属性项值类 218
 17.5 如何自定义属性列表项值类 219
 17.6 如果实现自定义属性项管理器类 220
 17.7 改进的地方 222
 第18章 菜单 227
 18.1 具有图标的自绘菜单(3) 228
 18.1.1 版本3.0中的新变化 228
 18.1.2 引言 229
 18.1.3 安装(MDI应用程序) 229
 18.1.4 安装(SDI应用程序) 232
 18.1.5 补充 233
 第19章 对话框 236
 19.1 更改编辑控件的背景色 237
 19.2 可调节对话框基类 240
 19.2.1 引言 240
 19.2.2 用法 241
 19.2.3 项目实例 241
 19.3 不规则形状的位图对话框 241
 19.3.1 用法 241
 19.3.2 技巧 243
 19.3.3 工作原理 243
 19.3.4 补充 243
 第20章 属性表 247
 20.1 在属性页中使用ON_UPDATE_COMMAND_UI 248
 第21章 状态栏 251
 21.1 在状态栏显示光标位置 252
 21.2 在状态栏窗格显示进度栏 253
 第22章 工具栏 256
 22.1 使用16M色图像的工具栏 257
 22.2 全功能24位色工具栏 257
 22.3 并排停靠工具栏 261
 第23章 TreeView控件 264
 23.1 查找项(匹配TV_ITEM的任何成员) 265
 23.2 拖放改进——鼠标停留时自动展开 267
 第24章 Splitter控件 270
 24.1 最小化拆分器 271
 24.2 能在任何窗格中切换视图的CSplitterWnd扩展 273
 24.2.1 如何使用示例代码 274
 24.2.2 要点 274
 24.2.3 补充 275
 24.3 在拆分器窗格内实现标尺 275
 24.3.1 引言 276
 24.3.2 代码 276
 24.4 拆分器窗口内的工具栏 277
 24.4.1 引言 277
 24.4.2 代码 277
 第25章 其他控件 280
 25.1 内存查看器——包含一个针对任意文本编辑器类型的强大类 281
 25.1.1 摘要 281
 25.1.2 普通文本编辑器是如何工作的 281
 25.1.3 CSW_EditorBase类成员 282
 25.1.4 如何使用类CSW_EditorBase 283
 25.2 系统映像列表 284
 25.3 CMacButton. CMacCheckBox和CMacRadioButton 285
 25.4 类似Macintosh的进度控件 286
 25.4.1 公有成员函数 287
 25.4.2 在对话框中添加CMacProgressCtrl的步骤 287
 25.4.3 补充 287
 第五部分 图形和多媒体
 第26章 位图和调色板 289
 26.1 在CBitmap中装载位图文件的快速方法 290
 26.2 调整图像大小时如何保持长宽比例 290
 26.3 透明位图:真正的屏蔽方法 292
 26.3.1 代码的作用 292
 26.3.2 MSDN 293
 26.3.3 真正的屏蔽方法 293
 26.3.4 如何使用 293
 26.3.5 源代码 293
 26.3.6 透明显示位图(Zafir Anjum) 294
 26.3.7 直接透明blt操作 294
 26.3.8 补充 295
 26.4 CPicture:Yovav编写的显示图像的类 296
 26.5 在MFC和ATL项目上添加GIF动画 299
 第27章 DirectX 303
 27.1 使用Direct3D8的基础知识 304
 27.1.1 引言(#include  windows.h ) 304
 27.1.2 关于例程 304
 27.1.3 何谓Direct3D8(Direct3D8=2*(Direct3D7+DirectDraw7)) 305
 27.1.4 初始化(即如何开始) 306
 27.1.5 从f(x, y) = x + y + z到2D图像 308
 27.1.6 光照管理(黑暗中的猫都是灰色) 310
 27.1.7 材质管理(材质为什么是灰色) 311
 27.1.8 结论 311
 第28章 GDI 314
 28.1 检测显示字体大小 315
 28.1.1 引言 315
 28.1.2 检测字体大小的函数 315
 28.2 绘制箭头线 316
 28.3 IPicture对象的流动 319
 28.3.1 类 319
 28.3.2 使用类 321
 第29章 多媒体 323
 29.1 直接从资源播放MIDI文件 324
 29.1.1 引言 324
 29.1.2 公有接口 324
 29.1.3 可覆盖的方法 325
 29.1.4 用法 325
 29.1.5 补充 326
 29.2 CDR.EXE——通过编程实现CD驱动器的打开/关闭 326
 29.3 透明动画控件 328
 29.4 简单混音器控件封装器 330
 29.5 具有n道实时混音器的音频类库 332
 第30章 OpenGL 335
 30.1 简单OpenGL类 336
 30.1.1 特征 336
 30.1.2 历史 336
 30.1.3 源代码 337
 30.1.4 支持类 337
 30.1.5 演示项目 337
 30.1.6 关于作者 337
 30.2 在对话框中启动OpenGL 338
 30.3 启动渲染模式 340
 第六部分 数据库
 第31章 ADO 342
 31.1 ADO是AOK(简单ADI向导) 343
 31.1.1 起步 343
 31.1.2 _ConnectionPtr. _CommandPtr和_RecordsetPtr 343
 31.1.3 动态绑定与DFX 345
 31.1.4 何谓_variant_t和_bstr_t 346
 31.1.5 更新. 插入和删除 346
 31.1.6 示例代码 347
 31.1.7 补充 348
 31.2 ADO是AOK——第二部分 349
 31.2.1 使用ATL创建泛型ADO COM对象 349
 31.2.2 组件 354
 31.2.3 技巧 367
 31.2.4 结论 369
 31.3 使用ADOX创建数据库对象 369
 31.3.1 概述 370
 31.3.2 步骤 370
 31.3.3 补充 372
 第32章 ODBC 373
 32.1 交互式SQL工具(MFC) 374
 第33章 存储过程 376
 33.1 使用ADO执行存储过程 377
 第34章 XML 381
 34.1 从C++程序创建XML文件 382
 34.2 使用微软XML解析器创建XML文档 383
 34.2.1 MXXMLWriter组件基础知识 383
 34.2.2 处理XML文档基础知识 384
 34.2.3 使用MXXMLWriter创建XML文档 386
 34.2.4 结论 388
 第七部分 因特网与网络
 第35章 Socket编程 392
 35.1 具有新面孔的聊天室 393
 35.1.1 前言 393
 35.1.2 基础 393
 35.1.3 使用CSocket的优点 394
 35.1.4 图示和解释 394
 35.1.5 如何测试程序 395
 35.1.6 特征 395
 35.1.7 已知漏洞 396
 35.1.8 改进建议 396
 35.1.9 致谢 396
 35.1.10 声明 397
 第36章 命名管道 399
 36.1 Win32平台下命名管道封装器 400
 36.1.1 背景 400
 36.1.2 封装器 400
 36.1.3 示例 400
 36.1.4 补充 401
 36.2 连接管道类 402
 36.2.1 目的 403
 36.2.2 主要特征 403
 36.2.3 简介 403
 36.2.4 客户-服务器架构 404
 第37章 网络信息 406
 37.1 获得本地计算机的主机名和IP地址 407
 37.2 检验是否连接到因特网的函数 409
 37.2.1 致谢 409
 37.2.2 工作原理 409
 37.2.3 函数 410
 37.3 使用HTTP的PC时钟同步 411
 37.3.1 引言 411
 37.3.2 使用Windows API阅读WWW网站 412
 37.3.3 世界时与本地时 413
 37.3.4 链接 413
 37.3.5 VC++源代码 413
 第八部分 基于COM的技术
 第38章 COM 418
 38.1 基于MFC COM DLL的DllUnregisterServer 419
 38.2 在COM中传递二进制数据 421
 38.2.1 使用CBufferVariant 422
 38.2.2 补充 423
 38.3 未在文档中说明的AFX函数:AfxGetClassIDFromString 424
 38.3.1 综述 424
 38.3.2 示例 424
 38.4 使用COM通道钩子机制的COM委托 424
 38.4.1 接口用法 427
 38.4.2 源代码. 演示程序. 更新及其他 427
 38.4.3 致谢 427
 第39章 DCOM 430
 39.1 COM安全性入门(第一部分) 431
 39.1.1 激活安全性 431
 39.1.2 COM编程技巧一 432
 39.1.3 访问安全性 432
 39.1.4 COM编程技巧二 434
 39.1.5 下一篇文章内容预告:介绍身份和认证 434
 39.2 COM安全性入门(第二部分) 434
 39.2.1 身份 434
 39.2.2 COM编程技巧三 437
 39.2.3 认证 437
 39.2.4 总结 439
 39.3 远程实例化_com_ptr_t对象 440
 39.4 RNSO——运用DCOM的远程通知者. 主题和观察者服务器 442
 39.4.1 何谓RNSO 442
 39.4.2 RNSO的工作原理 442
 39.4.3 RNSO的二进制文件 443
 39.4.4 例程 443
 39.4.5 为什么使用此框架 444
 第40章 ActiveX 445
 40.1 ActiveX控件向导 446
 40.1.1 引言 446
 40.1.2 创建ActiveX控件 446
 40.1.3 关于作者 455
 40.1.4 补充 455
 40.2 ActiveX Shell注册 455
 40.2.1 自动安装 456
 40.2.2 手工安装 456
 40.2.3 用法 457
 40.2.4 补充 458
 40.3 ActiveX控件中的菜单 458
 40.3.1 ATL 459
 40.3.2 MFC 461
 第41章 ATL和WTL 463
 41.1 一个查看类型库信息的ATL项目 464
 41.1.1 Lib2Usr ATL组件 464
 41.1.2 演示程序和更新过的源代码 464
 41.2 ATL Tear-Off接口 466
 41.3 运用WTL进行DDX和DDV 473
 41.3.1 引言 473
 41.3.2 DDX/DDV的准确涵义 474
 41.3.3 DDX实战 475
 41.3.4 在WTL扩展DDX 478
 41.3.5 缺省数据处理器 480
 第42章 单元和线程 481
 42.1 理解COM单元(第一部分) 482
 42.1.1 单元基础知识 482
 42.1.2 如何给线程分配单元 484
 42.1.3 如何给进程中对象分配单元 485
 42.1.4 如何给进程外对象分配单元 487
 42.1.5 小结 487
 42.2 理解COM单元(第二部分) 488
 42.2.1 编写能正常工作的COM客户 488
 42.2.2 编写能正常工作的COM服务器 490
 42.2.3 小结 492
 42.3 精通COM线程模型 493
 索引 502
猜您喜欢

读书导航