图书介绍

Microsoft Visual C++ .NET技术内幕 第6版2025|PDF|Epub|mobi|kindle电子书版本百度云盘下载

Microsoft Visual C++ .NET技术内幕 第6版
  • (美)George Shepherd,(美)David Kruglinski著;潘爱民译 著
  • 出版社: 北京:清华大学出版社
  • ISBN:7302089310
  • 出版时间:2004
  • 标注页数:920页
  • 文件大小:18MB
  • 文件页数:956页
  • 主题词:C语言-程序设计

PDF下载


点此进入-本书在线PDF格式电子书下载【推荐-云解压-方便快捷】直接下载PDF格式图书。移动端-PC端通用
种子下载[BT下载速度快]温馨提示:(请使用BT下载软件FDM进行下载)软件下载地址页直链下载[便捷但速度慢]  [在线试读本书]   [在线获取解压码]

下载说明

Microsoft Visual C++ .NET技术内幕 第6版PDF格式电子书版下载

下载的文件为RAR压缩包。需要使用解压软件进行解压得到PDF格式图书。

建议使用BT下载工具Free Download Manager进行下载,简称FDM(免费,没有广告,支持多平台)。本站资源全部打包为BT种子。所以需要使用专业的BT下载软件进行下载。如BitComet qBittorrent uTorrent等BT下载工具。迅雷目前由于本站不是热门资源。不推荐使用!后期资源热门了。安装了迅雷也可以迅雷进行下载!

(文件页数 要大于 标注页数,上中下等多册电子书除外)

注意:本站所有压缩包均有解压码: 点击下载压缩包解压工具

图书目录

1.1 Windows编程模型3

1.1.1 消息处理3

目录3

第1部分 Windows、Visual C++.NET和应用程序框架基础3

第1章 Windows和Visual C++.NET3

1.1.2 Windows的图形设备接口(GDI)4

1.1.6 Win32应用程序编程接口5

1.1.5 动态连接库(DLL)5

1.1.3 基于资源的程序设计5

1.1.4 内存管理5

1.2.1 Visual C++.NET和创建过程6

1.2 Visual C++.NET的组成6

1.2.4 源代码编辑器9

1.2.3 C/C++编译器9

1.2.2 资源视图窗口和资源编辑器9

1.2.7 调试器10

1.2.6 连接器10

1.2.5 资源编译器10

1.2.8 MFC Application Wizard11

1.2.11 对象浏览器12

1.2.10 解决方案资源管理器12

1.2.9 Class View12

1.2.13 联机帮助13

1.2.12 UML工具13

1.2.16 ATL库版本7.014

1.2.15 MFC库版本714

1.2.14 Windows诊断工具14

1.2.17 .NET支持15

2.1 为什么要使用应用程序框架16

第2章 Microsoft基本类库应用程序框架16

2.2.1 应用程序框架和类库20

2.2 什么是应用程序框架20

2.1.1 学习曲线20

2.2.2 应用程序框架示例21

2.4 文档和视图24

2.3 MFC库消息映射24

3.1 什么是视图29

第3章 从MFC Application Wizard开始学习29

第Ⅱ部分 MFC基础29

3.4 Ex03a:“不做任何事情”的应用程序30

3.3 MFC库支持的用户界面30

3.2 MFC库应用程序的类犁30

3.5 CEx03aView视图类34

3.6.2 Windows设备环境35

3.6.1 OnDraw成员函数35

3.6 在视图窗口内绘图:Windows GDI35

3.6.3 向Ex03a程序中添加绘制代码36

3.7.1 Ex03a.rc的内容37

3.7 资源编辑器简介37

3.7.2 运行对话框资源编辑器38

3.8 Win32 Debug目标和Win32 Release目标39

3.9 对预编译头文件的理解40

3.10 两种方法运行程序42

4.1 向导的类型43

第4章 Visual C++.NET向导43

4.2 向导是如何工作的44

4.3 创建一个向导45

4.4 创建一个“用托管c++来开发Web应用程序”的向导46

5.1 获取用户输入——消息映射函数53

第5章 Windows消息映射53

5.1.2 保存视图的状态:类的数据成员54

5.1.1 消息映射54

5.1.4 使矩形区域无效的理论55

5.1.3 初始化视图类数据成员55

5.1.7 判断一个点是否在矩形内56

5.1.6 CRect,CPoint和CSize类的运算56

5.1.5 Windows的客户区域56

5.1.9 判断一个点是否在椭圆内57

5.1.8 CRect的LPRECT操作符57

5.1.10 Ex05a示例程序58

5.1.11 对Ex05a使用Class View61

5.2 使用Windows映射模式64

5.2.1 MM_TEXT映射模式65

5.2.3 “可变比例”映射模式66

5.2.2 “固定比例”映射模式66

5.2.4 坐标转换68

5.2.5 Ex05b示例程序——转换到MM_HIMETRIC映射模式69

5.3.3 滚动方式的选择71

5.3.2 滚动条71

5.3 创建一个滚动视图窗口71

5.3.1 窗口比您所见到的要大71

5.3.6 Ex05c示例程序:滚动72

5.3.5 接收键盘输入72

5.3.4 OnlnitialUpdate函数72

5.4.3 WM_QUERYENDSESSION消息76

5.4.2 WM_CLOSE消息76

5.4 使用其他Windows消息76

5.4.1 WM_CREATE消息76

5.4.5 WM_NCDESTROY消息77

5.4.4 WM_DESTROY消息77

6.1 设备环境类78

第6章 经典的GDI函数、字体和位图78

6.1.2 构造和析构CDC对象79

6.1.1 显示设备环境类CClientDC和CWindowDC79

6.1.4 CPaintDC类80

6.1.3 设备环境的状态80

6.2.1 GDI对象的构造与析构81

6.2 GDI对象81

6.2.2 跟踪GDl对象82

6.2.4 GDI选择的有效期83

6.2.3 库存的GDI对象83

6.3.1 字体是GDI对象84

6.3 字体84

6.3.4 显示字体85

6.3.3 打印字体85

6.3.2 选择字体85

6.3.5 显示器的逻辑英寸和物理英寸86

6.3.6 计算字符高度87

6.4 Ex06a示例程序88

6.4.1 Ex06a程序的组成元素90

6.5 Ex06b示例程序91

6.6 Ex06c示例程序——再次使用CScrollView94

6.5.1 Ex06b程序的组成元素94

6.6.1 Ex06c程序的组成元素97

6.7 位图99

6.6.3 在滚动视图中使用逻辑twips映射模式99

6.6.2 CScrollView的SetScaleToFitSize模式99

6.7.1 GDI位图和与设备无关的位图100

6.8.1 关于调色板编程的术语101

6.8 DIB和CDib类101

6.7.2 彩色位图和单色位图101

6.8.2 DIB、像素和颜色表102

6.8.3 BMP文件中DIB的结构103

6.8.5 CDib类104

6.8.4 DIB访问函数104

6.8.6 DIB显示性能110

6.8.7 Ex06d示例程序111

6.9 进一步使用DIB113

6.9.1 LoadImage函数114

6.10 在按钮上放置位图115

6.9.2 DrawDibDraw函数115

6.10.1 Ex06e示例程序116

6.10.2 进一步使用位图按钮118

7.2 资源和控件119

7.1 模式和无模式对话框119

第7章 对话框119

7.3 模式对话框的编程120

7.4 包罗万象的对话框——Ex07a示例程序121

7.4.1 创建对话框资源122

7.4.2 创建对话框类127

7.4.3 将对话框与视图相连接131

7.4.4 深入理解Ex07a应用程序133

7.5.1 控制OnOK退出过程134

7.5 Ex07a应用程序的改进134

7.5.2 OnCancel处理135

7.5.3 和滚动条控件挂上钩136

7.6 控件的标识:CWnd指针和控件ID137

7.7 设置对话框的背景色和其中控件的颜色138

7.10 Windows通用对话框139

7.9 利用其他的控件特性139

7.8 在运行时加入对话框控件139

7.10.2 从通用对话框类进行派生140

7.10.1 直接使用CFileDialog类140

7.10.4 Ex07b示例程序:CFileDialog141

7.10.3 嵌套对话框141

7.10.5 CFileDialog的其他可定制特性146

7.11.2 用户定义的消息147

7.11.1 创建无模式对话框147

7.11 无模式对话框的编程147

7.11.4 Ex07c示例程序:无模式对话框148

7.11.3 对话框的所有关系(Ownership)148

8.1 标准通用控件155

第8章 通用控件155

8.1.2 滑块控件(Slider Control)156

8.1.1 进度指示器控件(Progress Control)156

8.1.5 树状控件157

8.1.4 列表控件157

8.1.3 微调控件(Spin Control)157

8.2 Ex08a示例程序:标准通用控件158

8.1.6 WM_NOTIFY消息158

8.3.1 日期时间选择器171

8.3 高级通用控件171

8.3.2 月历控件172

8.3.4 扩展的组合框控件173

8.3.3 IP地址控件173

8.4 Ex08b示例程序:高级通用控件174

9.1 ActiveX控件和普通Windows控件187

第9章 使用ActiveX控件187

9.1.3 ActiveX控件与普通控件的不同点:属性和方法188

9.1.2 ActiveX控件与普通控件的相同点188

9.1.1 普通的Windows控件:一个参考框架188

9.2 安装ActiveX控件189

9.3 日历控件191

9.4.1 属性访问192

9.4 ActiveX控件容器编程192

9.4.2 Visual Studio.NET为ActiveX控件产生的C++包装类193

9.4.4 Add Class Wizard和容器对话框196

9.4.3 MFC Application Wizard对ActiveX控件的支持196

9.5 Ex09a示例程序:ActiveX控件对话框容器198

9.4.5 把ActiveX控件锁定在内存里198

9.7 在运行时创建ActiveX控件206

9.6 ActiveX控件在HTML文件中的使用206

9.8 Ex09b示例程序:Web浏览器ActiveX控件207

9.10 可绑定的属性:变化通知211

9.9 图形属性211

10.1 进程和内存空间213

第10章 Win32核心内存管理213

10.1.1 Windows 95/98进程地址空间214

10.1.2 Windows NT/2000/XP的进程地址空间215

10.2 虚拟内存如何工作216

10.3 VirtualAlloc函数——占用和保留内存218

10.4 Windows堆和GlobalAlloc函数族219

10.6 内存映射文件220

10.5 小内存堆,C++的new和delete操作符,_heapmin220

10.8 管理动态内存的一些提示222

10.7 访问资源222

10.9 常量数据的优化存储223

11.1.1 单线程程序处理消息的过程225

11.1 Windows消息处理225

第11章 Windows消息处理和多线程编程225

11.1.3 计时器226

11.1.2 交出控制226

11.1.4 Ex11a示例程序227

11.2 空状态处理230

11.3.1 编写辅助线程函数和启动线程231

11.3 多线程编程231

11.3.2 主线程如何与辅助线程通话232

11.3.3 辅助线程如何与主线程通话233

11.3.4 Ex11b示例程序234

11.3.5 用事件使线程同步235

11.3.6 Ex11c示例程序236

11.3.8 临界区238

11.3.7 线程阻塞238

11.3.10 用户界面线程(UI线程)240

11.3.9 互斥体(mutex)和信号(semaphore)240

12.1 主框架窗口和文档类243

第12章 菜单、键盘加速键、复文本编辑控件和属性表243

第Ⅲ部分 MFC的文档-视图结构243

12.2 Windows菜单244

12.3 键盘加速键245

12.4 命令处理246

12.4.2 更新命令用户界面消息控制函数247

12.4.1 派生类中的命令消息控制247

12.5 应用程序框架的内置菜单命令248

12.4.3 对话框发送的命令248

12.6.1 CEditView类249

12.6 MFC文本编辑选择249

12.5.1 菜单命令的启用/禁用249

12.7 Ex12a示例程序250

12.6.3 CRichEditCtrl类250

12.6.2 CRichEditView类250

12.8.1 创建属性表256

12.8.2 属性表数据交换256

12.8 属性表256

12.9 改进Ex12a示例程序257

12.10 CMenu类269

12.9.1 Apply按钮的处理过程269

12.11 创建浮动的快捷菜单270

12.12 扩展的命令处理271

13.1 控制栏和应用程序框架273

第13章 工具栏和状态栏273

13.2.2 工具栏按钮的状态274

13.2.1 工具栏位图274

13.2 工具栏274

13.2.3 工具栏和命令消息275

13.2.4 工具栏更新命令UI消息控制函数276

13.4 获得主框架窗口277

13.3 工具提示277

13.5 Ex13a示例程序:使用工具栏278

13.6.1 状态栏的定义282

13.6 状态栏282

13.6.3 状态指示器283

13.6.2 信息行283

13.6.4 对状态栏的控制284

13.7 Ex13b示例程序:使用状态栏285

13.8 Rebar289

13.9 Ex13c示例程序:使用rebar290

13.8.1 解剖一个reban290

14.1 为什么可重用基类难以设计294

第14章 可重用的框架窗口基类294

14.3 CFrameWnd::ActivateFrame成员函数295

14.2 CPersistentFrame类295

14.4 PreCreateWindow成员函数296

14.5 Windows注册表297

14.6 使用CString类299

14.7 最大化窗口的位置300

14.10 默认窗口矩形301

14.9 静态数据成员301

14.8 控制栏状态和注册表301

14.11 Ex14a示例程序:使用持续框架窗口类302

14.12 MDI应用程序中的持续框架307

15.1 文档-视图之间的相互作用函数308

第15章 文档与视图的分离308

15.1.2 CDocument::UpdateAllViews函数309

15.1.1 CView::GetDocument函数309

15.1.4 CView::OnlnitialUpdate函数310

15.1.3 CView::OnUpdate函数310

15.2 最简单的文档-视图应用程序311

15.1.5 CDocument::OnNewDocument函数311

15.3 CForm View类312

15.5.1 TRACE宏313

15.5 诊断信息转储313

15.4 CObject类313

15.5.3 信息转储环境及CObject类314

15.5.2 afxDump对象314

15.5.4 未被删除对象的自动信息转储315

15.6 Ex15a示例程序:简单的文档-视图交互318

15.7 更加高级的文档-视图交互324

15.9 CObList集合类325

15.8 CDocument::DeleteContents函数325

15.9.1 对先入先出列表使用CObList类326

15.9.2 在CObList中进行迭代——POSITION变量327

15.9.3 CTypedPtrList模板集合类328

15.9.4 信息转储环境及集合类329

15.10 Ex15b示例程序:一个多视图SDI应用程序330

15.10.1 资源要求331

15.10.2 代码要求332

15.10.4 测试Ex15b应用程序346

15.10.3 保护类型的虚函数346

15.11 留给读者的两个练习347

16.1 什么是序列化348

第16章 读和写文档348

16.1.2 使类可序列化349

16.1.1 磁盘文件和归档(Archives)349

16.1.3 编写Serialize函数350

16.1.4 从归档中载入:内嵌对象和指针351

16.1.6 Serialize函数和应用程序框架353

16.1.5 使集合序列化353

16.2.1 Windows应用程序对象354

16.2 SDI应用程序354

16.2.2 文档模板类355

16.2.3 文档模板资源356

16.2.5 创建空文档:CWinApp::OnFileNew函数357

16.2.4 SDI文档的多视图357

16.2.7 连接File/Open与序列化代码:OnFileOpen函数358

16.2.6 文档类的OnNewDocument函数358

16.2.9 将File/Save和File/Save As与序列化代码相连接359

16.2.8 文档类的DeleteContents函数359

16.3 Ex16a示例程序:支持序列化的SDI程序360

16.2.10 文档的“脏”标志360

16.3.2 CEx16aApp361

16.3.1 CStudent361

16.3.3 CMainFrame365

16.3.4 CEx16aDoc类368

16.4 从Windows资源管理器启动及拖放370

16.3.6 测试Ex16a应用程序370

16.3.5 CEx16aView类370

16.4.2 双击文档371

16.4.1 程序注册371

16.5 MDI支持372

16.4.5 试验用Windows资源管理器启动程序及拖放372

16.4.3 允许拖放372

16.4.4 程序启动参数372

16.5.1 一个典型的具有MFC风格的MDI应用程序373

16.5.3 MDI文档模板类374

16.5.2 MDI应用程序对象374

16.5.4 MDI框架窗口和MDI窗口375

16.5.5 主框架和文档模板资源376

16.5.7 为已有的文档创建附加视图377

16.5.6 创建空文档377

16.5.9 多文档模板378

16.5.8 载入和存储文档378

16.6 Ex16b示例程序:MDI应用程序379

16.5.10 从Windows资源管理器启动及拖放379

16.6.1 CEx16bApp380

16.6.2 CMainFrame384

16.6.3 CChildFrame387

16.8 Ex16c示例程序:MTI应用程序389

16.7 MTI支持389

16.6.4 测试Ex16b应用程序389

16.8.1 测试Ex16c应用程序391

17.1.1 标准打印对话框392

17.1 基于Windows的打印392

第17章 打印和打印预览392

17.1.2 交互选择打印页码393

17.2 打印预览394

17.1.3 显示页和打印页394

17.3.3 准备设备环境:CView::OnPrepareDC函数395

17.3.2 CView::OnPrint函数395

17.3 打印机的程序设计395

17.3.1 打印机设备环境和CView::OnDraw函数395

17.3.4 打印任务的开始和结束396

17.4 Ex17a示例程序:一个所见即所得的打印程序397

17.4.1 读取打印机矩形框402

17.5 再看模板集合类:CArray类403

17.6 Ex17b示例程序:多页打印程序404

18.1 切分窗口410

第18章 切分窗口和多视图410

18.3 动态和静态切分窗口411

18.2 关于视图的选择411

18.4.1 与切分有关的资源412

18.4 Ex18a示例程序:具有单个视图类的SDI动态切分412

18.4.3 测试Ex18a应用程序413

18.4.2 CMainFrame413

18.5.1 CHexView414

18.5 Ex18b示例程序:双视图类SDI静态切分414

18.5.2 CMainFrame415

18.6 Ex18c示例程序:切换视图类但不用切分窗口416

18.5.3 测试Ex18b应用程序416

18.6.2 CMainFrame417

18.6.1 资源要求417

18.6.3 测试Ex18c应用程序418

18.7.1 资源要求419

18.7 Ex18d示例程序:多视图类MDI应用程序419

18.7.3 CMainFrame420

18.7.2 CEx18dApp420

18.7.4 测试Ex18d应用程序421

19.1 WinHelp和HTML Help423

第19章 上下文相关帮助423

19.2.1 编写简单的帮助文件425

19.2.1 复文本格式(RTF)425

19.2 Windows的WinHelp程序425

19.3 应用程序框架与WinHelp430

19.2.3 改进的目录430

19.3.1 调用WinHelp431

19.3.4 帮助上下文别名432

19.3.3 从应用程序的菜单来调用WinHelp432

19.3.2 使用搜索字符串432

19.3.5 确定帮助上下文433

19.3.8 消息框帮助:AfxMessageBox函数434

19.3.7 Shift+F1 帮助434

19.3.6 F1帮助434

19.4 帮助示例:不需要任何编程435

19.3.9 一般的帮助435

19.5.1 F1处理过程437

19.5 帮助命令处理437

19.6 Ex19b示例程序:帮助命令处理438

19.5.2 Shift+F1 处理过程438

19.6.2 CStringView439

19.6.1 头文件要求439

19.6.5 帮助文件要求440

19.6.4 资源要求440

19.6.3 CHexView440

19.7 MFC和HTML Help441

19.6.6 测试Ex19b应用程序441

19.8 Ex19c示例程序:HTML Help442

20.1 基本DLL理论444

第20章 动态链接库444

20.1.1 导入如何与导出相匹配445

20.1.3 符号链接和序号链接446

20.1.2 隐式链接和显式链接446

20.1.4 DLL入口点:DllMain447

20.1.6 客户程序如何找到DLL448

20.1.5 实例句柄:装载资源448

20.2 MFC DLL:扩展的和常规的449

20.1.7 调试DLL449

20.2.2 MFC扩展DLL的资源搜索序列450

20.2.1 MFC扩展DLL:导出类450

20.2.3 Ex2Oa示例程序:MFC扩展DLL451

20.2.4 Ex2Ob示例程序:DLL测试客户程序453

20.2.7 MFC常规DLL的资源搜索序列454

20.2.6 使用AFX_MANAGE_STATE宏454

20.2.5 MFC常规DLL:AFX_EXTENSION_MODULE结构454

20.2.8 Ex20c示例程序:MFC常规DLL455

20.2.9 修改Ex2Ob示例程序:加入代码以测试Ex20c.dll457

20.3.1 什么是自定义控件458

20.3 自定义控件DLL458

20.3.3 MFC库和WndProc函数459

20.3.2 自定义控件的窗口类459

20.3.5 发送给控件的用户定义消息460

20.3.4 自定义控件的通知消息460

20.3.6 Ex2Od示例程序:自定义控件461

20.3.7 再修改Ex2Ob示例程序:加入代码以测试Ex2Od.dll466

21.1 Ex21a示例程序:一个基于对话框的应用程序469

第21章 不带文档或视图类的MFC程序469

21.1.1 应用程序类的lnitlnstance函数471

21.1.2 对话框类和程序图标472

21.2 Ex21b示例程序:一个SDI应用程序473

21.3 Ex21c示例程序:一个MDI应用程序475

22.1 ActiveX技术479

第22章 组件对象模型479

第Ⅳ部分 C0M、自动化、ActiveX和OLE479

22.2.1 COM的本质480

22.2 什么是COM480

22.2.2 什么是COM接口481

22.2.3 IUnknown接口和QueryInterface成员函数485

22.2.4 引用计数:AddRef和Release函数488

22.2.5 类厂(class factory)489

22.3 Ex22a示例程序:一个模拟的COM491

22.2.6 CCmdTarget类491

22.4.1 COM的CoGetClassObject函数499

22.4 MFC库中实际的COM499

22.4.2 COM和Windows注册表500

22.4.3 运行时对象注册501

22.4.4 COM客户程序如何调用进程内组件502

22.4.5 COM客户程序如何调用进程外组件503

22.4.6 MFC接口宏505

22.4.8 针对COM进程内组件的向导支持507

22.4.7 MFC的COleObjectFactory类507

22.5 Ex22b示例程序:MFC COM进程内组件509

22.4.9 MFC COM客户程序509

22.6 Ex22c示例程序:MFC COM客户514

22.7 包容、聚合和继承515

23.1 为VBA创建C++组件517

第23章 自动化517

23.2.1 Excel:一个比Visual Basic还好的Visual Basic518

23.2 自动化客户和自动化组件518

23.2.2 属性(property)、方法(method)和集合(collection)520

23.3.1 IDispatch接口521

23.3 自动化接口521

23.4 自动化程序设计的选择522

23.4.1 MFC中的IDispatch实现523

23.5 一个MFC自动化组件524

23.6 一个MFC自动化客户程序525

23.7 使用了编译器的#import指令的自动客户程序527

23.8 VARIANT类型528

23.9 COleVariant类530

23.9.1 Invoke的参数和返回值的类型转换532

23.10.1 Ex23a示例程序:一个不带任何用户界面的自动化组件EXE534

23.10 自动化示例534

23.10.2 Ex23b示例程序:自动化组件DLL542

23.10.3 Ex23c示例程序:一个带用户界面的SDI自动化组件EXE551

23.10.4 Ex23d示例程序:自动化客户558

23.10.5 Ex23e示例程序:自动化客户573

23.11.1 注册类型库577

23.11 VBA早绑定577

23.11.3 IDL文件578

23.11.2 组件如何注册自己的类型库578

23.11.4 Excel如何使用类型库579

23.11.6 客户-组件之间的快速连接580

23.11.5 为什么使用早绑定580

24.1.1 IDataObject如何增强了标准剪贴板的支持582

24.1 IDataObiect接口582

第24章 统一数据传输:剪贴板传输以及OLE拖放582

24.2.1 FORMATETC583

24.2 FORMATETC和STGMEDIUM结构583

24.2.2 STGMEDIUM584

24.2.3 IDataObject接口成员函数585

24.3.1 COleDataSource类586

24.3 MFC对UDT的支持586

24.2.4 IDataObject的其他成员函数:通报连接(advisory connection)586

24.3.2 COleDataObject类587

24.3.3 MFC数据对象剪贴板传输588

24.4.1 CRectTracker类成员函数590

24.4 MFC CRectTracker类590

24.4.2 CRectTracker的矩形坐标转换591

24.5.1 CMainFrame类592

24.5 Ex24a示例程序:数据对象剪贴板592

24.5.3 CEx24aView类593

24.5.2 CEx24aDoc类593

24.6.1 传输的源方600

24.6 MFC的拖放600

24.6.3 拖放的动作序列601

24.6.2 传输的目标方601

24.7.2 CEx24bView类602

24.7.1 CEx24bDoc类602

24.7 Ex24b示例程序:OLE拖放602

25.1 再谈COM606

第25章 活动模板库介绍606

25.1.1 核心接口:IVnkown607

25.2 编写COM代码609

25.2.1 使用多继承实现COM类610

25.3 COM基础设施611

25.3.2 ActiveX、MFC和COM612

25.3.1 ActiveX、OLE和COM612

25.4.2 AtlCom.h613

25.4.1 AtlBase.h613

25.4 ATL简介613

25.4.8 StatReg.cpp和StatReg.h614

25.4.7 AtlWin.cpp和AtlWin.h614

25.4.3 AtlConv.cpp和AtlConv.h614

25.4.4 AtlCtl.cpp和AtlCtl.h614

25.4.5 AtllFace.idl和AtllFace.h614

25.4.6 Atllmpl.cpp614

25.5.1 C++模扳615

25.5 客户端ATL程序设计615

25.5.2 Smart指针616

25.5.3 让C++指针具有智能618

25.5.4 使用Smart指针619

25.5.5 Smart指钊和COM620

25.5.7 CComPtrBase类621

25.5.6 ATL的Smart指针621

25.5.8 CComPtr类625

25.5.9 CComQIPtr类627

25.5.10 ATL Smart指针的问题629

25.6 服务器端ATL程序设针630

25.6.1 ATL和COM类631

25.6.2 ATL Project选项632

25.6.3 创建一个经典的ATL COM类633

25.6.4 套间和线程634

25.6.5 连接点和ISupportErrorlnfo636

25.6.7 用经典的ATL来实现飞船类637

25.6.6 自由线程列集器637

25.6.8 基本的ATL体系结构638

25.6.10 ATL的IUnknown:CComObjectRootEx640

25.6.9 管理Vtable膨胀640

25.6.11 ATL和QueryInterface643

25.6.12 让飞船动起来646

25.6.13 在接口中增加方法648

25.6.14 双接口649

25.6.15 ATL和IDispatch650

25.6.16 IMotion和IVisual接口651

25.6.17 多个双接口653

25.7 属性化程序设计654

26.1 什么是ActiveX控件657

第26章 ATL和ActiveX控件657

26.2 用ATL编写ActiveX控件658

26.2.1 创建一个控件659

26.2.2 ATL的控件结构663

26.2.3 开发一个控件668

26.3 创建一个属性化的控件698

26.3.1 属性化ATL中的控件事件701

27.1 为什么使用OLE DB702

第27章 OLE DB模板702

27.2 OLE DB的基本结构703

27.3 OLE DB模板的基本结构704

27.3.1 OLE DB使用者模板的结构705

27.3.2 OLE DB提供者模板的结构707

27.4 创建一个OLE DB使用者712

27.3.3 提供者各部分是怎样协同工作的712

27.4.1 OLE DB使用者代码的用法716

27.5 创建一个OLE DB提供者717

27.5.1 修改提供者代码724

27.5.2 增强OLE DB提供者726

27.6 属性化的OLE DB程序设计727

第28章 Internet基础733

第Ⅴ部分 Internet程序设计733

28.1.2 IP734

28.1.1 网络协议和分层734

28.1 Internet入门734

28.1.3 UDP735

28.1.4 IP地址格式:网络字节顺序736

28.1.5 TCP737

28.1.6 DNS738

28.1.7 HTTP740

28.1.9 Internet和Intranet742

28.1.8 FTP742

28.2.2 网络硬件743

28.2.1 NTFS和FAT文件系统743

28.2 建立一个Intranet743

28.2.4 Intranet主机名和HOSTS文件744

28.2.3 对Windows进行网络配置744

28.3.1 同步和异步Winsock程序设计745

28.3 Winsock程序设计745

28.2.5 测试Intranet:Ping程序745

28.2.6 只有一台计算机的Intranet:TCP/IP环回地址745

28.3.3 阻塞风格的套接字类746

28.3.2 MFC Winsock类746

28.3.4 一个简化的HTTP服务器程序754

28.3.5 一个简化的HTTP客户程序756

28.4.2 Ex28a服务器结构758

28.4.1 Ex28a服务器的限制758

28.4 用CHttpBlockingSocket建立一个Web服务器758

28.4.3 使用Win32 TransmitFile函数759

28.4.4 编译和测试Ex28a760

28.5.2 Ex28a对代理服务器的支持761

28.5.1 Ex28a Winsock客户761

28.5 用CHttpBlockingSocket建立一个Web客户761

28.6.1 WinInet相对于Winsock的优势762

28.6 WinInet762

28.5.3 测试Ex28a Winsock客户762

28.6.2 MFC WinInet类763

28.6.3 Internet会话状态回调764

28.6.4 一个简化的WinInet客户程序766

28.7.3 Ex28a WinInet Client#2:使用OpenURL767

28.7.2 测试Winlnet Client#1767

28.7 用MFC WinInet类建立一个web客户767

28.7.1 Ex28a WinInet Client#1:使用CHttpConnection767

28.7.4 测试WinInet Client#2768

28.8 异步Moniker文件769

28.8.1 Moniker769

28.8.2 MFC CAsyncMonikerFile类769

28.8.3 在程序中使用CAsyncMonikerFile类770

28.8.4 异步moniker文件和WinInet编程771

第29章 动态HTML简介772

29.1 DHTML对象模型773

29.2 Visual C++.NET和DHTML776

29.3 Ex29a示例程序:MFC和DHTML777

29.4 Ex29b示例程序:DHTML和MFC778

29.5 Ex29c示例程序:ATL和DHTML782

29.6 进一步的信息784

第30章 ATL Server785

30.1 IIS785

30.1.1 Internet服务管理器786

30.1.2 IIS的安全性786

30.1.3 IIS目录788

30.1.4 IIS日志记录789

30.1.5 测试IIS789

30.2.1 CGI和ISAPI790

30.2.2 一个简单的ISAPI服务器扩展GET请求790

30.2 ISAPI服务器扩展790

30.2.3 HTML表单:GET和POST791

30.3 ATL Server简介793

30.3.1 ATL和ATL Server793

30.3.2 什么情况下适用ATL Server794

30.3.3 ATL Server的结构794

30.4 Ex30a示例程序:一个ATL Server Web站点800

31.1 Windows组件技术805

第31章 Microsoft.NET805

31.1.1 组件技术的一段历史805

第Ⅵ部分 .NET和远景805

31.1.2 DLL存在的问题806

3l.1.3 COM技术807

31.1.4 COM的优点807

31.1.5 COM的缺点808

31.2 公共语言运行时库809

31.2.1 消除组件的边界809

31.2.2 一切都是类型811

31.2.3 公共语言运行时库的类型812

31.2.4 公共语言规范(CLS)815

31.2.5 程序集(Assembly)816

31.2.6 .NET版本管理818

31.2.7 生存在公共语言运行时库中819

31.2.8 线程和公共语言运行时库821

31.2.9 AppDomain822

31.2.10 互操作性822

第32章 托管C++824

32.1 公共语言运行时库与C++开发人员824

32.2 为什么使用C++825

32.3 托管的C++扩展826

32.4 Visual C++.NET和托管扩展828

32.5 Ex32a示例程序:一个托管C++DLL程序集828

32.5.1 DaysOfTheWeek833

32.5.4 DotCOMVP、SoftwareDeveloper和Bum834

32.5.3 IAManagedInterface和IPerson834

32.5.5 AManagedDelegate834

32.5.2 AManagedValueStruct和AManagedGcStruct834

32.5.6 AManagedClass835

32.6 程序集的用法835

32.7 Ex32b示例程序:一个托管的客户可执行程序836

32.8 加入托管扩展支持839

33.1 Windows Forms841

33.1.1 Windows Forms的本质841

第33章 用托管C++进行Windows Forms编程841

33.1.2 Windows Forms结构842

33.1.3 一个Windows Forms向导843

33.1.4 Form类846

33.1.5 处理事件847

33.1.6 在窗体中绘制847

33.2 Windows Forms的不足866

第34章 用托管C++进行ASP.NET编程867

34.1 Internet作为开发平台867

34.2 ASP.NET的演变868

34.4 ASP.NET的编译模型870

34.5 Page类870

34.3 IIS的作用870

34.5.1 Code-Behind技术872

34.5.2 Web Forms875

34.5.3 ActiveX怎么了879

34.6.1 HtppContext对象881

34.6.2 HttpApplication对象881

34.6 HTTP传递路径881

34.6.3 HttpModule对象882

34.6.4 HTTPHandler对象884

34.7 Web服务887

34.7.1 使用托管C++的Web服务888

34.7.2 WSDL和ASP.NET890

34.7.3 调用Web方法890

第35章 用托管C++进行ADO.NET编程892

35.1 托管的提供者892

35.1.1 NET托管提供者893

35.2 使用托管提供者894

35.2.1 连接到数据库894

35.2.2 发出命令896

35.2.3 通过命令对象使用存储过程897

35.2.4 使用数据阅读器对象获取数据898

35.2.5 错误处理899

35.3 ADO.NET数据集900

35.3.1 使用数据适配器填充数据集901

35.3.2 创建内存中的数据集902

35.3.3 从数据集中导出XML904

附录A MFC库中的消息映射函数906

附录8 MFC库运行时类识别和动态对象创建915

热门推荐