图书介绍

Visual C++技术内幕 第4版 修订版PDF|Epub|txt|kindle电子书版本网盘下载

Visual C++技术内幕 第4版 修订版
  • (美)小克鲁格林斯基著 著
  • 出版社: 北京:清华大学出版社
  • ISBN:9787302197218
  • 出版时间:2009
  • 标注页数:814页
  • 文件大小:157MB
  • 文件页数:853页
  • 主题词:C语言-程序设计

PDF下载


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

下载说明

Visual C++技术内幕 第4版 修订版PDF格式电子书版下载

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

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

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

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

图书目录

前言29

第一部分 Windows、Visual C++和应用程序框架基础第一章 Microsoft Windows和Visual C++3

1.1 Windows的编程模式3

1.1.1 消息处理3

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

1.1.3 基于资源的程序设计4

1.1.4 内存管理4

1.1.5 动态连接库(DLL)5

1.1.6 Win32应用程序编程接口5

1.2 Visual C++的组成5

1.2.1 Microsoft Developer Studio 97和创建过程6

1.2.2 资源编辑器——Workspace ResourceView8

1.2.3 C/C++编译器8

1.2.4 资源编译器9

1.2.5 连接器9

1.2.6 调试器9

1.2.7 AppWizard9

1.2.8 ClassWizard10

1.2.9 源程序浏览器10

1.2.10 联机帮助11

1.2.11 Windows诊断工具12

1.2.12 源代码控制12

1.2.13 Gallery12

1.2.14 Microsoft基本类库4.21版13

1.2.15 Microsoft ActiveX模板库13

第二章 Microsoft基本类库应用程序框架14

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

2.1.1 学习曲线17

2.2 什么是应用程序框架18

2.2.1 应用程序框架和MFC库18

2.2.2 应用程序框架示例18

2.3 MFC库消息映射21

2.3.1 文档和视图22

第二部分 MFC库中的视图类27

第三章 从“Hello,world!”着手学习AppWizard27

3.1 什么是视图27

3.2 单文档界面(SDI)和多文档界面(MDI)28

3.3 “不做任何事情”的应用程序28

3.4 CEx03aView视图类32

3.5 在视窗内绘图——Windows的图形设备接口32

3.5.1 OnDraw成员函数33

3.5.2 Windows设备环境33

3.5.3 往EX03A程序中加入绘制代码33

3.6 资源编辑器简介35

3.6.1 ex03a.rc的内容35

3.6.2 运行对话框资源编辑器36

3.7 Win32 Debug目标和Win32 Release目标37

3.8 允许诊断宏37

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

3.10 两种方法运行程序39

第四章 基本事件处理、映射模式和滚动视图40

4.1 获取用户输入——消息映射函数40

4.1.1 消息映射40

4.1.2 保存视图的状态-类数据成员41

4.1.3 初始化视图类数据成员42

4.1.4 使矩形区域无效42

4.1.5 Windows的客户区域42

4.1.6 CRect,CPoint和CSize类的运算43

4.1.7 一个点是否在矩形内43

4.1.8 CRect的LPRECT操作符43

4.1.9 一个点是否在椭圆内44

4.2 EX04A示例程序44

4.3 对EX04A使用ClassWizard48

4.3.1 同时使用AppWizard和ClassWizard49

4.4 映射模式51

4.4.1 MM_TEXT映射模式52

4.4.2 “固定比例”映射模式53

4.4.3 “可变比例”映射模式53

4.4.4 坐标变换54

4.4.5 EX04B示例程序——转换到MM_HIMETRIC映射模式56

4.5 滚动视窗57

4.5.1 窗口比人们所见到的要大57

4.5.2 滚动条58

4.5.3 滚动方式的选择58

4.5.4 OnInitialUpdate函数58

4.5.5 接收键盘输入58

4.5.6 EX04C滚动示例程序59

4.6 其他Windows消息62

4.6.1 WM_CREATE消息62

4.6.2 WM_CLOSE消息63

4.6.3 WM_QUERYENDSESSION消息63

4.6.4 WM_DESTROY消息63

4.6.5 WM_NCDESTROY消息63

第五章 图形设备接口(GDI)、颜色及字体64

5.1 设备环境类64

5.1.1 显示设备环境类CClientDC和CWindowDC65

5.1.2 构造和析构CDC对象65

5.1.3 设备环境的状态66

5.1.4 CPaint DC类66

5.2 GDI对象67

5.2.1 GDI对象的构造与析构67

5.2.2 跟踪GDI对象67

5.2.3 库存的GDI对象68

5.2.4 GDI选择的有效期69

5.3 Windows的颜色映射70

5.3.1 标准视频图形阵列(VGA)显示卡70

5.3.2 256色显示卡71

5.3.3 16位颜色显示卡71

5.3.4 24位颜色显示卡72

5.4 字体72

5.4.1 字体是GDI对象72

5.4.2 选择字体72

5.4.3 打印字体73

5.4.4 显示字体73

5.4.5 显示器的逻辑英寸和物理英寸73

5.4.6 计算字符高度74

5.5 EX05A示例程序75

5.5.1 EX05A程序的组成元素78

5.6 EX05B程序79

5.6.1 EX05B程序的组成元素82

5.7 EX05C示例程序——再次使用CScrollView82

5.7.1 EX05C程序的组成元素86

5.7.2 CScrollView的SetScaleToFitSize模式87

5.7.3 在滚动视图中使用逻辑twips映射模式88

第六章 模式对话框和Windows通用控件89

6.1 模式和无模式对话框89

6.2 资源和控件90

6.3 模式对话框的编程90

6.4 包罗万象的对话框——EX06A示例程序91

6.4.1 创建对话框资源92

6.4.2 ClassWizard和对话框类99

6.4.3 将对话框与视图相连接102

6.4.4 深入理解EX06A应用程序104

6.5 对话框程序的改进105

6.5.1 获得OnOK退出控制106

6.5.2 OnCancel处理107

6.5.3 和滚动条控件挂上钩107

6.6 控件的标识:CWnd指针和控件ID109

6.7 设置对话框的背景色和其中控件的颜色109

6.8 在对话框窗口内绘图111

6.9 在运行时加入对话框控件111

6.10 利用其他的控件特性112

6.11 Windows通用控件112

6.11.1 进度指示器控件113

6.11.2 滑杆条(Trackbar)控件113

6.11.3 微调按钮控件114

6.11.4 列表控件114

6.11.5 树状控件114

6.11.6 WM_NOTIFY消息115

6.12 EX06B示例程序115

6.13 其他Windows通用控件125

第七章 无模式对话框和Windows通用对话框类126

7.1 无模式对话框126

7.1.1 创建无模式对话框126

7.1.2 用户定义的消息127

7.1.3 对话框的归属127

7.1.4 无模式对话框的例子——EX07A127

7.2 CFormView类——另外一种可供选择的无模式对话框134

7.3 Windows通用对话框134

7.3.1 直接使用CFileDialog类134

7.3.2 从通用对话框类进行派生135

7.3.3 嵌套对话框135

7.3.4 使用CFileDialog的一个例子——EX07B135

7.3.5 CFileDialog的其他可定制特性141

第八章 使用ActiveX控件142

8.1 ActiveX控件和普通的Windows控件142

8.1.1 普通的Windows控件——参考体系142

8.1.2 ActiveX控件与普通控件的相同点143

8.1.3 ActiveX控件与普通控件的不同点——属性和方法143

8.2 安装ActiveX控件144

8.3 日历控件145

8.4 ActiveX控件包容器编程147

8.4.1 属性访问147

8.4.2 ClassWizard为ActiveX控件产生的C++类148

8.4.3 AppWizard对ActiveX控件的支持150

8.4.4 ClassWizard和包容器对话框150

8.4.5 对话框类数据成员和控件类的用法150

8.4.6 映射ActiveX控件事件151

8.4.7 把ActiveX控件锁定在内存里152

8.5 EX08A示例程序——ActiveX控件对话框包容器152

8.6 ActiveX控件在HTML文件中的使用160

8.7 在运行时创建ActiveX控件160

8.8 EX08B示例程序——Web浏览器ActiveX控件161

8.9 EX08C示例程序——一个完整的双窗口浏览器165

8.10 图形属性165

8.11 约束属性——改变通知166

8.12 其他的ActiveX控件167

第九章 Win32内存管理168

9.1 进程和内存空间168

9.1.1 Windows 95进程地址空间170

9.1.2 Windows NT进程地址空间170

9.2 虚拟内存如何工作170

9.3 VirtualAlloc函数——占用和保留内存173

9.4 Windows堆和GlobalAlloc函数族173

9.5 小内存堆,C++的new和delete操作符,_heapmin174

9.6 内存映射文件175

9.7 访问资源176

9.8 管理动态内存的一些提示177

9.9 常量数据的优化存储177

第十章 位图179

10.1 GDI位图和与设备无关的位图179

10.2 彩色位图和单色位图180

10.3 使用GDI位图180

10.3.1 从资源中装入GDI位图180

10.3.2 显示映射模式的作用181

10.3.3 对位进行伸缩处理182

10.3.4 EX10A示例程序182

10.4 利用位图改进屏幕显示185

10.4.1 EX10B示例程序185

10.4.2 Windows动画189

10.5 DIB和CDib类190

10.5.1 关于调色板编程的术语190

10.5.2 DIB、象素和颜色表191

10.5.3 BMP文件中DIB的结构192

10.5.4 DIB访问函数193

10.5.5 CDib类193

10.5.6 DIB显示性能198

10.5.7 EX10C示例程序199

10.6 进一步使用DIB202

10.6.1 LoadImage函数202

10.6.2 DrawDibDraw函数203

10.7 在按钮上设置位图204

10.7.1 EX10D示例程序205

10.7.2 进一步使用位图按钮208

第十一章 Windows消息处理和多线程编程209

11.1 Windows消息处理209

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

11.1.2 交出控制210

11.1.3 计时器210

11.1.4 EX11A示例程序211

11.2 空状态处理214

11.3 多线程编程215

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

11.3.2 主线程如何和辅助线程通话216

11.3.3 辅助线程如何和主线程通话217

11.3.4 EX11B示例程序217

11.3.5 用事件使线程同步219

11.3.6 EX11C示例程序219

11.3.7 线程阻塞221

11.3.8 排斥区222

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

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

第三部分 文档-视图结构227

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

12.1 主框架窗口和文档类227

12.2 Windows的菜单228

12.3 键盘加速键229

12.4 命令处理229

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

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

12.4.3 对话框发送的命令231

12.5 应用程序框架的内含菜单项232

12.6 菜单项的允许/禁用232

12.7 MFC文本编辑选择233

12.7.1 CEditView类233

12.7.2 CRichEditView类233

12.7.3 CRichEditCtrl类233

12.8 EX12A示例程序234

12.9 属性表239

12.9.1 创建属性表239

12.9.2 属性表数据交换239

12.10 改进EX12A示例程序240

12.11 Apply按钮的处理过程254

12.12 CMenu类254

12.13 创建浮动的弹出式菜单255

12.14 扩展命令处理256

第十三章 工具栏和状态栏258

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

13.2 工具栏259

13.2.1 工具栏位图259

13.2.2 按钮的状态259

13.2.3 工具栏和命令消息260

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

13.3 工具提示261

13.4 寻找主框架窗口261

13.5 EX13A工具栏示例程序262

13.6 状态栏267

13.6.1 状态栏的定义267

13.6.2 信息行268

13.6.3 状态指示器268

13.6.4 获得对状态栏的控制268

13.7 EX13B状态栏示例程序269

第十四章 可重用框架窗口基类275

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

14.2 CPersistentFrame类276

14.3 CFrameWnd类和ActivateFrame成员函数276

14.4 PreCreateWindow成员函数277

14.5 Windows注册表278

14.6 使用CString类280

14.7 最大化窗口的位置281

14.8 控制栏状态和注册表282

14.9 静态数据成员282

14.10 默认窗口矩形282

14.11 EX14A示例程序283

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

第十五章 文档与视图的分离291

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

15.1.1 CView::GetDocument函数291

15.1.2 CDocumeat::Update AllViews函数292

15.1.3 CView::OnUpdate函数293

15.1.4 CView::OnInitialUpdate函数293

15.1.5 CDocument::OnNewDocument函数293

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

15.3 CFormView类294

15.4 CObject类295

15.5 诊断信息转储296

15.5.1 TRACE宏296

15.5.2 afxDump对象296

15.5.3 信息转储环境及CObject类297

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

15.6 EX15A示例程序300

15.7 更加高级的文档-视图之间的相互作用307

15.8 CDocument::DeleteContents函数308

15.9 CObList集合类308

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

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

15.9.3 CTypedPtrList模板集合类311

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

15.10 EX15B示例程序313

15.10.1 资源要求314

15.10.2 代码要求315

15.10.3 CStudentDoc316

15.10.4 CStudentView320

15.10.5 测试EX15B应用程序330

15.11 留给读者的两个练习330

第十六章 读和写文档——SDI应用程序331

16.1 什么是序列化331

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

16.1.2 使类可序列化332

16.1.3 编写Serialize函数333

16.1.4 从归档中载入——内嵌对象和指针334

16.1.5 使集合序列化335

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

16.2 SDI应用程序336

16.2.1 Windows应用程序对象336

16.2.2 文档模板类337

16.2.3 文档模板资源339

16.2.4 SDI文档的多视图339

16.2.5 创建空文档——CWinApp::OnFileNew函数339

16.2.6 文档类的OnNewDocument函数340

16.2.7 连接File Open与序列化代码——OnFileOpen函数340

16.2.8 文档类的DeleteContents函数341

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

16.2.10 文档的“脏”标志342

16.3 EX16A——序列化SDI示例程序342

16.3.1 CStudent343

16.3.2 CEx16aApp343

16.3.3 CFrameWnd348

16.3.4 CStudentDoc352

16.3.5 CStudentView353

16.3.6 测试EX16A应用程序353

16.4 从Explorer启动及拖放354

16.4.1 程序注册354

16.4.2 在文档上双击鼠标355

16.4.3 允许拖放355

16.4.4 程序启动参数356

16.4.5 试验用Explorer启动程序及拖放功能356

第十七章 读和写文档——MDI应用程序357

17.1 MDI应用程序357

17.1.1 一个典型的具有MFC库风格的MDI应用程序357

17.1.2 MDI应用程序对象360

17.1.3 MDI文档模板类360

17.1.4 MDI框架窗口和MDI子窗口360

17.1.5 主框架和文档模板资源361

17.1.6 创建空文档——CWinApp::OnFileNew函数362

17.1.7 为现有文档创建新的视图362

17.1.8 载入和存储文档363

17.1.9 多文档模板363

17.1.10 Explorer启动及拖放364

17.2 EX17A示例程序364

17.2.1 CEx17aApp365

17.2.2 CMainFrame370

17.2.3 CChildFrame373

17.2.4 测试EX17A应用程序376

第十八章 打印和打印预览377

18.1 Windows的打印377

18.1.1 标准打印对话框377

18.1.2 交互选择打印页码377

18.1.3 显示页和打印页379

18.2 打印预览379

18.3 有关打印机的程序设计380

18.3.1 打印机设备环境和CView::OnDraw函数380

18.3.2 CView::OnPrint函数380

18.3.3 准备设备环境——CView::OnPrepareDC函数380

18.3.4 打印任务的开始和结束381

18.4 EX18A示例程序——一个所见即所得的打印程序381

18.5 读取打印机矩形框388

18.6 再看模板集合类——CArray类388

18.7 EX18B示例程序——多页打印程序389

第十九章 切分窗口和多视图395

19.1 切分窗口395

19.2 多视图选择395

19.3 动态和静态切分窗口396

19.4 EX19A示例程序——具有单个视图类的SDI动态切分396

19.4.1 与切分有关的资源397

19.4.2 CMainFrame397

19.4.3 测试EX19A应用程序398

19.5 EX19B示例程序——双视图类SDI静态切分399

19.5.1 CHexView399

19.5.2 CMainFrame400

19.5.3 测试EX19B应用程序400

19.6 EX19C示例程序——切换没有切分的视图类401

19.6.1 资源要求401

19.6.2 CMainFrame401

19.6.3 测试EX19C应用程序403

19.7 EX19D示例程序——多视图类MDI应用程序403

19.7.1 资源要求404

19.7.2 CEx19dApp404

19.7.3 CMainFrame405

19.7.4 测试EX19D应用程序406

第二十章 上下文相关帮助407

20.1 Windows的WinHelp程序407

20.1.1 复文本格式(RTF)407

20.1.2 编写简单的帮助文件408

20.1.3 改进的Table Of Contents412

20.2 应用程序框架与WinHelp413

20.2.1 调用WinHelp414

20.2.2 使用搜索字符串414

20.2.3 从应用程序的菜单调用WinHHelp415

20.2.4 帮助上下文别名415

20.2.5 确定帮助上下文415

20.2.6 F1帮助416

20.2.7 Shift-F1帮助416

20.2.8 消息框帮助——AfxMessageBox函数417

20.2.9 一般的帮助417

20.3 帮助示例——不需要任何编程418

20.4 MAKEHELP处理420

20.5 帮助命令处理420

20.5.1 F1处理过程421

20.5.2 Shift-F1处理过程421

20.6 帮助命令处理示例程序——EX20B422

20.6.1 头文件要求422

20.6.2 CStringView422

20.6.3 CHexView423

20.6.4 资源要求424

20.6.5 帮助文件要求424

20.6.6 测试EX20B应用程序425

第二十一章 动态连接库426

21.1 基本DLL理论426

21.1.1 导入如何与导出相匹配427

21.1.2 隐式连接和显式连接427

21.1.3 符号连接和序号连接428

21.1.4 DLL入口点——DllMain429

21.1.5 实例句柄——装载资源429

21.1.6 客户程序如何找到DLL430

21.1.7 调试DLL430

21.2 MFC DLL——扩展的和正规的430

21.2.1 共享的MFC DLL和Windows DLL431

21.2.2 MFC扩展DLL——导出类432

21.2.3 MFC扩展DLL资源搜索的顺序432

21.2.4 EX21A示例程序——MFC扩展DLL433

21.2.5 EX21B示例程序——DLL测试客户程序435

21.2.6 MFC正规DLL——CWinApp派生类436

21.2.7 使用AFX_MANAGE_STATE宏436

21.2.8 MFC正规DLL资源搜索顺序436

21.2.9 EX21C示例程序——MFC正规DLL437

21.2.10 修改EX21B示例程序——加入代码以测试ex21c.dll438

21.3 自定义控件DLL440

21.3.1 什么是自定义控件440

21.3.2 自定义控件的窗口类440

21.3.3 MFC库和WndProc函数441

21.3.4 自定义控件通知消息441

21.3.5 发送给控件的用户定义消息442

21.3.6 EX21D示例程序——自定义控件442

21.3.7 再修改EX21B示例程序——加入代码以测试ex21d.dll448

第二十二章 不带文档或视图类的MFC程序452

22.1 EX22A示例程序——一个基于对话框的应用程序452

22.1.1 应用程序类InitInstance函数454

22.1.2 对话框类和程序图标455

22.2 EX22B示例——一个SDI应用程序456

22.2.1 应用程序类InitInstance函数457

22.2.2 CMainFrame类458

22.3 EX22C示例程序——一个MDI应用程序458

22.3.1 应用类程序InitInstance函数459

22.3.2 CMainFrame类460

22.3.3 CChildFrame类462

22.3.4 资源要求462

22.4 定制(Custom)AppWizard463

第四部分 ActiveX:组件对象模型、自动化和OLE第二十三章 组件对象模型467

23.1 ActiveX技术背景467

23.2 组件对象模型(COM)468

23.2.1 COM所解决的问题468

23.2.2 COM的本质468

23.2.3 什么是COM接口469

23.2.4 IUnknown接口和QueryInterface成员函数473

23.2.5 引用计数:AddRef和Release函数475

23.2.6 类厂(class factory)476

23.2.7 CCmdTarget类477

23.2.8 EX23A示例程序——一个模拟的COM478

23.3 MFC库中实际的COM486

23.3.1 COM的CoGetClassObject函数486

23.3.2 COM和Windows注册表487

23.3.3 运行时对象注册488

23.3.4 COM客户程序如何调用进程内组件489

23.3.5 COM客户程序如何调用进程外组件491

23.3.6 MFC接口宏493

23.3.7 MFC的COleObjectFactory类494

23.3.8 AppWizard/ClassWizard对COM进程内组件的支持494

23.3.9 MFC COM客户程序496

23.3.10 EX23B示例程序——MFC COM进程内组件496

23.3.11 EX23C示例程序——MFC COM客户501

23.4 包容、集合和继承502

第二十四章 自动化504

24.1 C++与Visual Basic for Applications(VBA)之间的连接504

24.2 自动化客户和自动化组件505

24.3 Microsoft Excel——一种比Visual Basic还好的Visual Basic505

24.4 属性(property)、方法(method)和集合(collection)507

24.5 自动化所解决的问题508

24.6 IDispatch接口508

24.7 自动化程序设计的选择509

24.8 MFC IDispatch的实现510

24.9 一个MFC自动化组件511

24.10 一个MFC自动化客户程序512

24.11 使用编译器#import指令的自动化客户程序514

24.12 VARIANT类型515

24.13 COleVariant类517

24.14 Invoke的参数和返回值的类型转换519

24.15 自动化示例521

24.15.1 EX24A自动化组件EXE示例——不带任何用户界面521

24.15.2 EX24B自动化组件DLL示例程序529

24.15.3 EX24C SDI自动化组件EXE示例——带用户界面538

24.15.4 EX24D自动化客户示例程序544

24.15.5 EX24E自动化客户示例程序559

24.16 VBA早绑定562

24.16.1 注册类型库563

24.16.2 组件如何注册自己的类型库564

24.16.3 ODL文件564

24.16.4 Excel如何使用类型库565

24.16.5 为什么使用早绑定567

24.16.6 客户-组件的快速连接567

第二十五章 统一数据传输——剪贴板传输以及OLE拖放568

25.1 IDataObject接口568

25.2 IDataObject如何增强标准剪贴板的支持568

25.3 FORMATETC和STGMEDIUM结构569

25.3.1 FORMATETC569

25.3.2 STGMEDIUM570

25.3.3 IDataObject接口成员函数570

25.4 MFC统一数据传输支持571

25.4.1 COleDataSource类572

25.4.2 COleDataObject类573

25.4.3 MFC数据对象剪贴板传输574

25.5 MFC CRectTracker类576

25.5.1 CRectTracker类成员函数576

25.5.2 CRectTracker类矩形坐标转换577

25.6 EX25A示例程序——数据对象剪贴板577

25.6.1 CMainFrame类578

25.6.2 CEx25aDoc类578

25.6.3 CEx25aView类578

25.7 MFC拖放587

25.7.1 传输的源方587

25.7.2 传输的目标方587

25.7.3 拖放的顺序588

25.8 EX25B示例程序——OLE拖放589

25.8.1 CEx25bDoc类589

25.8.2 CEx25bView类589

25.9 Windows应用程序和拖放——Dobjview592

第二十六章 结构化存储593

26.1 复合文件593

26.2 存储(Storage)和IStorage接口594

26.2.1 获取IStorage指针596

26.2.2 释放STATSTG内存596

26.2.3 对存储对象的元素进行枚举596

26.2.4 进程间共享存储597

26.3 流(Stream)和IStream接口597

26.3.1 IStream接口成员函数597

26.3.2 IStream编程598

26.4 ILockBytes接口599

26.5 EX26A示例程序——结构化存储599

26.5.1 菜单600

26.5.2 CEx26aView类600

26.5.3 辅助线程600

26.6 结构化存储和持久COM对象604

26.6.1 IPersistStorage接口605

26.6.2 IPersistStream接口606

26.6.3 IPersistStream编程606

26.7 EX26B示例程序——一个持久DLL组件607

26.8 EX26C示例程序——一个持久存储客户程序613

26.9 复合文件碎片的处理617

26.10 复合文件的其他优点618

第二十七章 OLE嵌入组件和包容器619

27.1 嵌入和实地激活(可视编辑)619

27.2 最小服务器和完备服务器(组件)——链接620

27.3 可视编辑前景暗淡的一面620

27.4 Windows图元文件和内嵌对象621

27.5 组件程序的MFC OLE结构622

27.6 EX27A示例程序——MFC实地激活最小服务器623

27.6.1 MDI嵌入组件627

27.6.2 实地组件调整大小的思路628

27.7 包容器-组件相互作用628

27.7.1 使用组件的IOleObject接口629

27.7.2 装入和保存组件自身的数据——组件文档630

27.7.3 剪贴板数据传输630

27.7.4 获得组件的图元文件630

27.7.5 进程内控制器的角色631

27.8 组件状态632

27.8.1 包容器接口632

27.8.2 通报连接633

27.8.3 剪贴板图元文件634

27.9 接口简要说明634

27.9.1 IOleObject接口634

27.9.2 IViewObject2接口635

27.9.3 IOleClientSite接口635

27.9.4 IAdviseSink接口636

27.10 OLE辅助函数636

27.11 OLE嵌入包容器应用程序637

27.11.1 MFC对OLE包容器的支持637

27.11.2 一些包容器限制638

27.11.3 包容器特性638

27.12 EX27B示例程序——嵌入包容器638

27.12.1 CEx27bView类639

27.12.2 CEx27bDoc类652

27.13 EX27C示例程序——OLE嵌入组件660

27.13.1 CEx27cView类661

27.13.2 CEx27cDoc类661

第五部分 数据库管理671

第二十八章 Microsoft ODBC数据库管理671

28.1 数据库管理的优势671

28.2 结构化查询语言672

28.3 ODBC标准673

28.3.1 ODBC结构673

28.3.2 ODBC SDK编程674

28.4 MFC ODBC类——CRecordset和CDatabase675

28.4.1 记录集中关于行的计数677

28.4.2 处理ODBC异常677

28.5 学生注册数据库678

28.6 EX28A记录集示例程序678

28.7 EX28A示例程序中的元素684

28.7.1 记录集类与应用程序之间的连接684

28.7.2 CEx28aView类的OnInitialUpdate成员函数684

28.7.3 CEx28aView类的OnDraw成员函数685

28.8 筛选器和排序字符串686

28.9 连接两个数据库表686

28.10 MFC CRecordView类687

28.11 EX28B记录查看示例程序688

28.12 多记录集693

28.12.1 EX28C多记录集示例程序694

28.12.2 参数化查询695

28.13 ODBC多线程696

28.14 大批行数据获取(bulk row fetch)696

28.15 使用不带绑定的记录集696

第二十九章 Microsoft Data Access Objects数据库管理699

29.1 DAO、COM和Microsoft Jet数据库引擎699

29.2 DAO和VBA699

29.3 DAO和MFC700

29.4 利用DAO可以打开什么样的数据库701

29.5 按ODBC模式使用DAO——快照和动态集701

29.6 DAO表类型记录集702

29.7 DAO QueryDef和TableDef703

29.8 DAO多线程情况703

29.9 在滚动窗口中显示数据库的行703

29.9.1 滚动显示方法703

29.9.2 一个行-视图类704

29.9.3 基类和派生类的分工处理705

29.9.4 CRowView的纯虚成员函数706

29.9.5 其他的CRowView函数706

29.10 动态记录集的编程707

29.11 EX29A示例程序708

29.11.1 CEx29aApp709

29.11.2 CMainFrame和CChildFrame709

29.11.3 CEx29aDoc709

29.11.4 CEx29aView716

29.11.5 CTableSelect719

29.11.6 CIsamSelect720

29.12 EX29A资源文件721

29.13 运行EX29A程序722

第六部分 Internet程序设计725

第三十章 TCP/IP、Winsock和WinInet725

30.1 既针对COM也可以不需要COM725

30.2 Internet基础725

30.2.1 网络协议——层726

30.2.2 Internet协议726

30.2.3 用户报文协议727

30.2.4 IP地址格式——网络字节顺序728

30.2.5 传输控制协议729

30.2.6 域名系统(Domain Name System)730

30.2.7 HTTP基础732

30.2.8 FTP基础734

30.2.9 Internet和Intranet734

30.3 建立自己的价值$99的Intranet734

30.3.1 NT文件系统和文件分配表735

30.3.2 网络硬件735

30.3.3 对Windows进行网络配置735

30.3.4 Intranet的主机名——HOSTS文件736

30.3.5 测试Intranet——Ping程序736

30.3.6 只有一台计算机的Intranet——TCP/IP环形地址736

30.4 Winsock737

30.4.1 同步和异步Winsock编程737

30.4.2 MFC Winsock类737

30.4.3 Blocking Socket类737

30.4.4 一个简化了的HTTP服务器程序745

30.4.5 一个简化了的HTTP客户端程序747

30.5 用CHttpBlockingSocket创建一个Web服务器程序749

30.5.1 EX30A服务器限制749

30.5.2 EX30A服务器结构749

30.5.3 使用Win32 TransmitFile函数750

30.5.4 编译和测试EX30A751

30.5.5 使用Telnet752

30.6 用CHttpBlockingSocket创建一个Web客户端程序752

30.6.1 EX30A Winsock客户752

30.6.2 EX30A对代理服务器的支持753

30.6.3 测试EX30A Winsock客户753

30.7 WinInet753

30.7.1 WinInet相对于Winsock的优势754

30.7.2 MFC WinInet类754

30.7.3 Internet会话状态回调756

30.7.4 一个简化了的WinInet客户程序757

30.8 用MFC WinInet类创建一个Web客户758

30.8.1 EX30A WinInet Client #1——使用CHttpConnection758

30.8.2 测试WinInet Client #1758

30.8.3 EX30A WinInet Client #2——使用OpenURL759

30.8.4 测试WinInet Client #2760

30.9 异步Moniker文件760

30.9.1 Moniker760

30.9.2 MFC CAsyncMonikerFile类760

30.9.3 在程序中使用CAsyncMonikerFile类760

30.9.4 异步moniker文件和WinInet编程761

第三十一章 Microsoft Internet Information Server编程763

31.1 IIS的替代产品763

31.2 Microsoft IIS763

31.2.1 安装和控制IIS763

31.2.2 运行Internet Service Manager764

31.2.3 IIS的安全性764

31.2.4 IIS目录765

31.2.5 IIS日志记录766

31.2.6 测试IIS766

31.3 ISAPI服务器扩展767

31.3.1 通用网关接口和ISAPI767

31.3.2 一个简单的ISAPI服务器扩展GET请求767

31.3.3 HTML窗体——GET和POST768

31.3.4 编写ISAPI服务器扩展DLL769

31.3.5 MFC ISAPI服务器扩展类770

31.4 一个实际的ISAPI服务器扩展——ex31a.dll771

31.4.1 第一步——获取定单772

31.4.2 第二步——处理确认窗体775

31.4.3 编译并测试ex31a.dll776

31.4.4 调试EX31A DLL776

31.5 ISAPI数据库访问777

31.6 使用HTTP Cookie来连接事务778

31.6.1 Cookie如何工作778

31.6.2 ISAPI服务器扩展如何处理Cookie779

31.6.3 使用Cookie的一些问题779

31.7 WWW鉴定779

31.7.1 基本鉴定779

31.7.2 Windows NT问讯/应答鉴定780

31.7.3 安全套接字层(SSL)780

31.8 ISAPI过滤器781

31.8.1 编写ISAPI过滤器DLL781

31.8.2 MFC ISAPI过滤器类781

31.9 ISAPI过滤器示例——ex31b.dll、ex31c.exe782

31.9.1 选择通知783

31.9.2 把事务数据发送到显示程序783

31.9.3 显示程序785

31.9.4 编译并测试EX31B ISAPI过滤器785

第三十二章 ActiveX文档服务器和Internet787

32.1 ActiveX文档理论787

32.1.1 ActiveX文档服务器和OLE嵌入服务器787

32.1.2 从IE3中运行ActiveX文档服务器788

32.1.3 ActiveX文档服务器和ActiveX控件789

32.1.4 ActiveX文档服务器和包容器的OLE接口790

32.1.5 MFC对ActiveX文档服务器的支持790

32.2 ActiveX文档服务器示例程序EX32A791

32.2.1 EX32A第一阶段——简单的服务器792

32.2.2 调试ActiveX文档服务器792

32.2.3 EX32A第二阶段——加入WinInet调用792

32.3 ActiveX文档服务器示例程序EX32B794

32.3.1 在程序控制下产生POST请求799

32.3.2 EX32B视图类800

32.3.3 编译并测试EX32B802

32.3.4 ActiveX文档服务器和VB Script802

32.4 进一步使用ActiveX文档服务器803

附录A Microsoft基本类(MFC)库中的消息映射函数804

附录B MFC库运行时类识型和动态对象创建810

热门推荐