《Visual C++ 技术内幕 第2版》PDF下载

  • 购买积分:17 如何计算积分?
  • 作  者:(美)David J.Kruglinski著;王国印译
  • 出 版 社:北京:清华大学出版社
  • 出版年份:1996
  • ISBN:7302020159
  • 页数:576 页
图书介绍:

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

第一章 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.6 Windows NT 5

1.2 Visual C++的组成 5

1.1.5 动态连接库(DLLs) 5

1.2.1 Visual工作平台和创建过程 6

1.2.2 App Studio资源编辑器 8

1.2.3 C/C++编译器 8

1.2.4 连接器 8

1.2.5 资源编译器 9

1.2.6 调试器 9

1.2.7 AppWizard 9

1.2.8 ClassWizard 10

1.2.10 联机帮助 10

1.2.9 源程序浏览器 10

1.2.12 Microsoft基本类库2.5版 11

1.2.11 Windows诊断工具 11

第二章 Microsoft基本类库应用框架 12

2.1 为什么要使用应用框架 12

2.2.1 应用框架和MFC库 14

2.1.1 学习曲线 14

2.2 什么是应用框架 14

2.2.2 应用框架例子 15

2.3 MFC库消息映射 17

2.3.1 文档和视 18

目录 18

前言 18

3.1 什么是视 23

第三章 从“Hello,world!”入手来学习AppWizard 23

第二部分 MFC库中的视类 23

3.3 “不做任何事情”的应用 24

3.2 单文档接口(SDI)和多文档接口(MDI) 24

3.5.1 OnDraw成员函数 27

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

3.4 CEx03aView视类 27

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

3.5.2 Windows设备环境 28

3.6.1 EX03A.RC的内容 29

3.6 提前了解一下App Studio,同时介绍一下资源 29

3.6.2 运行App Studio 30

3.7 Windows的Debug内核和DBWIN 32

3.9 加速创建过程 34

3.8.1 允许诊断宏 34

3.8 需要使用调试器吗 34

3.10 创建新的MAK文件 39

4.1.1 消息映射 41

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

第四章 基本事件控制——使用ClassWizard 41

4.1.3 初始化视类数据成员 42

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

4.2 EX04A例程序 43

4.1.5 Windows的用户区域 43

4.1.4 使矩形区域无效 43

4.3.1 同时使用AppWizard和ClassWizard 46

4.3 对EX04A使用ClassWizard 46

4.4 EX04B——通过鼠标来拖动圆 49

4.4.1 EX04B程序的构成元素 51

4.5 滚动视窗 53

4.5.4 EX04C滚动例程序 54

4.5.3 滚动方式的选择 54

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

4.5.2 滚动条 54

4.5.5 EX04C程序中的元素 57

4.6.2 WM_CLOSE消息 58

4.6.1 WM_CREATE消息 58

4.6 其它Windows消息 58

4.6.5 WM_NCDESTROY消息 59

4.6.4 WM_DESTROY消息 59

4.6.3 WM_QUERYENDSESSION消息 59

5.1.1 显示设备环境类CClientDC和CWindowDC 60

5.1 设备环境类 60

第五章 图形设备接口(GDI) 60

5.1.2 构造和析构CDC对象 61

5.2 GDI对象 62

5.1.4 CPaintDC类 62

5.1.3 设备环境的状态 62

5.2.2 跟踪GDI对象 63

5.2.1 GDI对象的构造与析构 63

5.2.4 GDI选择的有效期 64

5.2.3 库存的GDI对象 64

5.2.5 持久的用于显示的设备环境——登记窗口类 65

5.3.1 标准视频图形矩阵(VGA)显示卡 66

5.3 Windows的颜色映射 66

5.3.2 256色显示卡 67

5.4.1 MM_TEXT映射方式 68

5.4 映射方式 68

5.3.3 24位颜色显示卡 68

5.4.2 “固定比例”的映射方式 69

5.4.3 “比例可变”的映射方式 70

5.4.4 坐标变换 71

5.5.3 打印字体 73

5.5.2 选择字体 73

5.5 字体 73

5.5.1 字体是GDI对象 73

5.5.5 窗口中的点——逻辑Twips 74

5.5.4 显示字体 74

5.5.6 计算字符高度 75

5.6 EX05A例程序 76

5.7 EX05B程序 79

5.6.1 EX05A程序的组成元素 79

5.8 EX05C例程序——再次使用CScrollView 83

5.8.2 CScrollView的SetScaleToFitSize状态 86

5.8.1 EX05C程序的一些元素 86

6.2 系统模式对话框 87

6.1 有模式和无模式对话框 87

第六章 有模式对话框 87

6.4 有模式对话框的程序设计 88

6.3 资源和控制 88

6.5 包罗万象的对话框——EX06A例程序 89

6.5.1 ClassWizard和对话框类 95

6.5.2 将对话框与视相连接 99

6.5.3 深入理解EX06A应用 100

6.6.1 获得OnOK退出控制 101

6.6 增强对话框函数 101

6.6.3 和滚动条控制挂上钩 103

6.6.2 OnCancel处理 103

6.7 确认控制:CWnd指针和控制ID 105

6.9 在对话框窗口内绘图 106

6.8 设置对话框的背景及其中控制的颜色 106

6.10 利用其它的控制特性 107

7.1.1 创建无模式对话框 108

7.1 无模式对话框 108

第七章 无模式对话框和COMMDLG对话框类 108

7.1.4 无模式对话框的例子——EX07A 109

7.1.3 对话框的归属 109

7.1.2 用户定义的消息 109

7.3 COMMDLG对话框 115

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

7.3.4 使用CFileDialog的一个例子——EX07B 116

7.3.3 从COMMDLG类进行派生 116

7.3.1 直接使用CFileDialog类 116

7.3.2 在程序运行的过程中加进对话框控制 116

8.1 Windows的标准控制和普通常规控制 122

第八章 Visual Basic控制 122

8.2.2 属性和数据成员 123

8.2.1 方法和成员函数 123

8.2 C++的类和Visual Basic控制 123

8.4 CVBControl类 124

8.3 Visual Basic事件登记 124

8.2.3 Visual Basic控制事件和Windows控制通知 124

8.5 EX08A例程序 125

8.5.2 创建EX08A例程序 126

8.5.1 Visual BasicGRID控制 126

8.8 编写和利用Visual Basic控制的有利和不利因素 135

8.7 Visual Basic的图象属性 135

8.6 利用其它的Visual Basic控制 135

9.1 内存模式综述 136

第九章 全新的Windows内存管理 136

9.2.1 Intel段结构 137

9.2 16位Windows 137

9.2.2 DGROUP段和多事件程序 138

9.2.4 近程函数调用 139

9.2.3 内存模式——一个代码段还是多个代码段 139

9.2.5 内存模式——一个数据段还是多个 140

9.2.7 全局堆 142

9.2.6 局部堆 142

9.2.10 80386/80486的虚内存管理器 144

9.2.9 直接使用Windows的内存申请函数 144

9.2.8 程序的vtable在内存中的位置 144

9.3 检测内存疏漏(Leak) 145

9.4 内存用尽时该如何处理 146

10.2 使用GDI位图 147

10.1 GDI位图和与设备无关的位图(DIB) 147

第十章 位图 147

10.4 从资源中装入GDI位图 148

10.3 彩色位图和单色位图 148

10.6 对位进行伸缩处理 149

10.5 显示映射方式的作用 149

10.6.1 EX10A例程序 150

10.7 利用位图改进屏幕显示 152

10.7.1 EX10B例程序 153

10.8 GDI位图的其它应用 157

11.1.1 EX11A例程序 158

11.1 位图按钮 158

第十一章 位图按钮、计时器和空状态处理 158

11.1.2 对位图按钮的进一步讨论 162

11.2.2 产生控制 163

11.2.1 计时器 163

11.2 计时器的使用及控制的产生 163

11.2.3 EX11B例程序 164

11.3 空状态处理 167

11.3.1 EX11C程序 168

12.1 主框架窗口和文档类 175

第十二章 菜单和键盘加速键 175

第三部分 文档-视结构 175

12.2 Windows的菜单 176

12.4 命令处理 177

12.3 键盘加速键 177

12.4.2 更新命令用户接口(UI)消息 178

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

12.5 应用框架的内含菜单项 179

12.4.3 对话框发送的命令 179

12.6 菜单项的允许/禁止 180

12.8 EX12A例程序 181

12.7 CEditView类 181

12.9 CMenu类 186

12.10 扩展命令处理 187

12.11 EX12B例程序 188

13.2 工具条 193

13.1 控制条和应用框架 193

第十三章 工具条和状态条 193

13.2.2 按钮的状态 194

13.2.1 工具条位图 194

13.2.4 工具条更新命令UI消息 195

13.2.3 工具条和命令消息 195

13.3 寻找主框架窗口 196

13.4 EX13A工具条例程序 197

13.5.2 信息行 202

13.5.1 状态条的定义 202

13.5 状态条 202

13.5.4 获得对状态条的控制 203

13.5.3 状态指示器 203

13.6 EX13B状态条例程序 204

14.2 CPersistentFrame类 209

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

第十四章 可重用基类 209

14.4 Windows的INI文件 210

14.3 CFrameWnd类和ActivateFrame成员函数 210

14.5 使用CString类 212

14.8 缺省窗口矩形 214

14.7 静态数据成员 214

14.6 极大窗口的位置 214

14.9 EX14A例程序 215

14.10 MDI应用中的持续框架 220

15.1.1 CView类的GetDocument函数 221

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

第十五章 文档与视的分离 221

15.1.3 CView类的OnUpdate函数 222

15.1.2 CDocument类的UpdateAllViews函数 222

15.2 最简单的文档-视应用 223

15.1.4 CView的OnInitialUpdate函数 223

15.3 CFormView类 224

15.5.1 TRACE宏 225

15.5 诊断信息转储 225

15.4 CObject类 225

15.5.3 信息转储环境及CObject类 226

15.5.2 afxDump对象 226

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

15.6 EX15A例程序 229

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

15.9 CObList集合类 236

15.8 CDocument的Delete Contents函数 236

15.9.1 对先入先出(FIFO)表使用CObList类 237

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

15.9.3 信息转储环境及集合类 239

15.10 EX15B例程序 240

15.11 CEx15bApp 241

15.13 CStudentDoc 242

15.12 CMainFrame 242

15.13.4 GetList 245

15.13.3 构造函数和析构函数 245

15.13.1 ClassWizard和CStudentDoc 245

15.13.2 数据成员 245

15.14 CStudentView 246

15.13.6 Dump 246

15.13.5 DeleteContents 246

15.14.1 ClassWizard和CStudentView 253

15.14.6 工具条按钮的更新命令UI消息控制函数 254

15.14.5 工具条按钮命令消息控制函数 254

15.14.2 数据成员 254

15.14.3 OnInitialUpdate 254

15.14.4 OnUpdate 254

15.15.3 IDD_STUDENT对话框 255

15.15.2 Edit菜单 255

15.14.7 protected型虚函数 255

15.15 资源要求 255

15.15.1 符号 255

15.15.4 工具条 256

15.15.5 测试EX15B应用 256

15.16 留给读者的两个练习 257

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

16.1 什么是序列化 258

第十六章 读和写文档——单文档接口 258

16.1.3 编写序列化函数 259

16.1.2 使类可序列化 259

16.1.4 从归档中装入——内嵌对象和指针 260

16.1.6 序列化函数和应用框架 263

16.1.5 使集合序列化 263

16.2.2 文档模板类 264

16.2.1 Windows应用对象 264

16.2 SDI应用 264

16.2.3 文档模板资源 265

16.2.6 文档类的OnNewDocument函数 267

16.2.5 创建空文档——CWinApp的OnFileNew函数 267

16.2.4 SDI文档的多视 267

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

16.2.8 文档类的DeleteContents函数 268

16.2.7 将File Open与序列化代码相连接——OnFileOpen 268

16.3 EX16A——序列化SDI例程序 269

16.2.10 文件的IsModified标记 269

16.4 CStudent 270

16.5 CEx16aApp 271

16.6 CFrameWnd 275

16.7.3 OnUpdateFileSave 278

16.7.2 OnOpenDocument 278

16.7 CStudentDoc 278

16.7.1 Serialize 278

16.7.6 测试EX16A应用 279

16.7.5 AppWizard和EX16A 279

16.7.4 CStudentView 279

16.7.7 File Manager中的文档相关 280

22.11.7 CloseAllChildWindows 282

17.1 MDI应用 282

第十七章 对文档的读和写——MDI 282

17.1.1 一个典型的具有MFC库风格的MDI应用 283

17.1.2 MDI应用对象 284

17.1.4 MDI框架窗口和子窗口 285

17.1.3 MDI文档模板类 285

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

17.1.8 装入和存入文档 287

17.1.6 创建空文档——CWinAppp∷OnFileNew函数 287

17.1.7 为现存文档创建新的视 287

17.2.1 程序登记 288

17.1.9 多文档模板 288

17.2 拖和放——程序和文档 288

17.2.4 程序启动参数 289

17.2.2 允许拖和放 289

17.2.3 允许内嵌启动 289

17.3 EX17A例程序 290

17.2.5 响应DDE消息 290

17.4 CEx17aApp 291

17.5 CMainFrame 295

17.5.1 测试EX17A应用 297

17.6 EX17B例程序 298

18.1.2 交互选择打印页码 301

第十八章 打印和打印预显 301

18.1 Windows的打印 301

18.1.1 标准打印机对话框 301

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

18.1.3 显示页和打印页 303

18.2 打印预显 303

18.3.3 准备设备环境——CView类∷OnPrepareDC函数 304

18.3.1 打印机设备环境和CView∷OnDraw函数 304

18.3.2 CView类∷OnPrint函数 304

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

18.3.4 打印工作的开始和结束 305

18.5 EX18B例程序——多页打印程序 311

18.6 留给读者的一些练习 316

19.2 多视选择 317

第十九章 切分窗口和多视 317

19.1 切分窗口 317

19.4.1 CMainFrame 318

19.3 动态和静态切分窗口 318

19.4 EX19A——具有单个视类的SDI动态切分例子 318

19.4.2 资源需求 319

19.5.1 CHexView 320

19.4.3 测试EX19A应用 320

19.5 EX19B——双视类SDI静态切分例子 320

19.5.2 CMainFrame 321

19.6.1 CEx19cApp 322

19.5.3 测试EX19B应用 322

19.6 EX19C——多视类MDI例子 322

19.6.2 CMainFrame 323

19.6.4 测试EX19C应用 325

19.6.3 资源要求 325

20.1.1 复文本格式(RTF) 326

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

20.1 Windows的WINHELP程序 326

20.1.2 编写简单的帮助文件 327

20.2 应用框架与WINHELP 331

20.2.3 帮助上下文别名 332

20.2.1 调用WINHELP 332

20.2.2 使用搜索字符串 332

20.2.5 进入帮助的菜单 333

20.2.4 决定帮助上下文 333

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

20.2.6 F1帮助 334

20.2.7 Shift-F1帮助 334

20.3 帮助例子——不需要任何编程 335

20.2.9 一般的帮助 335

20.5 帮助命令处理 337

20.4 MAKEHELP处理 337

20.5.2 Shift-F1处理过程 338

20.5.1 F1处理过程 338

20.9 CMDIHelpWnd 339

20.6 帮助命令处理例程序——EX20B 339

20.7 头文件要求 339

20.8 CEx20bApp 339

20.11 CHexView 341

20.10 CStringView 341

20.13 帮助文件要求 342

20.12 资源要求 342

20.14 创建并测试该应用 343

21.1 MATPLAN应用 344

第二十一章 一个实际的基于Windows的应用 344

21.3.1 InitInstance 346

21.2 对MATPLAN应用的分析 346

21.3 CMatplanApp 346

21.4.3 DeleteContents 347

21.3.2 ExitInstance 347

21.4 CMatplanDoc 347

21.4.1 构造函数 347

21.4.2 Serialize 347

21.5.2 OnWindowNew2 348

21.4.4 OnEditClearAll 348

21.5.5 OnUpdateEditClearAll 348

21.5.6 OnUpdateFileSave 348

21.5 CMainFrame 348

21.5.1 OnWindowNew1 348

21.7.1 Draw 349

21.6 CMDISpecialChildWnd 349

21.6.1 OnCommandHelp 349

21.7 CPiece 349

21.7.4 InsertInList,ExtractFromList 350

21.7.2 PrintLine 350

21.7.3 Serialize 350

21.8.1 构造函数 351

21.8 CMatplanDialog 351

21.8.3 OnclickedCancel 352

21.8.2 DoDataExchange 352

21.9 ClistView 353

21.8.4 OnClear,OnDelete,OnInsert,OnUpdate 353

21.8.5 OnCancel 353

21.9.3 OnPrint 354

21.9.1 OnPrepareDC 354

21.9.2 OnDraw 354

21.9.6 OnBeginPrinting,OnEndPrinting 355

21.9.4 OnUpdate 355

21.9.5 OnPreparePrinting 355

21.9.9 OnSize 356

21.9.7 OnCreate 356

21.9.8 OnPaint 356

21.9.11 OnCommandHelp,OnHelpHitTest 357

21.9.10 OnListBoxDblClk 357

21.10.1 OnDraw 358

21.9.12 StartNewList 358

21.9.13 UpdatePlanDocument 358

21.10 CPlanView 358

21.10.4 OnInitialUpdate 359

21.10.2 OnPreparePrinting 359

21.10.3 OnUpdate 359

21.10.5 OnPaint 360

21.10.7 OnMouseMove 361

21.10.6 OnLButtonDown 361

21.10.8 OnLButtonUp 362

21.10.13 SafeScrollTo 363

21.10.9 OnLButtonDblClk 363

21.10.10 OnKeyDown 363

21.10.11 OnCommandHelp,OnHelpHitTest 363

21.10.12 ShowOverlap 363

21.11.1 IDD_FORM对话框 364

21.11 MATPLAN资源文件 364

21.13 创建并测试MATPLAN应用 365

21. 11.2 IDR_MATTYPE菜单 365

21.11.3 符号 365

21.12 头文件 365

22.1 EX22A例子——一个SDI应用 369

第四部分 高级话题 369

第二十二章 不带文档和视的Microsoft基本类库2.0版程序 369

22.3.3 OnClose 372

22.2 CEx22aApp 372

22.2.1 InitInstance 372

22.3 CMainFrame 372

22.3.1 构造函数 372

22.3.2 OnPaint 372

22.5 EX22B例程序——一个基于对话框的应用 373

22.3.4 OnQueryEndSession 373

22.3.5 OnFile,OnHlp 373

22.4 资源要求 373

22.7.3 DoDataExchange 376

22.6 CEx22bApp 376

22.6.1 数据成员 376

22.6.2 InitInstance 376

22.7 CEx22bDialog 376

22.7.1 数据成员 376

22.7.2 构造函数 376

22.9 EX22C例程序——一个MDI应用 377

22.7.4 OnClickedCompute 377

22.8 资源要求 377

22.11.1 构造函数 381

22.10 CEx22cApp 381

22.10.1 InitInstance 381

22.11 CMainFrame 381

22.12.1 数据成员 382

22.11.2 OnClose 382

22.11.3 OnQueryEndSession 382

22.11.4 OnFileNew 382

22.11.5 OnWindowCloseAll 382

22.11.6 OnUpdateWindowCloseAll 382

22.12 CChildFrame 382

22.13 资源要求 383

22.12.6 删除CMDIChildWnd对象 383

22.12.2 构造函数 383

22.12.3 OnPaint 383

22.12.4 OnClose 383

22.12.5 OnFileClose 383

23.1 Windows的DIB格式 385

第二十三章 将位图存入文档——DIB和裁剪板 385

23.2 DIB、颜色以及调色板 386

23.4 位图裁剪板规则 387

23.3 通过裁剪板来传递图象 387

23.7 CDib类 388

23.6 利用DIB进行打印 388

23.5 MFC库文档中的DIB 388

23.8 DIB访问函数 397

23.10 CEx23aDoc 398

23.9 EX23A例程序 398

23.12.1 内存申请 399

23.12 CDib 399

23.10.1 构造函数,析构函数 399

23.10.2 DeleteContents 399

23.10.3 Serialize 399

23.10.4 OnEditClearAll 399

23.11 CBitsDialog 399

23.13.1 构造函数,析构函数 400

23.13 CEx23aView 400

23.12.2 大位图的序列化 400

23.13.3 OnInitialUpdate 401

23.13.2 OnCreate 401

23.13.4 OnDraw 402

23.13.7 OnEditCut 403

23.13.6 OnEditCopyTo 403

23.13.5 OnEditCopy 403

23.13.10 OnPrint 404

23.13.9 OnEditPasteFrom 404

23.13.8 OnEditPaste 404

23.14.1 IDD_BITS对话框资源 405

23.14 EX23A资源文件 405

23.13.11 OnUpdate 405

23.13.12 更新命令UI函数 405

23.15 测试EX23A应用 406

23.14.2 IDR_MAINFRAME菜单资源 406

23.16 位图操作 407

24.1 数据库管理和序列化 408

第二十四章 Microsoft ODBC数据库管理 408

24.3 ODBC标准 409

24.2 SQL 409

24.5 ODBC SDK程序设计 410

24.4 ODBC结构 410

24.6 MFC ODBC类 412

24.7 EX24A例程序 413

24.8 CEX24A例程序中的元素 417

24.8.3 CEx24aView类的OnDraw成员函数 418

24.8.2 CEx24aView类的OnIitialUpdate成员函数 418

24.8.1 记录集类与应用之间的连接 418

24.9 MFC库对话框条 419

24.11 行-视类 420

24.10 应用的关闭 420

24.11.2 将工作分摊于基类和派生类 430

24.11.1 滚动问题 430

24.12 针对动态记录集进行程序设计 431

24.11.4 CRowView的其它函数 431

24.11.3 CRowView的纯虚成员函数 431

24.14 EX24B例程序 432

24.13 清点记录集中的行 432

24.15 CEx24bApp 433

24.17.3 OnFileConnect 434

24.17.2 OnNewDocument 434

24.16 CMainFrame 434

24.17 CEx24bDoc 434

24.17.1 数据成员 434

24.17.4 OnFileDisconnect 435

24.18 CEx24bView 436

24.17.8 Serialize 436

24.17.5 OnQueryRequery 436

24.17.6 PutFilterSort,GetFilterSort 436

24.17.7 SaveModified 436

24.18.5 OnDrawRow,DrawDataRow 437

24.18.4 GetRowCount 437

24.18.1 数据成员 437

24.18.2 OnUpdate 437

24.18.3 GetRowWidthHeight,GetActiveRow,ChangeSelectionNexRow,ChangeSelectionToRow 437

24.19.2 Initialize 440

24.19.1 数据成员 440

24.19 CEx24bSet 440

24.19.3 DoFieldExchange 441

24.19.4 析构函数 442

24.20.3 OnInitDialog 443

24.20.2 构造函数 443

24.20 CTableSelect 443

24.20.1 数据成员 443

24.21 EX24B资源文件 444

24.20.4 OnDblclkList1 444

24.23 对ODBC的进一步讨论 445

24.22 运行EX24B程序 445

25.1 OLE的学习 446

第二十五章 对象连接与嵌入(OLE)及其自动化 446

25.2.2 COM的实质 447

25.2.1 COM解决的问题 447

25.2 公共对象模式(COM) 447

25.2.3 什么是COM接口 448

25.2.4 IUnknown接口和QueryInterface成员函数 452

25.2.5 引用记数:AddRef和Release函数 455

25.3 类厂(class factory) 456

25.3.1 COM和MFC——CCmdTarget类 457

25.3.2 一个可运行的COM例子 458

25.3.3 OLE和窗口登记数据库 466

25.3.4 运行时刻对象登记 467

25.3.5 COM客户程序是如何调用DLL侍者程序的 468

25.3.6 COM客户程序是如何调用EXE侍者程序的 469

25.3.7 MFC和OLE 470

25.4.1 C++与Visual Basic for Application(VBA)之间的连接 471

25.4 OLE自动化 471

25.3.8 包容和继承 471

25.4.3 Microsoft Excel——一种比Visual Basic还好的VisualBasic 472

25.4.2 自动化控制程序和自动化侍者程序 472

25.4.4 属性(property)、方法(method)和集合(collection) 474

25.5 IDispatch接口 475

25.4.5 OLE自动化所解决的问题 475

25.5.1 OLE自动化程序设计 476

25.5.3 一个MFC OLE自动化侍者 477

25.5.2 MFCIDispatch的实现 477

25.5.4 一个MFC OLE自动化控制程序 478

25.5.5 VARIANT类型 480

25.5.6 CVariant类 482

25.5.7 Invoke的参数和返回值的类型转换 484

25.6.1 EX25B自动化侍者EXE——不带任何用户接口 486

25.6 OLE自动化例子 486

25.6.2 EX25C自动化侍者DLL 492

25.6.3 EX25D SDI自动化侍者EXE 498

25.6.4 EX25E自动控制程序 503

25.6.5 针对EX25B.EXE的市场控制程序类 504

25.6.6 针对EX25C.DLL的控制程序类 506

25.6.7 针对EX25D.EXE的控制程序类 508

25.6.8 控制Microsoft Excel 509

25.7 OLE及其未来 514

第二十六章 动态连接库(DLLs) 516

26.1 为什么使用DLL 516

26.2 传统的DLL 516

26.3 MFC库DLL 517

26.3.1 类库DLL的使用仅限于Microsoft C++编译器 517

26.3.2 作为DLL的类库类 518

26.3.3 在应用中使用MFC 250D.DLL 518

26.3.4 MFC库扩展DLL 519

26.3.5 MFC库DLL内存使用 519

26.3.6 扩展DLL需要的一些代码 520

26.3.7 搜索资源 520

26.3.8 内联构造函数 521

26.3.9 扩展DLL的引出 521

26.3.11 扩展DLL运行时刻类的确定 522

26.3.12 创建DLL 522

26.3.10 类静态数据成员 522

26.3.14 DLL的调试版和发行版 523

26.4 EX26A——编写自己的类库扩展DLL 523

26.3.13 创建引入库 523

26.4.1 EX26AD.DEF文件 524

26.4.2 EX26AD工程的Visual工作平台选项 525

26.4.3 创建引入库并拷贝DLL 526

26.5 EX26B——使用MFC库扩展DLL 526

26.7 CEx26bDoc 527

26.8 CEx26bView 527

26.6 CEx26bApp 527

26.9 CStudentDialog 529

26.10 创建并测试EX26B程序 529

26.10.1 资源访问 530

第五部分 附录 535

附录A C++语言的速成教程 535

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

附录C 本书中用到的MicrosoftWindows函数 570

附录D 用于Windows NT的Visual C++版本2.0 572