《CodeGuru Visual C++编程精粹》PDF下载

  • 购买积分:16 如何计算积分?
  • 作  者:(美)Nigel Quinnin编;云巅工作室译
  • 出 版 社:北京:人民邮电出版社
  • 出版年份:2004
  • ISBN:711512101X
  • 页数:503 页
图书介绍:本书是CodeGuru中上百篇优秀技术文章、评论精粹的汇编。全书分8部分、共42章,内容包括Windows编程、控件技术、图形与多媒体、数据库技术、网络编程和COM技术等方面。本书适合具备Visual C++编程基本知识的程序员作为参考书使用。

第一部分 C++和MFC 2

第1章 起步 2

目录 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.1 引言 20

1.8.2 何谓线程 20

1.8 什么是线程 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.2 使用更理想跟踪来理解文档/视图结构 41

3.1.4 结论 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 55

第4章 调试 55

4.1.2 使用调试窗口 56

4.1.4 阅读,阅读,再阅读 56

4.1.3 使用所有可用资源 56

4.1.1 以简单、“傻瓜”化方式亲密接触 56

4.1 一些常规调试技巧 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.4 新版本的更新 68

5.2.3 源代码 68

5.2.1 描述 68

5.2.2 特征 68

5.3 文件对话框宏 69

5.3.1 FileDialogHandler 69

5.3.2 对WriteLn的注释 73

5.4 注释/取消注释与其他宏 73

第三部分 Windows编程 80

第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.5 补充 90

6.1.4 评论 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

第四部分 控件 165

第12章 Button控件 165

12.1.2 小结 166

12.1 从CStatic派生的平面按钮类 166

12.1.1 描述 166

12.2 标题栏界面 167

12.3 CXPStyleButtonST v1.0 171

12.3.1 摘要 171

12.3.2 如何在应用程序中集成CXPStyleButtonST 172

12.3.3 静态创建CSPStyleButtonST对象 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.2 如何使用 177

13.1 包含选项历史的CComboBoxEx 177

13.1.1 摘要 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.3 使用CGreyEdit控件 188

14.2.2 显示规则 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.2.1 第1步:实现类 209

17.2 使用回调排序列表(数字/文本) 209

17.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.1 版本3.0中的新变化 228

18.1 具有图标的自绘菜单(3) 228

18.1.3 安装(MDI应用程序) 229

18.1.2 引言 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.4 补充 243

19.3.2 技巧 243

19.3.3 工作原理 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.1 引言 277

24.4.2 代码 277

24.4 拆分器窗口内的工具栏 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

第五部分 图形和多媒体 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.1 引言 315

28.1.2 检测字体大小的函数 315

28.1 检测显示字体大小 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

第六部分 数据库 342

31.1.1 起步 343

31.1.2 _ConnectionPtr、_CommandPtr和_RecordsetPtr 343

31.1 ADO是AOK(简单ADI向导) 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.3 使用ADOX创建数据库对象 369

31.2.4 结论 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

第七部分 因特网与网络 392

第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.8 改进建议 396

35.1.9 致谢 396

35.1.7 已知漏洞 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的技术 418

第38章 COM 418

38.1 基于MFC COM DLL的DllUnregisterServer 419

38.2 在COM中传递二进制数据 421

38.2.1 使用CBuffer Variant 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.3 访问安全性 432

39.1.2 COM编程技巧一 432

39.1.5 下一篇文章内容预告:介绍身份和认证 434

39.2 COM安全性入门(第二部分) 434

39.2.1 身份 434

39.1.4 COM编程技巧二 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.4 例程 443

39.4.3 RNSO的二进制文件 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.3 ActiveX控件中的菜单 458

40.2.4 补充 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 ATLTear-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