《Visual C++.NET宝典》PDF下载

  • 购买积分:26 如何计算积分?
  • 作  者:(美)Tom Archer,(美)Andrew Whitechapel著;马云等译
  • 出 版 社:北京:电子工业出版社
  • 出版年份:2003
  • ISBN:7505384724
  • 页数:1012 页
图书介绍:本书主要介绍Visual C++.NET的开发环境、语法规则以及Visual C++.NET的种种新特性。如何在Visual Studio.Net集成开发环境中提高程序开发的效率,介绍ADO.NET和XML技术,并通过详细的步骤介绍如何创建Windows窗体、ASP.NET应用程序和Web服务。

8.3.4调整文本 21 1

目 录 1

22.2.7遍历记录集 61 1

15.4理解CPrintDialog类 43 1

13.2.3使用ClistCtrlWithCustomDraw类 38 1

19.4.5对CustomDataTransfer示例程序进行测试 53 1

20.4.4添加初始化程序和数据库代码 55 1

前言 1

22.3.1初始化连接 61 3

第1部分用户接口 5

1.1初步了解新的Visual Studio环境 7

第1章编写第一个MFC应用程序 7

1.2创建第一个Visual Studio项目 10

11.1.2交换数据和状态 3 11

1.2.1研究不同的视图 12

4.3.3更改现有弹出菜单 1 12

4.3.2在运行时更改菜单 1 12

1.2.2添加按钮事件处理程序 14

1.2.3使用Dialog Editor和Toolbox 16

1.2.4使用动态数据交换 18

1.3更正建立错误 19

1.4在Visual Studio 中进行调试 20

1.4.2步进查看MFC源代码 21

1.4.1设置断点 21

1.5使用MFC消息处理程序 25

1.6处理子事件 28

1.7重载基类函数 29

1.8小结 30

第2章 文档、视图和SDI 31

2.1文档/视图设计 31

2.2 CDocument类 33

2.2.1声明一个文档类 33

5.3.2 Windows逻辑键盘 1 35

2.2.2 CDocument的成员函数 35

2.2.4取代虚文档函数 36

2.2.3文档和消息处理 36

2.2.5使用复杂文档数据 37

2.2.6 CCmdTarget和CDocItem 40

2.3 InitInstance函数 41

2.3.1管理文档和视图 42

2.3.3文档模板资源 43

2.3.2框架窗口简介 43

2.3.4字符串资源和文档模板 44

2.3.5常备视图资源 46

2.3.6文档模板的生命周期 46

2.3.7模板的高级用法 47

2.3.9未正式公开的CDocManager类 47

2.3.8使用多个模板 47

2.4.1声明一个视图类 49

2.4 CView类 49

2.3.10销毁用AddDocTemplate成员函数添加的文档 49

2.4.2分析Cview成员函数 50

2.4.4 CView类和MFC的派生变形 52

2.4.3使用视图和消息 52

2.4.6返回框架窗口 53

2.4.7框架窗口 OnCreate函数 53

2.4.5 CForm视图与基于对话的应用程序的对比 53

2.5.1去掉文档名 55

2.5控制标题栏文本 55

2.5.2格式化标题栏文本 56

2.6.1打开和读取文件 57

2.6 HexViewer SDI应用程序 57

2.6.2视图编码 61

2.7小结 65

3.1比较MDI和SDI的结构 67

第3章MDI应用程序 67

3.2.1使用多文档类型 68

3.2文档、视图和框架窗口的组合 68

3.2.2使用文档的多个视图 69

3.2.3了解CMDIFrameWnd类 70

3.2.4了解CMDIChildWnd类 71

3.2.5了解CMultiDocTemplate类 72

3.2.6使用CDocument类的开销 73

3.2.7MDI应用程序 73

3.3 PaintObj程序 74

3.4介绍拆分窗口 81

3.4.1 区分拆分窗口 82

3.4.2特定于CSplitterWnd类的内容 82

3.4.3详细讲解动态拆分 83

3.4.4在动态窗格中使用不同的视图 85

3.4.5使用CruntimeClass对象 85

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

3.4.7使用静态拆分器 87

3.4.8创建静态拆分器 87

3.4.9了解共享滚动条 88

3.4.1 0确定实际的和理想的尺寸 89

3.5 Dynsplit程序 89

3.4.11 拆分器的性能考虑 89

3.6小结 93

4.1创建和编辑菜单 95

第4章菜单 95

4.1.1定义菜单 97

4.1.2编写菜单事件处理程序 100

4.1.3编写一些简单的菜单代码 103

4.1.4组合菜单处理程序 104

4.2加速键 105

4.2.1检查键盘输入 105

4.2.3创建一个加速键表资源 106

4.2.2定义加速键 106

4.2.5选择适当的加速键 107

4.2.4创建加速键菜单提示 107

4.2.6原始Windows API加速键支持 109

4.2.7 C将新加速键表连接到窗口类 110

4.3.1菜单命令范围 111

4.3动态更改菜单 111

4.3.4永久和临时句柄映射 114

4.4上下文菜单 116

4.5小结 117

5.1关于事件 119

第5章鼠标和键盘处理 119

5.2鼠标输入 120

5.2.1创建鼠标消息处理程序 120

5.2.2在屏幕坐标和窗口坐标之间转换 120

5.2.3创建处理鼠标事件的MFC程序 122

5.2.4非客户鼠标事件 128

5.2.5更改鼠标光标 128

5.2.6创建更改鼠标指针的MFC演示程序 130

5.2.7捕获鼠标 132

5.2.8限制鼠标移动 133

5.3.1物理键盘 134

5.3键盘输入 134

5.3.3可打印字符消息 136

5.3.4回显键盘焦点 137

5.4小结 142

6.1.1默认状态栏行为 143

第6章 状态栏和工具栏 143

6.1创建和控制状态栏 143

6.1.2对齐状态栏 145

6.1.3给状态栏添加文本窗格 146

6.1.4在对话框上放置状态栏 147

6.1.5状态栏演示程序 151

6.1.6给状态栏添加进度条 153

6.2创建和控制工具栏 162

6.2.2创建和初始化一个工具栏 162

6.2.1 MFC控件栏 162

6.2.3停靠和浮动 164

6.2.5添加工具提示和浮动文本 164

6.2.4显示和隐藏工具栏 164

6.2.6添加非按钮控件 165

6.2.8使用ReBar控件 166

6.2.7更新非按钮控件 166

6.2.9添加ReBar支持 167

6.3小结 168

第7章树视图和列表视图控件 169

7.1.1树视图控件基础知识 170

7.1树视图控件 170

7.1.2 CTreeCtrl类 171

7.1.4处理CTreeCtrl消息 172

7.1.3创建CTreeCtrl对象 172

7.1.5在CTreeCtrl中插入项 177

7.1.6编辑标签 178

7.1.7在编辑CTreeCtrl项的同时处理Esc和Enter键 181

7.1.8上下文菜单 182

7.1.9展开和折叠树控件分支 184

7.1.10 CTreeCtrl演示程序 185

7.2.1 CListCtrl类 192

7.2列表视图控件 192

7.2.2创建和关联CImageList对象 193

7.2.3设置和更改视图风格 194

7.2.4给CListCtrl中添加列 194

7.2.5调整列表视图的列的大小 196

7.2.6插入列表视图项 198

7.3小结 198

第8章图形设备界面编程 199

8.1介绍图形设备界面 199

8.1.1图形类型 200

8.1.3 GDI设备类型 201

8.1.2 GDI设备 201

8.2设备上下文 202

8.2.1 DC绘图属性 203

8.2.2 WM_PAINT消息 205

8.2.3绘制坐标 205

8.2.4触发WM_PAINT 206

8.2.5 响应WM_PAINT以外的消息进行绘图 207

8.3操纵文本 208

8.3.1 GDI颜色支持 208

8.3.2文本颜色 209

8.3.3 对齐文本 210

8.4.1将对象选入DC 212

8.4.2选择常备字体 212

8.4关于字体 212

8.4.3选择非常备字体 213

8.5使用画笔和画刷 216

8.5.1 画笔 216

8.5.2 画刷 219

8.6映射模式 221

8.7光栅操作 222

8.7.1文本绘图函数 222

8.7.2文本坐标的计算 224

8.8剪取区域 228

8.9 小结 228

9.1位图和视频内存 229

第9章位图、调色板和DIB 229

9.2创建CBitmap对象 230

9.3加载和设置位图内容 232

9.4把CBitmaps绘制到屏幕上 233

9.4.1绘制位图 234

9.4.2创建和显示位图 235

9.5光栅操作 237

9.6 BlitDemo程序 240

9.7调色板和颜色 245

9.7.1其他颜色空间 246

9.7.2逻辑调色板 248

9.7.3调色板事件 250

9.7.4 SetSystemPaletteUse函数 251

9.8设备无关位图 251

9.8.1剖析DIB文件 251

9.8.2 CDib类 253

9.8.3 ShowDIB演示程序 259

9.9双缓冲 261

9.10小结 263

第2部分对话框 265

第1 0章 对话框基础知识和常用控件 267

10.1从对话框和控件开始 267

10.1.1定义CDialog派生类 267

10.1.2 CDialog的主要成员 268

10.1.3显示、控制模态对话框 269

10.1.4命令处理路由和默认处理 270

10.1.5控件也是窗口 273

1 0.1.6把MFC类与控件关联起来 274

10.2.1按钮 282

10.2使用CButton类 282

10.2.2单选钮 283

10.2.3复选框控件 288

10.2.4位图按钮 288

10.2.5使用BS_BITMAP风格 290

10.3使用CEdit类 293

10.3.1使用DDX传送数据 293

10.3.2使用编辑控件 295

10.3.3修改示例程序 298

10.4使用CListBox类 300

10.4.2选择项和查找项 301

10.4.1添加和删除选项 301

10.4.3使用选项数据 302

10.5使用CComboBox 304

10.6修改控件运行时的属性 305

10.6.1改变控件的颜色 305

10.6.2设置控件字体 307

10.6.3循环遍历对话框中的控件 308

10.7小结 308

11.1无模态对话框 309

第1 1章对话框和窗体视图 309

11.1.1创建和显示无模态对话框 310

11.1.3无模态对话框示例程序 315

11.2 CommandUI和KickIdle 320

11.3键盘加速键 323

11.4截获键盘输入 325

11.5串行化基于对话框的应用程序 326

11.5.1让每个类可串行化 326

11.5.2实现Serialize虚函数 327

1 1.5.3从磁盘读取数据 327

11.5.4将数据保存到磁盘 327

11.5.5基于对话框的串行化示例程序 328

11.6为SDI和MDI应用程序创建窗体视图 331

11.6.1创建SDI窗体视图应用程序 332

1 1.6.2在文档的多个视图之间进行切换 333

11.7 MFC控件视图 337

11.7.1常见的误解 338

11.7.2工作原理 338

11.7.3创建CListBoxView类 339

11.7.4使用CListBoxView类 340

11.8小结 341

第12章属性单和属性页 343

1 2.1 CPropertySheet和CPropertyPage 343

12.1.2创建CPropertyPage类 344

12.1.1创建属性页资源 344

12.1.4显示无模态CPropertySheet 345

12.1.3显示模态CPropertySheet 345

12.1.5在对话框内显示属性单 347

12.2模态属性单演示程序 349

12.3高级技巧和提示 352

12.3.1除去标准按钮 353

12.3.2重定位标准按钮 354

1 2.3.4禁用选项卡 356

12.3.3更改标准按钮的标题 356

12.3.5重新启用属性页 359

12.3.6动态设置CPropertyPage选项卡标题 361

12.3.8利用CPropertyPage选项卡的助记符 363

12.3.7更改选项卡的字体 363

12.4小结 365

第3部分高级编程 367

13.1 自己绘制与自定义绘制 369

第1 3章 自定义绘制控件 369

13.1.1处理NM_CUSTOMDRAW通知 370

13.1.2为什么自定义绘制 371

13.2.1创建类 372

13.2创建自定义绘制控件 372

13.2.2 ClistCtrlWithCustomDraw类 373

13.3小结 383

第14章 为控件添加自定义行为 385

14.1添加行为 385

14.1.1修改基类 386

14.1.2多重继承 387

14.1.4模板类 390

14.1.3消息映射 390

14.1.5两者兼顾的方法 391

14.1.6消息映射的问题 393

14.1.7错误 395

14.2.1问题 398

14.2调整对话框和属性页 398

14.2.2模板友好的消息映射 398

1 4.2.3多重继承 400

14.2.4模板类 402

14.2.6调整对话框中控件的尺寸 405

14.2.5全部集中到一起 405

14.2.7使用TXResizable 412

14.3小结 412

第15章打印和打印预览 413

15.1使用Win32 SDK实现打印 413

15.1.1简单的打印示例程序 414

15.1.2退出打印作业 416

15.2用MFC进行打印 422

15.2.1理解打印过程中开发人员和框架的作用 422

15.2.2理解MFC打印序列 423

15.2.3 WYSIWYG打印示例程序 424

15.3打印预览的体系结构 429

15.3.1 打印预览过程 429

15.3.2修改打印预览 429

15.3.3增强应用程序的打印预览 430

15.5小结 432

第1 6章使用DLL 433

16.1 DLL概述 433

16.1.2加载DLL 434

16.1.1动态库和静态库 434

16.2 Visual C++常规DLL 435

16.2.2了解常规DLL内部 436

16.2.1创建常规DLL 436

16.2.3实现自己的DIIMain函数 437

16.2.4动态加载DLL 437

16.2.5编写Windows异常分支 444

16.2.6使用DLL的全局C++对象 451

16.3.1理解MFC扩展DLL内核 458

16.3.2通过MFC扩展DLL导出类 458

16.3 MFC扩展DLL 458

16.3.3关于AFX_EXT_CLASS的更多内容 460

1 6.3.4使用嵌套的MFC扩展DLL 460

16.3.5导出资源 461

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

16.4小结 465

第17章 多线程编程 467

17.1.1创建工作者线程 468

17.1使用线程 468

17.1.2线程函数编程 471

17.1.3创建UI线程 472

17.1.5使线程睡眠 474

17.1.4挂起和继续执行线程 474

17.1.6从一个线程终止另一个线程 475

17.1.7线程、进程和优先级 478

17.1.8进程优先级类 479

17.2在线程之间共享MFC对象 480

17.3在多线程应用程序中使用C运行时函数 482

17.4多线程演示程序 482

17.5小结 486

第1 8章MFC异常处理 487

1 8.1结构化异常处理 487

18.2异常处理语法 488

18.2.1抛出异常 488

1 8.2.2捕获异常 488

1 8.3错误处理技巧比较 489

1 8.3.1处理错误码 490

1 8.3.2在正确上下文中处理错误 490

1 8.3.3提高代码可读性 491

1 8.4.1创建和删除CException对象 493

18.3.4从构造函数中抛出异常 493

1 8.4 CException类 493

1 8.4.2从CException对象中检索错误信息 494

1 8.4.3捕获多种异常类型 495

18.5定义CException派生类 496

1 8.5.1研究CFileException类 497

1 8.5.2 CFileException演示程序 498

18.5.3定义自己的CException派生类 501

18.6.1确定应该捕获异常的函数 504

18.6高级异常处理技术 504

18.6.2确定放置在try块中的代码 505

18.6.3确定放置在catch块中的代码 506

18.6.4从虚函数中抛出异常 507

18.7小结 510

第4部分数据I/O 511

第1 9章 剪贴板 513

19.1 使用Windows剪贴板API 513

19.1.1为数据分配内存空间 514

19.1.4打开剪贴板 515

19.1.3解除对全局内存的锁定 515

19.1.5清空剪贴板 515

19.1.2把数据复制到全局内存中 515

19.1.6设置剪贴板数据 516

19.2传递纯文本的示例程序 517

19.1.7关闭剪贴板 517

19.2.1创建SimpleTextTransfer示例项目文件 518

19.2.2把文本复制到剪贴板上 518

1 9.2.3把文本剪切到剪贴板上 519

19.2.4粘贴剪贴板上的文本 520

19.2.5 对SimpleTextTransfer示例程序进行测试 520

19.3.2粘贴剪贴板中的位图图像 522

19.3转移位图图像的示例程序 522

19.3.1创建BitmapTransfer示例项目文件 522

19.3.3对Paste Bitmap按钮的功能进行测试 524

19.3.4把位图图像复制到剪贴板上 524

19.3.5测试把位图复制到剪贴板上的程序功能 527

19.4转移自定义数据的示例程序 527

19.4.1创建CustomDataTransfer示例项目文件 528

19.4.3把自定义数据复制到剪贴板上 528

19.4.2把自定义数据格式复制到剪贴板上 528

1 9.4.4从剪贴板上粘贴自定义数据 530

19.5接收剪贴板上内容已被更改的通知消息 532

19.6小结 536

第20章使用ODBC 537

20.1 ODBC定义和数据库术语 537

20.2 ODBC的标准 539

20.2.1理解ODBC的工作方式 540

20.3实现ODBC 541

20.2.3 ODBC SQL一致性层 541

20.2.2 ODBC API一致性层 541

20.3.1配置ODBC 542

20.3.2连接数据源 543

20.3.3查询数据和数据源 545

20.3.4准备和执行SQL请求 546

20.3.5检索数据 546

20.3.6断开与数据源的连接 547

20.4使用ODBC获取数据 548

20.4.1创建ODBC DSN 549

20.4.3修改ODBCDemo对话框 550

20.4.2为Visual C++项目添加对ODBC的支持 550

20.5.1 CODBCDynamic类声明 556

20.5使用ODBC动态查询数据源 556

20.5.2了解CODBCDynamic类的工作方式 558

20.5.3使用CODBCDynamic类 563

20.6小结 564

第21章MFC数据库类 565

21.1 CDatabase对象 565

21.1.1使用CDatabase::Open函数 567

2 1.1.3事务和CDatabase对象 568

2 1.1.2使用CDatabase::OpenEx函数 568

21.2 CRecordset对象 569

21.2.1构造一个记录集 574

21.2.2打开一个记录集 574

2 1.2.3使用RFX读写数据 575

21.2.4过滤记录 575

2 1.2.5对记录集返回的记录进行排序 577

21.2.6在搜索中使用通配符 578

21.2.7在结果集中移动 579

21.3.1 UserMaintenance演示程序 580

21.3 MFC数据库类编程 580

21.2.9删除记录 580

2 1.2.8保存记录 580

21.3.2参数化记录集与查询 590

21.4小结 598

第22章ADO 599

22.1 ADO概览 599

22.1.1通用数据访问初步知识 599

22.1.2 ADO结构 600

22.1.3 ADO的许多接口 603

22.1.4仔细阅读ADO类库 603

22.2使用ADO编程 604

22.2.1导入ADO类库 604

22.2.2初始化和结束COM 606

22.2.3连接数据源 606

22.2.4创建命令 607

22.2.5执行返回数据的命令 608

22.2.6筛选数据和对数据排序 609

22.2.8更新数据 612

22.3 Demo ADO应用程序 613

22.3.2显示用户 614

22.3.3更新用户信息 617

22.3.4添加一些用户界面装饰 620

22.4小结 622

第23章DAO 623

23.1 DAO层次结构 624

23.1.1 DBEngine对象 625

23.1.2 Workspaces集合对象 625

23.1.3 Workspace对象 625

23.1.4 Databases集合 625

23.1.5 Database对象 626

23.1.6 Recordsets集合 626

23.1.7 Recordset对象 626

23.2.2 dbDAO C++类 627

23.2 DAO的多种内部形式 627

23.2.1 DAO自动化接口 627

23.2.3 MFC DAO类 628

23.3使用MFC DAO类 628

23.3.1 CDaoDatabase类 629

23.3.2 CDaoWorkspace类 631

23.3.3 CDaoRecordset类 631

23.4 MFC DAO演示程序 638

23.4.1添加一个工具类封装用户数据 639

23.4.2为UserMaster表创建一个CDaoRecordset类 639

23.4.3初始化对话框 639

23.4.5初始化对话框的控件 640

23.4.4将用户添入列表框 640

23.4.6列表框项选择事件处理程序 641

23.4.7保存用户数据 642

23.4.8删除用户 644

23.4.9清理工作 645

23.4.10测试演示程序 646

23.5小结 646

第24章MFC中的CFile和文件I/O 647

24.1 CFile类 647

24.1.1实例化CFile对象 648

24.1.2打开文件 648

24.1.4将数据写入文件 650

24.1.3从文件读取数据 650

24.1.5定位文件中的数据 651

24.2打开和显示二进制文件的例子 652

24.3使用文本文件 654

24.4以逗号进行分隔的文件类 656

24.5打开和显示CSV文件的例子 661

24.6操作压缩数据 663

24.6.1数据压缩标准 663

24.6.2 CompressDemo程序 664

24.6.3 CCompressedFile类函数 666

24.6.4剖析CompressDemo 668

24.7小结 670

第25章 在Visual C++中使用XML 671

25.1 XML概述 671

25.2 XML术语和语法 672

25.3 XMLDOM介绍 675

25.4上载和查看XML文档 676

25.4.1创建Visual C++项目和对话框 676

25.4.2合并XML支持 677

25.4.3上载XML文档 678

25.4.4遍历XML文档 679

25.4.5 使UI更友好 682

25.5小结 684

第5部分 COM和ATL 685

第26章基于接口的程序设计 687

26.1基于组件的软件 687

26.1.1 n层系统 688

26.1.2接口与实现 689

26.1.3抽象类和接口 690

26.1.4 C++的VTBL 692

26.1.5管理对象 692

26.2使用IUnknown 693

26.2.1管理生命周期 694

26.2.2 GUID,CLSID和IID 696

26…2 3发现身份 697

26.2.4使用HRESULT值 698

26.2.5接口不变性 700

26.2.6接口继承 701

26.3 IDL简介 703

26.4小结 706

第27章创建和使用组件 707

27.1 COM的设计目标和优势 707

27.2对象和服务器 708

27.3创建COM对象 709

27.4注册表 711

27.4.1 DLL必须输出的函数 712

27.4.2IClassFactory 714

27.4.3使用RegSvr32 716

27.5小结 722

第28章类型库 723

28.1类型库 723

28.2列集 724

28.2.1类型库列集 725

28.2.2 IDL,ODL和MkTypLib 725

28.3 C++编译器扩展 728

28.3.1 EXE服务器和列集 731

28.3.2自定义接口和proxy-stub DLL 734

28.4小结 736

29.1套间模型 737

第29章COM中的线程 737

29.1.1 STA与MTA 738

29.1.2客户/服务器线程 739

29.1.3混合线程模型 739

29.2线程列集 741

29.2.1MEOW数据包 743

29.2.2问题较多的FTM 746

29.3小结 748

第30章ATL介绍 749

30.1活动模板库 749

30.2创建ATL COM应用程序 750

30.2.1查看ATL应用程序代码 751

30.2.2创建新的ATL对象 755

30.2.3查看ATL对象代码 757

30.2.4编写带属性的代码 761

30.3扩展向导 764

30.3.1多个对象 764

30.3.2多个接口 764

30.4支持ATL调试 767

30.4.1_ATL_DEBUG_QI宏 767

30.4.2_ATL_DEBUG_INTERFACES宏 767

30.4.3ATLbuild环境的配置 768

30.4.4实现ATL的ISupportErrorInfo接口 768

30.5小结 770

第31章ATL的窗口程序设计 771

31.1 ATL窗口类 771

3 1.2消息映射 772

3 1.2.1替代消息映射 773

31.2.2链接的消息映射 775

31.2.3反射的消息 776

3 1.3 ATL窗口应用程序示例 777

31.3.1创建Win32应用程序项目 777

3 1.3.2手工添加ATL的支持 778

3 1.3.3 创建一个ATL窗口 779

31.3.5测试HelloATL应用程序 781

31.3.4修改WinMain来创建ATL模块 781

31.4 ATL框架-视图应用程序示例 782

3 1.4.1创建Scribble项目 782

3 1.4.2添加主框架窗口 782

31.4.3处理鼠标的输入操作 785

31.4.4添加菜单 787

31.5小结 790

第32章用ATL处理事件 791

32.1事件的定义 791

32.2源接口 793

32.3向导对事件的支持 793

32.4 Event接口定义 794

32.5连接点和IConnectionPoint 796

32.6 IConnectionPointContainer 796

32.7建立事件的调用序列 798

32.8不带属性的服务器端事件的支持 798

32.9带属性的服务器端的事件支持 800

32.10不带属性的客户端事件的支持 802

32.1 1带属性的客户端事件的支持 804

32.12小结 805

第33章用ATL实现自动化 807

33.1自动化介绍 807

33.1.1 VARIANT 808

33.1.2 IDispatch接口 810

33.1.3 Dispinterfaces 813

33.1.4双接口 813

33.1.5 ATL对IDispatch的支持 814

33.2创建ATL自动化服务器 816

33.3 自动化客户 818

33.3.1智能指针客户 819

33.3.2 MFC包装客户 819

33.3.3HTML/JavaScript客户 823

33.3.4使用CComDispatchDriver 824

33.5小结 825

33.4使用双接口和自动化的问题 825

第34章WTL简介 827

34.1 WTL概述和特点 827

34.2下载和安装WTL 829

34.3 WTL的Hello示例程序 830

34.4 WTL的Scribble程序 835

34.5 WTL的适用范围 837

34.6学习更多WTL的知识 838

34.7小结 838

第6部分 COM+编程 839

35.1 COM+和标准COM部件 841

35.1.1创建标准COM部件 841

第35章 创建完整的COM+应用程序 841

35.1.2建立简单的脚本客户 844

35.1.3将COM部件集成到COM+运行环境中 845

35.2 COM+和状态 849

35.2.1状态的类型 849

35.2.2存储状态 850

35.3 COM+部件需求 851

35.4建立COM+部件 852

35.4.1上下文对象 852

35.4.2对象控制 853

35.4.3使用Visual C++建立COM+部件 854

35.4.4共享属性管理器 855

35.4.5在COM+内引用对象 857

35.4.6在COM+内创建对象 858

35.5小结 858

第36章 COM+和松散耦合事件 859

36.1 COM+事件服务 859

36.1.1事件是什么 860

36.1.2 COM+事件服务限制 861

36.2事件服务演示 862

36.2.1创建发布者 862

36.2.2创建订阅者 864

36.2.3启动COM+事件 867

36.2.4测试COM+事件服务 869

36.3 IEventSubscription接口 870

36.4使用瞬时订阅 871

36.4.1注册瞬时订阅 871

36.4.2取消瞬时订阅注册 872

36.5事件过滤 873

36.5.1管理地创建过滤字符串 874

36.5.2用程序创建过滤字符串 875

36.6小结 876

第37章 COM+排队部件 877

37.1排队部件概述 877

37.1.1排队部件的好处 877

37.1.2定义排队部件 880

37.1.3排队部件适合你吗 883

37.2开发一个简单的QC程序 886

37.2.1编写服务器端的Queued部件 886

37.2.2编写排队部件的客户程序 888

37.2.3测试部件和客户代码 894

37.3小结 896

第7部分ATL服务器 897

第38章ATL服务器初探 899

38.1 ATL服务器概述 899

38.1.1服务器端处理的历史 899

38.1.2 ISAPI扩展和筛选 900

38.2.1创建ATL服务器工程 902

38.2开始使用ATL服务器 902

38.2.2编译连接ATL服务器项目 903

38.2.3快速浏览文件 904

38.2.4模板处理 904

38.3 ATL服务器参数 905

38.3.1单参数函数 905

38.3.2多参数函数 906

38.4小结 910

第39章创建带有ATL服务器的Web服务 911

39.1理解Web服务 911

39.1.1 Web服务易于编写 912

39.2理解SOAP 913

39.1.2 Web服务是平台独立的 913

39.1.3 Web服务可通过防火墙工作 913

39.3 SOAP是什么 914

39.3.1 SOAP包 915

39.4开始ATL服务器Web服务 917

39.4.1创建ATL服务器Web服务 917

39.4.2从MFC应用程序中使用Web服务 919

39.5小结 922

第40章编写ATL服务器应用程序 923

40.1编写一个“每日提示”的演示程序 923

40.1.2实现标志处理函数 924

40.1.1删除向导的默认值 924

40.1.3更新TipOfTheDay.SRF 928

40.1.4调整外观 929

40.1.5实现每天的随机提示 931

40.1.6引入其他的SRF标志 937

40.2小结 940

第8部分 .NET编程 941

第41章.NET介绍 943

41.1.NET概述 943

41.2选择.NET语言 946

41.3 BCL和系统名字空间 947

41.4生成执行代码 948

41.4.1微软中间语言和JITter 948

41.4.2程序集和元数据 950

41.4.3程序集清单数据 950

41.5小结 952

第42章编写托管C++代码 953

42.1 开始使用Visual C++ 953

42.2作为Smart域的属性 955

42.2.1定义和使用属性 957

42.2.2编译器真正在做什么 958

42.2.4属性的高级用法 960

42.3授权和事件句柄 960

42.2.3指定只读、只写和读/写特性 960

42.4用授权作为回调函数 961

42.5小结 966

第43章托管C++的多线程 967

43.1线程概述 967

43.2使用线程类创建工作者线程 967

43.3向工作者线程传递数据 971

43.4线程的生命周期管理 974

43.4.1暂停和恢复线程的执行 974

43.4.2退出线程 976

43.4.3将所有方法合起来使用 979

43.5使用线程的优先级 983

43.6同步线程 986

43.6.1用monitor类来保护代码 988

43.6.2用mutex类来同步代码 991

43.7多线程设计指南 992

43.7.1何时使用线程 992

43.7.2何时不使用线程 993

43.8小结 994

第44章使用Windows Forms 995

44.1创建第一个Windows Forms程序 995

44.2在Windows Forms中添加控件 998

44.3在Windows Forms应用程序中集成菜单 1003

44.4用托管C++编写图像浏览器 1007

44.5小结 1012