Visual C++ 技术内幕 第4版PDF电子书下载
- 电子书积分:22 积分如何计算积分?
- 作 者:(美)(D.J.克鲁格林斯基)David J.Kruglinski著;潘爱民,王国印译
- 出 版 社:北京:清华大学出版社
- 出版年份:1999
- ISBN:7302032432
- 页数:814 页
第一部分 Windows、Visual C++和应用程序框架基础 3
第一章 Microsoft Windows和Visual C++ 3
1.1 Windows的编程模式 3
1.1.1消息处理 3
1.1.2Windows的图形设备接口(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 ResourceView 8
1.2.3 C/C++编译器 8
1.2.5连接器 9
1.2.6调试器 9
1.2.7 AppWizard 9
1.2.4资源编译器 9
1.2.8 ClassWizard 10
1.2.9源程序浏览器 10
1.2.10联机帮助 11
1.2.12源代码控制 12
1.2.13 Gallery 12
1.2.11 Windows诊断工具 12
1.2.14 Microsoft基本类库4。21版 13
1.2.15 Microsoft ActiveX模板库 13
2.1为什么要使用应用程序框架 14
2.1.1学习曲线 17
2.2.1应用程序框架和MFC库 18
2.2.2应用程序框架示例 18
2.2什么是应用程序框架 18
2.3 MFC库消息映射 21
2.3.1文档和视图 22
第三章 从“Hello,world! 着手学习AppWizard 27
3.1什么是视图 27
第二部分 MFC库中的视图类 27
3.2单文档界面(SDI)和多文档界面(MDI) 28
3.3“不做任何事情”的应用程序 28
前言 29
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.1 ex03a.rc的内容 35
3.6资源编辑器简介 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.5 Windows的客户区域 42
4.1.4使矩形区域无效 42
4.1.3初始化视图类数据成员 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使用ClassWizard 48
4.3.1同时使用AppWizard和ClassWizard 49
4.4映射模式 51
4.4.1 ?映射模式 52
4.4.3“可变比例”映射模式 53
4.4.2“固定比例”映射模式 53
4.4.4坐标变换 54
4.4.5 EX04B示例程序——转换到?映射模式 56
4.5滚动视窗 57
4.5.1窗口比人们所见到的要大 57
4.5.2滚动条 58
4.5.3滚动方式的选择 58
4.5.4 OnlnitialUpdate函数 58
4.5.5接收键盘输入 58
4.5.6 EX04C滚动示例程序 59
4.6.1 WM-CREATE消息 62
4.6其他Windows消息 62
4.6.2 WM-CLOSE消息 63
4.6.3 WM-QUERYENDSESSION消息 63
4.6.4 WM-?消息 63
4.6.5 WM-?消息 63
第五章 图形设备接口(?)、颜色及字体 64
5.1设备环境类 64
5.1.1显示设备环境类Cchentpc和CWindowDC 65
5.1.2构造和析构CDC对象 65
5.1.3设备环境的状态 66
5.1.4 Cpaint DC类 66
5.2.2跟踪GDI对象 67
5.2.1 GDI对象的构造与析构 67
5.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 ?色显示卡 71
5.3.3 16位颜色显示卡 71
5.4.1字体是GDI对象 72
5.4.2选择字体 72
5.4字体 72
5.3.4 24位颜色显示卡 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示例程序——再次使用CScrollView 82
5.7.1 EX05C程序的组成元素 86
5.7.2 CScrollView的SetScaleToFitSiza模式 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指针和控件ID 109
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.5树状控件 114
6.11.4列表控件 114
6.11.3微调控钮控件 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无模式对话框的例子——EX07A 127
7.3.1直接使用CFileDialog类 134
7.2 CFormiew类——另外一种可供选择的无模式对话框 134
7.3 Windows通用对话框 134
7.3.2从通用对话框类进行派生 135
7.3.3嵌套对话框 135
7.3.4使用CFileDialog的一个例子——EX07B 135
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.7在运行时创建ActiveX控件 160
8.6 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 Windows95进程地址空间 170
9.1.2 Windows NT进程地址空间 170
9.2 虚拟内存如何工作 170
9.4 Windows堆和ClooalAlloc函数族 173
9.3 ?函数——占用和保留内存 173
9.5 ?内有堆,C++的new和delete操作符,_heapmin 174
9.6 内存映射文件 175
9.7 访问资源 176
9.8 管理动态内存的一些提示 177
9.9 常量数据的优化存储 177
第十一章 Windows消息处理和多线程编程 209
11.1 Windows消息处理 209
11.1.1单线程程序处理消息的过程 209
11.1.3计时器 210
11.1.2交出控制 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.3对话框发送的命令 231
12.4.2更新命令用户界面消息控制函数 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.12 CMenu类 254
12.11 Apply按钮的处理过程 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.4寻找主框架窗口 261
13.3工具提示 261
13.2.4工具栏更新命令UI消息控制函数 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.3 CFrameWnd类和ActivateFrame成员函数 276
14.2 CPersistentFrame类 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
15.1.1 CView::GetDocument函数 291
15.1文档-视图之间的相互作用函数 291
第十五章 文档与视图的分离 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 CStudentDoc 316
15.10.4 CstudentView 320
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.2.1 Windows应用程序对象 336
16.1.6 Serialize函数和应用程序框架 336
16.2 SDI应用程序 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.3 EX16A——序列化SDI示例程序 342
16.2.10文档的“脏”标志 342
16.3.1 CStudent 343
16.3.2 CEx16aApp 343
16.3.3 CFrameWnd 348
16.3.4 CStudentDoc 352
16.3.5 CStudentView 353
16.3.6测试EX16A应用程序 353
16.4从Explorer启动及拖放 354
16.4.1程序注册 354
16.4.2在文档上双击鼠标 355
16.4.3允许拖放 355
16.4.5试验用Explorer启动程序及拖放功能 356
16.4.4程序启动参数 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.9多文档模板 363
17.1.8载入和存储文档 363
17.1.10 Explorer启动及拖放 364
17.2 EX17A示例程序 364
17.2.1 CEx17aApp 365
17.2.2 CMainFrame 370
17.2.3 CChildFrame 373
17.2.4测试EX17A应用程序 376
第十八章 打印和打印预览 377
18.1 Windows的打印 377
18.1.1标准打印对话框 377
18.1.2交互选择打印页码 377
18.2打印预览 379
18.1.3显示页和打印页 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
19.2多视图选择 395
19.1切分窗口 395
第十九章 切分窗口和多视图 395
19.3动态和静态切分窗口 396
19.4 EX19A示例程序——具有单个视图类的SDI动态切分 396
19.4.1与切分有关的资源 397
19.4.2 CMainFrame 397
19.4.3测试EX19A应用程序 398
19.5 EX19B示例程序——双视图类SDI静态切分 399
19.5.1 ChexView 399
19.5.2 CmainFrame 400
19.5.3测试EX19B应用程序 400
19.6.1资源要求 401
19.6.2 CMainFrame 401
19.6 EX19C示例程序——切换没有切分的视图类 401
19.6.3测试EX19C应用程序 403
19.7 EX19D示例程序——多视图类MDI应用程序 403
19.7.1资源要求 404
19.7.2 CEx19dApp 404
19.7.3 CMainFrame 405
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 Contents 412
20.2应用程序框架与WinHelp 413
20.2.1调用WinHelp 414
20.2.2使用搜索字符串 414
20.2.3从应用程序的菜单调用WinHelp 415
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.5帮助命令处理 420
20.4 MAKEHELP处理 420
20.5.1 F1处理过程 421
20.5.2 Shift-F1处理过程 421
20.6帮助命令处理示例程序——EX20B 422
20.6.1头文件要求 422
20.6.2 CStringView 422
20.6.3 CHexView 423
20.6.4资源要求 424
20.6.5帮助文件要求 424
20.6.6测试EX20B应用程序 425
21.1基本DLL理论 426
第二十一章 动态连接库 426
21.1.1导入如何与导出相匹配 427
21.1.2隐式连接和显式连接 427
21.1.3符号连接和序号连接 428
21.1.4 DLL入口点——DllMain 429
21.1.5实例句柄——装载资源 429
21.1.6客户程序如何找到DLL 430
21.1.7调试DLL 430
21.2 MFC DLL——扩展的和正规的 430
21.2.1共享的MFC DLL和Windows DLL 431
21.2.3 MFC扩展DLL资源搜索的顺序 432
21.2.2 MFC扩展DLL——导出类 432
21.2.4 EX21A示例程序——MFC扩展DLL 433
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正规DLL 437
21.2.10修改EX21B示例程序——加入代码以测试ex21c.dll 438
21.3自定义控件DLL 440
21.3.1什么是自定义控件 440
21.3.2自定义控件的窗口类 440
21.3.4自定义控件通知消息 441
21.3.3 MFC库和WndProc函数 441
21.3.5发送给控件的用户定义消息 442
21.3.6 EX21D示例程序——自定义控件 442
21.3.7再修改EX21B示例程序——加入代码以测试ex21d.dll 448
第二十二章 不带文档或视图类的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.3 EX22C示例程序——一个MDI应用程序 458
22.2.2 CMainFrame类 458
22.3.1应用类程序InitInstance函数 459
22.3.2 CMainFrame类 460
22.3.3 CChildFrame类 462
22.3.4资源要求 462
22.4定制(Custom)AppWizard 463
第四部分 ActiveX:组件对象模型、自动化和OLE 467
第二十三章 组件对象模型 467
23.1 ActiveX技术背景 467
23.2.1 COM所解决的问题 468
23.2.2 COM的本质 468
23.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示例程序——一个模拟的COM 478
23.3 MFC库中实际的COM 486
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.3 Microsoft Excel--一种比Visual Basic还好的Visual Basic 505
24.2自动化客户和自动化组件 505
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 FORMATETC 569
25.3.2 STGMEDIUM 570
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应用程序和拖放——Dobjview 592
第二十六章 结构化存储 593
26.1复合文件 593
26.2存储(Storage)和IStorage接口 594
26.2.1获取IStorage指针 596
26.2.2释放STATSTG内存 596
26.2.3对存储对象的元素进行枚举 596
26.3.1 IStream接口成员函数 597
26.2.4进程间共享存储 597
26.3流(Stream)和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.3 IPersistStream编程 606
26.6.2 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.7包容器-组件相互作用 628
27.6.2实地组件调整大小的思路 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.9.1 IOleObject接口 634
27.8.3剪贴板图元文件 634
27.9接口简要说明 634
27.9.2 IViewObject2接口 635
27.9.3 IOleClientSite接口 635
27.9.4 LAdviseSink接口 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和CDatabase 675
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和VBA 699
29.3 DAO和MFC 700
29.5按ODBC模式使用DAO——快照和动态集 701
29.4利用DAO可以打开什么样的数据库 701
29.6 DAO表类型记录集 702
29.7 DAO QueryDef和TableDef 703
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.2 CMainFrame和CChildFrame 709
29.11.3 CEx29aDoc 709
29.11.1 CEx29aApp 709
29.11.4 CEx29aView 716
29.11.5 CTableSelect 719
29.11.6 CIsamSelect 720
29.12 EX29A资源文件 721
29.13运行EX29A程序 722
30.1既针对COM也可以不需要COM 725
30.2 Internet基础 725
第三十章 TCP/IP、Winsock和WinInet 725
第六部分 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和Intranet 734
30.3建立自己的价值$99的Intranet 734
30.3.3对Windows进行网络配置 735
30.3.1 NT文件系统和文件分配表 735
30.3.2网络硬件 735
30.3.4 Intranet的主机名——HOSTS文件 736
30.3.5测试Intranet——Ping程序 736
30.3.6只有一台计算机的Intranet——TCP/IP环形地址 736
30.4 Winsock 737
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.2 EX30A服务器结构 749
30.5用CHttpBlockingSocket创建一个Web服务器程序 749
30.5.1 EX30A服务器限制 749
30.5.3使用Win32 TransmitFile函数 750
30.5.4编译和测试EX30A 751
30.5.5使用Telnet 752
30.6用CHttpBlockingSocket创建一个Web客户端程序 752
30.6.1 EX30A Winsock客户 752
30.6.2 EX30A对代理服务器的支持 753
30.6.3测试EX30A Winsock客户 753
30.7 WinInet 753
30.7.2 MFC WinInet类 754
30.7.1 WinInet相对于Winsock的优势 754
30.7.3 Internet会话状态回调 756
30.7.4一个简化了的WinInet客户程序 757
30.8用MFC WinInet类创建一个Web客户 758
30.8.1 EX30A WinInet Client #1——使用CHttpConnection 758
30.8.2测试WinInet Client #1 758
30.8.3 EX30A WinInet Client #2——使用OpenURL 759
30.9.1 Moniker 760
30.9.2 MFC CAsyncMonikerFile类 760
30.9.3在程序中使用CAsyncMonikerFile类 760
30.9异步Moniker文件 760
30.8.4测试WinInet Client #2 760
30.9.4异步moniker文件和WinInet编程 761
第三十一章 Microsoft Internet Information Server编程 763
31.1 IIS的替代产品 763
31.2 Microsoft IIS 763
31.2.1安装和控制IIS 763
31.2.2运行Internet Service Manager 764
31.2.3 IIS的安全性 764
31.2.4 IIS目录 765
31.2.5 IIS日志记录 766
31.2.6测试IIS 766
31.3.2一个简单的ISAPI服务器扩展GET请求 767
31.3.1通用网关接口和ISAPI 767
31.3 ISAPI服务器扩展 767
31.3.3 HTML窗体——GET和POST 768
31.3.4编写ISAPI服务器扩展DLL 769
31.3.5 MFC ISAPI服务器扩展类 770
31.4一个实际的ISAPI服务器扩展——ex31a.dll 771
31.4.1第一步——获取定单 772
31.4.2第二步——处理确认窗体 775
31.4.3编译并测试ex31a.dll 776
31.4.4调试EX31A DLL 776
31.5 ISAPI数据库访问 777
31.6.1 Cookie如何工作 778
31.6使用HTTP Cookie来连接事务 778
31.6.2 ISAPI服务器扩展如何处理Cookie 779
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过滤器DLL 781
31.8.2 MFC ISAPI过滤器类 781
31.9 ISAPI过滤器示例——ex31b.dll、ex31c.exe 782
31.9.2把事务数据发送到显示程序 783
31.9.1选择通知 783
31.9.4编译并测试EX31B ISAPI过滤器 785
31.9.3显示程序 785
第三十二章 ActiveX文档服务器和Internet 787
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文档服务器示例程序EX32A 791
32.2.3 EX32A第二阶段——加入WinInet调用 792
32.2.1 EX32A第一阶段——简单的服务器 792
32.2.2调试ActiveX文档服务器 792
32.3 ActiveX文档服务器示例程序EX32B 794
32.3.1在程序控制下产生POST请求 799
32.3.2 EX32B视图类 800
32.3.3编译并测试EX32B 802
32.3.4 ActiveX文档服务器和VB Script 802
32.4进一步使用ActiveX文档服务器 803
附录A Microsoft基本类(MFC)库中的消息映射函数 804
附录B MFC库运行时类识型和动态对象创建 810
- 《钒产业技术及应用》高峰,彭清静,华骏主编 2019
- 《现代水泥技术发展与应用论文集》天津水泥工业设计研究院有限公司编 2019
- 《异质性条件下技术创新最优市场结构研究 以中国高技术产业为例》千慧雄 2019
- 《Prometheus技术秘笈》百里燊 2019
- 《中央财政支持提升专业服务产业发展能力项目水利工程专业课程建设成果 设施农业工程技术》赵英编 2018
- 《药剂学实验操作技术》刘芳,高森主编 2019
- 《林下养蜂技术》罗文华,黄勇,刘佳霖主编 2017
- 《脱硝运行技术1000问》朱国宇编 2019
- 《催化剂制备过程技术》韩勇责任编辑;(中国)张继光 2019
- 《信息系统安全技术管理策略 信息安全经济学视角》赵柳榕著 2020
- 《SQL与关系数据库理论》(美)戴特(C.J.Date) 2019
- 《魔法销售台词》(美)埃尔默·惠勒著 2019
- 《看漫画学钢琴 技巧 3》高宁译;(日)川崎美雪 2019
- 《微表情密码》(波)卡西亚·韦佐夫斯基,(波)帕特里克·韦佐夫斯基著 2019
- 《优势谈判 15周年经典版》(美)罗杰·道森 2018
- 《社会学与人类生活 社会问题解析 第11版》(美)James M. Henslin(詹姆斯·M. 汉斯林) 2019
- 《海明威书信集:1917-1961 下》(美)海明威(Ernest Hemingway)著;潘小松译 2019
- 《反常识》张娟责任编辑;(美国)邓肯·J.瓦茨 2019
- 《迁徙 默温自选诗集 上》(美)W.S.默温著;伽禾译 2020
- 《上帝的孤独者 下 托马斯·沃尔夫短篇小说集》(美)托马斯·沃尔夫著;刘积源译 2017
- 《大学计算机实验指导及习题解答》曹成志,宋长龙 2019
- 《指向核心素养 北京十一学校名师教学设计 英语 七年级 上 配人教版》周志英总主编 2019
- 《大学生心理健康与人生发展》王琳责任编辑;(中国)肖宇 2019
- 《大学英语四级考试全真试题 标准模拟 四级》汪开虎主编 2012
- 《大学英语教学的跨文化交际视角研究与创新发展》许丽云,刘枫,尚利明著 2020
- 《北京生态环境保护》《北京环境保护丛书》编委会编著 2018
- 《复旦大学新闻学院教授学术丛书 新闻实务随想录》刘海贵 2019
- 《大学英语综合教程 1》王佃春,骆敏主编 2015
- 《大学物理简明教程 下 第2版》施卫主编 2020
- 《指向核心素养 北京十一学校名师教学设计 英语 九年级 上 配人教版》周志英总主编 2019