《Visual C++ 技术内幕 第4版》求取 ⇩

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

第一章 Microsoft Windows和Visual C++3

1.1Windows的编程模式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 ResourceView8

1.2.3 C/C++编译器8

1.2.5连接器9

1.2.6调试器9

1.2.7 AppWizard9

1.2.4资源编译器9

1.2.8 ClassWizard10

1.2.9源程序浏览器10

1.2.10联机帮助11

1.2.12源代码控制12

1.2.13 Gallery12

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! 着手学习AppWizard27

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使用ClassWizard48

4.3.1同时使用AppWizard和ClassWizard49

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和CWindowDC65

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示例程序——再次使用CScrollView82

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指针和控件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.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无模式对话框的例子——EX07A127

7.3.1直接使用CFileDialog类134

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

7.3 Windows通用对话框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.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操作符,_heapmin174

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 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.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 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.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 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.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 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.1资源要求401

19.6.2 CMainFrame401

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

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从应用程序的菜单调用WinHelp415

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帮助命令处理示例程序——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

21.1基本DLL理论426

第二十一章 动态连接库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.3 MFC扩展DLL资源搜索的顺序432

21.2.2 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.4自定义控件通知消息441

21.3.3 MFC库和WndProc函数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.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)AppWizard463

第四部分 ActiveX:组件对象模型、自动化和OLE467

第二十三章 组件对象模型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示例程序——一个模拟的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.3 Microsoft Excel--一种比Visual Basic还好的Visual Basic505

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 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.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和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.5按ODBC模式使用DAO——快照和动态集701

29.4利用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.2 CMainFrame和CChildFrame709

29.11.3 CEx29aDoc709

29.11.1 CEx29aApp709

29.11.4 CEx29aView716

29.11.5 CTableSelect719

29.11.6 CIsamSelect720

29.12 EX29A资源文件721

29.13运行EX29A程序722

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

30.2 Internet基础725

第三十章 TCP/IP、Winsock和WinInet725

第六部分 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.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 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.2 EX30A服务器结构749

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

30.5.1 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.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——使用CHttpConnection758

30.8.2测试WinInet Client #1758

30.8.3 EX30A WinInet Client #2——使用OpenURL759

30.9.1 Moniker760

30.9.2 MFC CAsyncMonikerFile类760

30.9.3在程序中使用CAsyncMonikerFile类760

30.9异步Moniker文件760

30.8.4测试WinInet Client #2760

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.2一个简单的ISAPI服务器扩展GET请求767

31.3.1通用网关接口和ISAPI767

31.3 ISAPI服务器扩展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.1 Cookie如何工作778

31.6使用HTTP 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.2把事务数据发送到显示程序783

31.9.1选择通知783

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

31.9.3显示程序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.3 EX32A第二阶段——加入WinInet调用792

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

32.2.2调试ActiveX文档服务器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

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

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

1999《Visual C++ 技术内幕 第4版》由于是年代较久的资料都绝版了,几乎不可能购买到实物。如果大家为了学习确实需要,可向博主求助其电子版PDF文件(由(美)(D.J.克鲁格林斯基)David J.Kruglin 1999 北京:清华大学出版社 出版的版本) 。对合法合规的求助,我会当即受理并将下载地址发送给你。

高度相关资料

Visual C++开发工具程序员参考手册(1996 PDF版)
Visual C++开发工具程序员参考手册
1996 北京:电子工业出版社
MFC技术内幕( PDF版)
MFC技术内幕
Visual C++ 技术内幕( PDF版)
Visual C++ 技术内幕
WindowsTM95技术内幕(1995年06月第1版 PDF版)
WindowsTM95技术内幕
1995年06月第1版 清华大学出版社
Visval C++技术内幕第2版( PDF版)
Visval C++技术内幕第2版
北京:清华大学出版社
Visual C++ 4从入门到精通 2版(1997 PDF版)
Visual C++ 4从入门到精通 2版
1997 北京:电子工业出版社
Visual C++ 6.0网络开发技术(1999 PDF版)
Visual C++ 6.0网络开发技术
1999 北京:人民邮电出版社
Programming Visual C++ 6.0技术内幕  修订版(1999 PDF版)
Programming Visual C++ 6.0技术内幕 修订版
1999 北京:北京希望电脑公司;北京:北京希望电子出版社
Visual C++ 5.0编程技术(1998 PDF版)
Visual C++ 5.0编程技术
1998 北京:北京航空航天大学出版社
Visual C++多媒体编程技术(1999 PDF版)
Visual C++多媒体编程技术
1999 北京:人民邮电出版社
Visual C++ 6.0数据库开发技术(1999 PDF版)
Visual C++ 6.0数据库开发技术
1999 北京:机械工业出版社
Visual C++ 6.0实用编程技术(1999 PDF版)
Visual C++ 6.0实用编程技术
1999 北京:中国水利水电出版社
Visual C++ 技术内幕  第2版(1996 PDF版)
Visual C++ 技术内幕 第2版
1996 北京:清华大学出版社
Visual C++可视化编程技术(1996 PDF版)
Visual C++可视化编程技术
1996 北京:科学出版社
Visual C++ Windows实用编程技术(1996 PDF版)
Visual C++ Windows实用编程技术
1996 北京:北京航空航天大学出版社