《Visual C++6编程宝典》PDF下载

  • 购买积分:22 如何计算积分?
  • 作  者:(美)David Simon,周瑜萍等编著
  • 出 版 社:北京:电子工业出版社
  • 出版年份:2005
  • ISBN:7121006871
  • 页数:826 页
图书介绍:本书介绍了如何使用Visual C++ 6编程语言编写Windows应用程序。本书的作者具备多年的Windows应用程序开发经验,是一些程序开发的高手。他们将带领读者从基本的集成开发环境与调试环境的学习入手,进而学习菜单和鼠标、图形、对话框的设计,最后进入Internet程序设计和数据库连接等高级主题。如果你对面向对象的程序开发有所了解,并想学习或进一步提高Visual C++方面的开发知识与技巧,那将从书中获得启迪,有所收益。本书适合初、中级软件开发人员及广大计算机编程方面的爱好者。

第1部分 Visual C++基础 1

1.1 Visual C++6.0的新特性 2

第1章 Visual C++入门 2

1.2 HelloWorld1程序 3

1.3 HelloWorld2程序 6

1.4 HelloWorld3 ATL控件 7

1.5 小结 10

2.1 初识Visual Studio集成开发环境 11

第2章 Visual Studio集成开发环境 11

2.2 创建第一个项目 12

2.3.1 查看当前快捷键 15

2.3 自定义集成开发环境 15

2.3.2 增加、编辑或删除快捷键 16

2.4.1 显示和隐藏工具栏 17

2.4 使用工具栏 17

2.5 小结 18

2.4.2 自定义工具栏 18

3.1 调试程序应该具备的性能 19

第3章 应用程序的调试 19

3.2.1 调试前的准备 20

3.2 Visual Studio集成调试程序 20

3.2.2 在运行时使用调试程序 22

3.2.3 调试窗口 23

3.2.4 使用断点和单步调试功能 25

3.2.6 在调试过程中使用Threads和Exceptions对话框 28

3.2.5 使用DataTip信息以及QuickWatch窗口 28

3.3.1 使用消息框提高调试速度 29

3.3 简单调试技巧 29

3.3.3 使用断言 30

3.3.2 调试输出 30

3.3.5 检测内存泄漏与CMemoryState类 31

3.3.4 对象转储 31

3.4 远程调试 32

3.3.6 使用MFC跟踪 32

3.5.2 调试Windows NT服务 34

3.5.1 编辑并继续调试 34

3.5 即时调试 34

3.6 小结 35

4.1 优化代码 36

第4章 改善应用程序性能 36

4.2 配置文件简介 38

4.2.2 了解Profiler的运行情况 39

4.2.1 应用程序配置文件的基本知识 39

4.2.3 配置文件类型 40

4.3 启用生成配置文件功能 41

4.2.4 设置高级配置文件设置 41

4.3.2 选择需要生成配置文件的函数 42

4.3.1 从开发环境控制配置文件的生成 42

4.3.3 PREP程序 43

4.3.5 生成函数范围配置文件 45

4.3.4 生成函数计时配置文件 45

4.3.7 生成行范围配置文件 46

4.3.6 行配置文件的选项 46

4.3.9 从配置文件导出数据 47

4.3.8 合并配置文件输出 47

4.3.11 全局信息记录 48

4.3.10 分析配置文件数据 48

4.3.12 局部信息记录 49

4.3.13 分析配置文件的统计数据 50

4.3.16 生成组件或ActiveX控件的配置文件 51

4.3.15 生成动态链接库的配置文件 51

4.3.14 使用Excel处理Profiler输出 51

4.3.18 生成多线程应用程序的配置文件 52

4.3.17 生成内联代码的配置文件 52

4.3.19 生成应用程序性能的配置文件 53

4.3.20 生成Windows NT服务的配置文件 54

4.4 小结 55

5.1 Spy++ 56

第5章 杂项工具 56

5.2 自定义Tools菜单 58

5.4 浏览类 60

5.3 有关Tools菜单的其他操作 60

5.5 浏览MFC源代码 62

5.6 小结 63

第2部分 Windows编程基础 65

6.1 什么是MFC 66

第6章 MFC编程概述 66

6.3 MFC的优势 67

6.2 MFC的设计原理 67

6.4.1 文件服务 69

6.4 MFC层次结构设计 69

6.3.1 众多MFC特性 69

6.3.2 可扩展的体系结构 69

6.4.2 窗口 70

6.4.3 图形 72

6.5 MFC的局限 73

6.4.4 数据库支持 73

6.6 小结 74

7.1 创建和编辑菜单 75

第7章 菜单 75

7.1.1 创建菜单 76

7.1.2 MFC中的菜单消息 77

7.2.1 检查键盘输入 78

7.2 快捷键 78

7.2.2 定义快捷键 79

7.2.3 选择适当的快捷键 80

7.2.4 多个快捷键表 81

7.3.1 菜单命令范围 83

7.3 动态更改菜单 83

7.3.3 更改现有弹出菜单 84

7.3.2 在运行时更改菜单 84

7.3.4 永久及临时句柄映射 86

7.4 快捷菜单 87

7.5 小结 88

8.2 鼠标输入 89

8.1 输入及系统状态 89

第8章 鼠标和键盘 89

8.2.1 创建鼠标消息处理程序 90

8.2.2 屏幕坐标和窗口坐标之间的转换 91

8.3 创建处理鼠标事件的MFC程序 92

8.3.2 更改光标 98

8.3.1 非客户鼠标事件 98

8.4 创建更改鼠标指针的MFC演示程序 99

8.4.1 捕获鼠标 101

8.4.2 限制鼠标移动 102

8.5.1 物理键盘 103

8.5 键盘输入 103

8.5.2 回显键盘焦点 104

8.6 小结 109

9.1.1 图形类型 110

9.1 图形设备接口 110

第9章 图形 110

9.1.2 GDI设备类型 111

9.2.1 设备上下文绘图属性 112

9.2 设备上下文 112

9.2.2 WM_PAINT消息 114

9.2.4 触发WM_PAINT消息 115

9.2.3 绘制坐标 115

9.2.5 响应WM_PAINT之外的消息进行绘制 116

9.3.1 GDI颜色支持 117

9.3 处理文本 117

9.3.2 文本颜色 118

9.3.3 对齐文本 119

9.4.2 将对象选入设备上下文 120

9.4.1 什么是字体 120

9.3.4 调整文本 120

9.4 字体 120

9.4.4 选择非常备字体 121

9.4.3 选择常备字体 121

9.5.1 钢笔 124

9.5 钢笔和画刷 124

9.5.2 画刷 126

9.6 映射模式 128

9.7.1 文本绘图函数 129

9.7 光栅操作 129

9.7.2 文本坐标的计算 131

9.8 剪取区域 134

9.9 小结 135

10.1 位图内存和显存 136

第10章 位图、调色板、DIB以及双缓存 136

10.2 创建CBitmap对象 137

10.3 加载和设置位图内容 139

10.4 将CBitmaps绘制到屏幕上 140

10.5 光栅操作 143

10.6 BlitDemo程序 145

10.7 调色板和颜色 151

10.7.1 逻辑调色板 153

10.7.2 调色板事件 154

10.8.1 设备无关位图文件剖析 156

10.8 设备无关位图 156

10.7.3 SetSystemPaletteUse()函数 156

10.8.2 CDib类 158

10.8.3 ShowDIB演示程序 163

10.9 双缓存 166

10.10 小结 168

11.2.1 抛出异常 169

11.2 异常处理语法 169

第11章 MFC异常处理 169

11.1 结构化异常处理 169

11.2.2 捕获异常 170

11.3.1 处理错误代码 171

11.3 错误处理技巧 171

11.3.2 在正确位置中处理错误 172

11.3.3 提高代码可读性 173

11.3.4 从构造函数中抛出异常 174

11.4.1 创建和删除CException对象 175

11.4 CException类 175

11.4.2 从CException对象中检索错误信息 176

11.4.3 捕获多种异常类型 177

11.5.1 CFileException类 178

11.5 定义CException派生类 178

11.5.2 CFileException演示程序 180

11.5.3 自定义CException派生类 182

11.6 高级异常处理技术 185

11.6.1 确定应该捕获异常的函数 186

11.6.2 放置在try块中的代码 187

11.6.3 放置在catch块中的代码 188

11.6.4 从虚函数中抛出异常 189

11.7 小结 192

12.2 创建控件 193

12.1 控件的背景 193

第12章 控件 193

12.2.1 CButton类 195

12.2.2 CListBox类 197

12.2.3 CEdit类 200

12.2.4 CStatic类 203

12.2.5 CScrollBar类 205

12.2.6 CComboBox类 207

12.3 Mini Editor程序 209

12.4.1 添加一个键盘接口 210

12.4 高级控件编程 210

12.4.3 位图按钮 211

12.4.2 修改控件行为 211

12.4.4 更改控件的颜色 213

12.5 小结 214

13.1.1 对话框模板 215

13.1 使用对话框编辑器 215

第13章 模态和非模态对话框 215

13.1.2 创建新的对话框模板 216

13.1.3 编辑对话框模板 217

13.2.1 模态与非模态对话框 220

13.2 CDialog类 220

13.1.4 测试对话框 220

13.2.2 使用ClassWizard创建CDialog派生类 222

13.3.2 DoDataExchange和UpdateData函数 223

13.3.1 创建DDX变量 223

13.3 对话框数据交换和校验 223

13.4.1 编辑演示程序的对话框 225

13.4 AddressBook演示程序 225

13.4.2 CContact类 226

13.4.3 重写OnInitDialog函数 227

13.4.4 处理WM_DESTROY消息 228

13.4.5 显示数据 229

13.4.7 建立和测试演示程序 230

13.4.6 处理按钮通知 230

13.5.1 创建控件类 231

13.5 在对话框中派生控件类 231

13.5.2 AddressBook演示程序:CAutoCompleteComboBox 232

13.6 串行化 234

13.6.3 从磁盘中读取数据 235

13.6.2 实现Serialize()虚函数 235

13.6.1 使每个类可串行化 235

13.6.5 给AddressBook演示程序添加串行化 236

13.6.4 将数据保存到磁盘 236

13.7 小结 241

第14章 属性表和属性页 242

14.1.2 创建CPropertyPage类 243

14.1.1 创建属性页资源 243

14.1 CPropertySheet和CPropertyPage类 243

14.1.4 创建和显示非模态的CPropertySheet 244

14.1.3 创建和显示模态的CPropertySheet 244

14.1.5 在一个现有对话框内创建和显示属性表 245

14.2 模态属性表演示程序 246

14.3.1 删除标准按钮 248

14.3 属性表和属性页提示和技巧 248

14.3.2 重定位标准按钮 249

14.3.4 禁用选项卡 250

14.3.3 更改标准按钮的标题 250

14.3.5 重新启用属性页 253

14.3.6 动态设置CPropertyPage选项卡标题 255

14.3.7 更改选项卡的字体 257

14.3.8 使用CPropertyPage选项卡助记符 257

14.4 小结 259

15.1.1 创建字符串 260

15.1 CString类 260

第15章 数据I/O 260

15.1.2 访问字符串数据 261

15.1.3 比较运算 262

15.1.4 抽取子串 263

15.2 StringDemo程序 264

15.1.5 搜索 264

15.3 CFile类 270

15.4 FileDemo程序 273

15.6 CompressDemo程序 280

15.5 CCompressedFile类 280

15.7.1 CCompressedFile类函数 282

15.7 数据压缩 282

15.7.2 CompressDemo内幕 284

15.8.1 CSerial类 286

15.8 用于串行通信的CSerial类 286

15.9.3 常用注册表键 288

15.9.2 预定义的注册表键 288

15.9 CRegistry类 288

15.9.1 注册表值 288

15.9.4 CRegistry类的使用 289

15.10 剪贴板 291

15.11 小结 293

16.1.2 使用Windows API播放波形文件 294

16.1.1 CWave类简介 294

第16章 声音 294

16.1 播放录制好的声音 294

16.1.3 CWave类函数 296

16.2 WaveDemo程序 297

16.3.1 什么是MIDI 300

16.3 播放MIDI文件 300

16.4 MIDIDemo程序 301

16.3.3 CMidi类函数 301

16.3.2 CMidi类简介 301

16.5.1 CCDAudio类库简介 305

16.5 音乐CD 305

16.5.2 媒体控制接口 306

16.6 CDPlayer程序 307

16.5.3 CCDAudio类函数 307

16.7 小结 313

17.1.1 用WM_TIMER设置计时器 314

17.1 计时器 314

第17章 计时器和Onldle循环处理 314

17.1.2 用一个回调过程设置计时器 316

17.2 时钟演示程序 317

17.3 CWinApp的OnIdle能力 323

17.4 OnIdleDemo程序 325

17.5 小结 328

第3部分 体系结构 329

18.1.1 分配页 330

18.1 进程私有内存 330

第18章 内存管理 330

18.1.2 编译器内存分配 333

18.1.3 Win32私有堆 336

18.2 共享内存 339

18.2.1 内存映射文件I/O 340

18.2.2 动态分配共享页 344

18.2.3 静态分配共享页 346

18.3 小结 347

19.1 文档/视图设计 348

第19章 文档、视图和单文档界面 348

19.2.1 在应用程序内声明文档类 349

19.2 CDocument类 349

19.2.2 CDocument的成员函数 351

19.2.4 重写虚文档函数 352

19.2.3 文档和消息处理 352

19.2.5 使用复杂文档数据 353

19.2.6 使用CCmdTarget和CDocItem的好处 355

19.3.1 应用程序如何管理文档和视图 357

19.3 InitInstance函数对文档的重要性 357

19.3.4 文档模板资源 358

19.3.3 框架窗口 358

19.3.2 CSingleDocTemplate类 358

19.3.6 分离字符串资源 359

19.3.5 字符串资源如何影响文档模板 359

19.3.7 常备视图资源 360

19.3.10 使用多个模板 361

19.3.9 模板的高级用法 361

19.3.8 考虑文档模板生存周期 361

19.4.1 声明视图类 363

19.4 CView类 363

19.3.11 销毁用AddDocTemplate()成员函数添加的文档 363

19.4.2 分析CView成员函数 364

19.4.5 CForm视图与基于对话框的应用程序 366

19.4.4 CView类的MFC派生变形 366

19.4.3 视图和消息 366

19.4.7 AfxGetMainWnd()的角色 367

19.4.6 返回框架窗口 367

19.5 HexView应用程序 368

19.6 小结 374

第20章 多文档界面应用程序的布局 375

20.2 CDocument类 376

20.1 文档/视图模型 376

20.3.1 使用多文档类型 377

20.3 管理文档、视图和框架窗口的复杂组合 377

20.3.2 使用文档的多个视图 378

20.3.4 CMDIChildWnd类 380

20.3.3 CMDIFrameWnd类 380

20.3.5 CMultiDocTemplate类 381

20.3.7 进一步认识MDI应用程序 382

20.3.6 使用CDocument类的开销 382

20.4 PaintObj程序 383

20.5 拆分窗口 390

20.5.2 特定于CSplitterWnd类的内容 391

20.5.1 区分拆分窗口 391

20.5.3 动态拆分器 392

20.5.5 CRuntimeClass对象 394

20.5.4 在动态窗格中使用不同的视图 394

20.5.6 对与多个文档关联的视图使用拆分器 395

20.5.9 了解共享滚动条 396

20.5.8 创建静态拆分器 396

20.5.7 静态拆分器 396

20.6 Dynsplit程序 398

20.5.11 拆分器的性能问题 398

20.5.10 确定实际的和理想的尺寸 398

20.7 为窗口定义子类 403

20.7.1 使用MFC定义窗口子类 404

20.8 小结 405

20.7.2 文档/视图体系结构的替代方案 405

21.1 Windows API打印机支持 407

第21章 打印和打印预览 407

21.1.1 打印机信息 410

21.2 PortLand程序 411

21.1.2 理解字符特征的重要性 411

21.3 使用MFC 413

21.3.2 MFC打印序列 414

21.3.1 打印过程中的任务和框架的角色 414

21.3.5 取代视图类函数和分页 417

21.3.4 打印协议 417

21.3.3 MFC默认打印方式 417

21.3.7 打印机页和文档页 418

21.3.6 CPrintInfo类 418

21.3.8 实现分页 419

21.3.9 添加帮助函数 421

21.3.10 打印时分页 423

21.3.13 扩大打印的图像 424

21.3.12 为打印分配GDI资源 424

21.3.11 页眉和页脚的打印 424

21.4.2 修改打印预览 425

21.4.1 打印预览过程 425

21.4 打印预览体系结构 425

21.4.3 增强应用程序的打印预览 426

21.4.4 CPrintDialog类 427

21.5 HexViewMDI程序 428

21.6 小结 432

22.3 RunModalLoop()函数 433

22.2 理解模态循环 433

第22章 高级Windows用户界面的MFC 433

22.1 更多的控制 433

22.5 终止模态循环 436

22.4 模态循环参数 436

22.6 生成模态应用程序 437

22.7.1 添加处理程序 438

22.7 创建和关闭模态窗口 438

22.7.2 简单的模态应用程序 440

22.8 改进模态窗口 441

22.9 在透明客户区域绘制透明位图 444

22.9.1 绘制位图 445

22.9.2 确定粘贴位图的位置 448

22.9.4 BITMAP结构 449

22.9.3 兼容的设备上下文 449

22.9.5 把所有图片叠加在一起 451

22.10 小结 453

22.9.6 确保用户的注意力 453

23.1.1 创建状态栏 454

23.1 创建和使用状态栏 454

第23章 状态栏与工具栏 454

23.1.2 自定义状态栏 455

23.2 创建和控制工具栏 458

23.2.2 创建和初始化工具栏 459

23.2.1 MFC控件栏 459

23.3 ReBar控件 464

23.4 小结 465

第24章 树视图和列表视图控件 466

24.1.1 树视图控件基础知识 467

24.1 CTreeCtrl类 467

24.1.2 CTreeCtrl控件 468

24.1.3 CtreeCtrl演示程序 475

24.2.2 CListCtrl控件 480

24.2.1 列表视图基础知识 480

24.2 CListCtrl类 480

24.3 小结 485

25.1 线程 486

第25章 线程 486

25.1.1 创建工作者线程 487

25.1.3 创建用户界面线程 488

25.1.2 线程函数 488

25.1.6 终止线程 490

25.1.5 使线程睡眠 490

25.1.4 挂起和继续执行线程 490

25.1.7 从一个线程中终止另一个线程 491

25.2 在线程之间共享MFC对象 494

25.1.8 进程优先级类 494

25.4 ThreadDemol程序 497

25.3 在多线程应用程序中使用C运行函数 497

25.5 小结 501

第4部分 数据库编程 503

26.1 ODBC定义和数据库术语 504

第26章 ODBC 504

26.2.1 配置ODBC 505

26.2 ODBC的实现 505

26.2.2 连接到数据源 506

26.2.4 准备与执行SQL请求 508

26.2.3 查询数据和数据源 508

26.2.5 检索数据 509

26.3 使用ODBC获取数据 510

26.2.6 断开与数据源的连接 510

26.3.2 修改ODBCDemo对话框 511

26.3.1 为Visual C++项目添加对ODBC的支持 511

26.3.3 添加初始化和数据库代码 512

26.4 使用ODBC动态查询数据源 517

26.4.1 CODBCDynamic类声明 518

26.4.2 CODBCDynamic类如何工作 519

26.4.3 使用CODBCDynamic类 524

26.5 小结 525

27.1 CDatabase对象 526

第27章 MFC数据库类 526

27.2 CRecordset对象 529

27.2.2 打开一个记录集 533

27.2.1 构造一个记录集 533

27.2.4 筛选记录 534

27.2.3 使用RFX(记录字段交换)读写数据 534

27.2.5 排序返回的记录集中的记录 536

27.2.7 保存记录 537

27.2.6 在结果集合中移动 537

27.3.2 为演示程序创建用户界面 538

27.3.1 添加对MFC数据库类的支持 538

27.2.8 删除记录 538

27.3 使用MFC数据库类 538

27.3.3 添加工具类封装用户数据 539

27.3.6 修改对话框的实现文件 540

27.3.5 修改对话框的头文件 540

27.3.4 为表UserMaster创建CRecordset类 540

27.4 参数化记录集与查询 546

27.4.1 为演示程序创建用户界面 547

27.4.4 为应用程序添加查找功能 548

27.4.3 修改CRecordset类以接受参数 548

27.4.2 创建UserMaster记录集 548

27.4.7 演示数据库 550

27.4.6 创建参数化查询 550

27.4.5 建立应用程序 550

27.4.8 创建权限记录集 551

27.5 小结 555

28.1.1 DAO层次结构 556

28.1 DAO概览 556

第28章 DAO数据库编程 556

28.1.2 DAO的多种内部形式 559

28.2 MFC DAO类 560

28.2.1 CDaoDatabase类 561

28.2.3 CDaoRecordset类 563

28.2.2 CDaoWorkspace类 563

28.2.4 MFC DAO演示程序 572

28.3 小结 581

第5部分 扩展应用程序的功能 583

29.1.1 静态和动态库 584

29.1 动态链接库概述 584

第29章 动态链接库 584

29.2 Visual C++常规DLL 585

29.1.2 加载DLL 585

29.2.1 常规DLL 586

29.2.2 动态加载DLL 587

29.2.4 Windows异常分支 588

29.2.3 动态加载DLL的示例 588

29.2.5 DLL的全局C++对象 594

29.3.1 扩展DLL 600

29.3 MFC扩展DLL 600

29.3.3 AFX_EXT_CLASS宏 601

29.3.2 通过MFC扩展DLL导出类 601

29.3.6 编写在DLL中封装文档和视图的演示程序 602

29.3.5 导出资源 602

29.3.4 嵌套的MFC扩展DLL 602

29.4 小结 606

30.1 第三方库 607

第30章 添加图像 607

30.2 ImageObject库 609

30.2.1 BMP文件格式 610

30.3 库加载图像 611

30.2.5 TIF文件格式 611

30.2.2 GIF文件格式 611

30.2.3 JPEG文件格式 611

30.2.4 TGA文件格式 611

30.4 显示图像 612

30.5 Display程序 615

30.6 缩放、裁剪和改变颜色深度 617

30.7 从设备上下文中创建图像 619

30.9 保存图像 620

30.8 从剪贴板创建图像 620

30.10 图像处理 622

30.11 ProcessImage程序 624

30.12 小结 631

第6部分 组件对象模型编程 633

31.1.1 自动化服务器 634

31.1 各种ActiveX技术 634

第31章 ActiveX和ActiveX控件设计 634

31.1.4 组件对象(COM)模型对象 635

31.1.3 定义ActiveX控件 635

31.1.2 自动化控制器 635

31.2 ActiveX的功能 636

31.1.6 ActiveX容器 636

31.1.5 ActiveX文档 636

31.3.2 ActiveX控件 637

31.3.1 自动化服务器和控制器 637

31.3 选择ActiveX组件类型 637

31.3.6 创建自己的框架 638

31.3.5 使用ActiveX模板库来创建ActiveX组件 638

31.3.3 COM对象 638

31.3.4 使用MFC来创建ActiveX组件 638

31.4.1 ActiveX自动化服务器 639

31.4 基本ActiveX组件体系结构 639

31.5.2 RegEdit程序 640

31.5.1 MIDL编译器 640

31.4.2  ActiveX控件 640

31.5 建立ActiveX组件需要的支持工具 640

31.5.5 把工具添加到VisualC++开发环境中 641

31.5.4 Ole2View程序 641

31.5.3 Registration Server程序 641

31.6.1 创建基本的控件项目 642

31.6 用MFC创建一个基本ActiveX控件 642

31.6.3 创建方法 645

31.6.2 控件注册 645

31.6.4 属性 650

31.6.5 创建属性页 654

31.6.6 添加事件 657

31.6.7 持久性 658

31.7 标准绘制 660

31.8 小结 662

32.1 创建基本项目 663

第32章 使用MFC创建ActiveX自动化服务器 663

32.1.1 给应用程序添加一个自动化接口 664

32.1.2 注册服务器 667

32.1.3 编写样本服务器的支持代码 668

32.1.4 添加方法 671

32.1.5 给服务器添加属性 675

32.2 产生OLE异常 676

32.2.1 双接口服务器 682

32.2.2 产生双接口OLE异常 688

32.3 用C++进行服务器实例化 693

32.3.1 用C++实例化OLE服务器时的常见问题 694

32.3.2 创建可共享的服务器 695

32.4 小结 698

32.3.3 单一实例服务器 698

33.1 ATL概述 699

第33章 活动模板库 699

33.2 创建ATL控件 700

33.3 将COM对象添加到项目 701

33.4 修改CDoublePend包含文件 702

33.5 实现接口函数 703

33.6 在C++中使用控件 708

33.7.1 转换BSTR 710

33.7 数据类型 710

33.8 在网页中嵌入ActiveX控件 711

33.7.3 在调试器中查看BSTR的内容 711

33.7.2 比较BSTR 711

33.9 小结 712

第7部分 Internet和HTML编程 713

34.1 CInternetSession类 714

第34章 Internet编程 714

34.2 CFtpConnection类 715

34.2.1 从FTP服务器中检索文件 718

34.2.3 其他FTP函数 720

34.2.2 将文件发送给FTP服务器 720

34.2.4 CInternetFile类 721

34.2.5 CFtpFileFind类 722

34.3 FTP程序 723

34.4.2 连接到套接字 731

34.4.1 创建套接字 731

34.4 套接字和CSocket类 731

34.4.3 监听一个连接 733

34.5 Sockets程序 734

34.4.4 读和写数据 734

34.6 SendEmail程序 741

34.7 检索HTTP文件 746

34.8 AutoDialer程序 747

34.9 小结 749

35.1 创建一个CHtmlView项目 750

第35章 CHtmlView类 750

35.2 把项目转换为使用CHtmlView类 751

35.3 导航CHtmlView类 752

35.4 SimpleBrowser程序 753

35.5 MultiBrowser程序 756

35.6 直接使用Web浏览器控件 759

35.8 编写一个阻挡站点的浏览器 761

35.7 编写一个记录导航日志的浏览器 761

35.9 小结 762

36.1 HTML基础 763

第36章 动态HTML 763

36.2 层叠样式表 765

36.2.2 样式表语法 767

36.2.1 全局样式表 767

36.3 简单文件查看器 768

36.4 事件和对象模型 769

36.5 脚本 771

36.6 脚本元素 772

36.7 改变非文本元素 775

36.8 在文档加载时运行脚本 776

36.9 编写对话框脚本 779

36.10 小结 781

第8部分 高级Visual Studio技术 783

第37章 编写Visual Studio脚本 784

37.1 Visual Studio宏 784

37.1.1 Quick Macros宏 784

37.2 创建VBScript宏 786

37.2.1 VBScript宏 788

37.2.2 编辑VBScript宏 789

37.2.3 创建一个空宏 789

37.3 使用VBScript宏 791

37.3.1 加载宏文件 791

37.3.2 运行VBScript宏 792

37.3.3 把宏分配给工具栏 792

37.3.4 把宏分配给按键 793

37.4 VBScript 794

37.4.1 VBScript编程 794

37.4.4 函数和过程 795

37.4.3 常量设置 795

37.5 Developer Studio对象模型 795

37.4.2 变量设置 795

37.5.1 访问该对象模型 796

37.5.2 使用Application对象 796

37.6 样本应用程序 798

37.6.1 运行样本宏 798

37.6.2 样本宏 799

37.7 小结 806

第38章 编写自定义AppWizard 807

38.1 AppWizard的内部工作 807

38.1.1 AppWizard管理器 808

38.1.2 CCustomAppWiz类和Dictionary(字典) 808

38.2 创建自定义AppWizard 811

38.3.1 创建SDIAutomationWiz演示项目 812

38.3.2 定义CCustomAppWiz类 812

38.3 预置项目默认设置演示程序 812

38.3.3 使用宏字典 813

38.4 高级自定义AppWizard 814

38.4.1 添加自定义对话框 814

38.4.2 创建自己的模板 816

38.4.3 更改newproj.inf文件 818

38.4.4 更改ClassWizard文件 819

38.4.5 更改AppWizard模板 819

38.4.6 更改CONFIRM.INF文件 822

38.4.7 为永久性的宏使用注册表 823

38.4.8 更改CAboutWizAppWiz类以使用注册表 823

38.5 小结 826