Visual C++ 技术内幕(第四版)

David J. Kruglinski

文学

C++ MFC vc++ Win32 编程 VC C/C++

1999-1

清华大学出版社

目录
目录 前言 第一部分 Windows、VisualC++和应用程序框架基础 第一章 MicrosoftWindows 和VisualC++ 1.1Windows的编程模式 1.1.1消息处理 1.1.2Windows的图形设备接口(GDI) 1.1.3基于资源的程序设计 1.1.4内存管理 1.1.5动态连接库(DLL) 1.1.6Win32应用程序编程接口 1.2VisualC++的组成 1.2.1MicrosoftDeveloperStudio97和创建过程 1.2.2资源编辑器――WorkspaceResourceView 1.2.3C/C++编译器 1.2.4资源编译器 1.2.5连接器 1.2.6调试器 1.2.7AppWizard 1.2.8ClassWizard 1.2.9源程序浏览器 1.2.10联机帮助 1.2.11Windows诊断工具 1.2.12源代码控制 1.2.13Gallery 1.2.14Microsoft基本类库4.21版 1.2.15MicrosoftActiveX 模板库 第二章 Microsoft基本类库应用程序框架 2.1为什么要使用应用程序框架 2.1.1学习曲线 2.2什么是应用程序框架 2.2.1应用程序框架和MFC库 2.2.2应用程序框架示例 2.3MFC库消息映射 2.3.1文档和视图 第二部分 MFC 库中的视图类 第三章 从“Hello,world!”着手学习AppWizard 3.1什么是视图 3.2单文档界面(SDI)和多文档界面(MDI) 3.3“不做任何事情”的应用程序 3.4CEx03aView视图类 3.5在视窗内绘图――Windows的图形设备接口 3.5.1OnDraw成员函数 3.5.2Windows设备环境 3.5.3往EX03A程序中加入绘制代码 3.6资源编辑器简介 3.6.1ex03a.rc的内容 3.6.2运行对话框资源编辑器 3.7Win32Debug目标和Win32Release目标 3.8允许诊断宏 3.9对预编译头文件的理解 3.10两种方法运行程序 第四章 基本事件处理、映射模式和滚动视图 4.1获取用户输入――消息映射函数 4.1.1消息映射 4.1.2保存视图的状态-类数据成员 4.1.3初始化视图类数据成员 4.1.4使矩形区域无效 4.1.5Windows 的客户区域 4.1.6CRect,CPoint和CSize类的运算 4.1.7一个点是否在矩形内 4.1.8CRect的LPRECT操作符 4.1.9一个点是否在椭圆内 4.2Ex04A示例程序 4.3对EX04A使用ClassWizard 4.3.1同时使用AppWizard 和Clas sWizard 4.4映射模式 4.4.1MM_TEXT映射模式 4.4.2“固定比例”映射模式 4.4.3“可变比例”映射模式 4.4.4坐标变换 4.4.5EX04B示例程序――转换到MM_HIMETRIC映射模式 4.5滚动视窗 4.5.1窗口比人们所见到的要大 4.5.2滚动条 4.5.3滚动方式的选择 4.5.4 OnInitialUpdate函数 4.5.5接收键盘输入 4.5.6EX04C滚动示例程序 4.6其他Windows消息 4.6.1WM_CREATE消息 4.6.2WM_CLOSE消息 4.6.3WM_QUERYENDSESSION消息 4.6.4WM_DESTROY消息 4.6.5WM_NCDESTROY消息 第五章 图形设备接口(GDI)、颜色及字体 5.1设备环境类 5.1.1显示设备环境类CClientDC和CWindowDC 5.1.2构造和析构CDC对象 5.1.3设备环境的状态 5.1.4CPaintDC类 5.2GDI对象 5.2.1GDI对象的构造与析构 5.2.2跟踪GDI对象 5.2.3库存的GDI对象 5.2.4GDI选择的有效期 5.3Windows的颜色映射 5.3.1标准视频图形阵列(V以)显示卡 5.3.2256色显示卡 5.3.316位颜色显示卡 5.3.424位颜色显示卡 5.4字体 5.4.1字体是GDI对象 5.4.2选择字体 5.4.3打印字体 5.4.4 显示字体 5.4.5显示器的逻辑英寸和物理英寸 5.4.6计算字符高度 5.5EXO5A示例程序 5.5.1EX05A程序的组成元素 5.6EX05B程序 5.6.1EX0 5B程序的组成元素 5.7EX05C示例程序――再次使用CScrollView 5.7.1EX0 5C程序的组成元素 5.7.2CScrollView的SetScaleToFitSize模式 5.7.3在滚动视图中使用逻辑twips映射模式 第六章 模式对话框和Windows通用控件 6.1模式和无模式对话框 6.2资源和控件 6.3模式对话框的编程 6.4包罗万象的对话框――EX06A示例程序 6.4.1创建对话框资源 6.4.2ClassWizard和对话框类 6.4.3将对话框与视图相连接 6.4.4深入理解EX06A应用程序 6.5对话框程序的改进 6.5.1获得OnOK退出控制 6.5.2OnCancel处理 6.5.3和滚动条控件挂上钩 6.6控件的标识:CWnd指针和控件ID 6.7设置对话框的背景色和其中控件的颜色 6.8在对话框窗口内绘图 6.9在运行时加入对话框控件 6.10利用其他的控件特性 6.11Windows通用控件 6.11.1进度指示器控件 6.11.2滑杆条(Trackbar)控件 6.11.3微调按钮控件 6.11.4列表控件 6.11.5树状控件 6.11.6WM NOTIFY消息 6.12EX06B示例程序 6.13其他Windows 通用控件 第七章 无模式对话框和Windows通用对话框类 7.1无模式对话框 7.1.1创建无模式对话框 7.1.2用户定义的消息 7.1.3对话框的归属 7.1.4无模式对话框的例子――EX07A 7.2CFormView类――另外一种可供选择的无模式对话框 7.3Windows通用对话框 7.3.1直接使用CFileDialog类 7.3.2从通用对话框类进行派生 7.3.3嵌套对话框 7.3.4使用CFileDialog的一个例子――EX07B 7.3.5CFileDialog的其他可定制特性 第八章 使用ActiveX控件 8.1ActiveX控件和普通的Windows控件 8.1.1普通的Windows 控件――参考体系 8.1.2ActiveX控件与普通控件的相同点 8.1.3ActiveX控件与普通控件的不同点――属性和方法 8.2安装ActiveX控件 8.3日历控件 8.4ActiveX控件包容器编程 8.4.1属性访问 8.4.2ClassWizard为ActiveX控件产生的C++类 8.4.3AppWizard对ActiveX控件的支持 8.4.4ClassWizard和包容器对话框 8.4.5对话框类数据成员和控件类的用法 8.4.6映射ActiveX控件事件 8.4.7把ActiveX控件锁定在内存里 8.5EX08A示例程序――ActiveX控件对话框包容器 8.6ActiveX控件在HTML文件中的使用 8.7在运行时创建ActiveX控件 8.8EX08B示例程序――Web浏览器ActiveX控件 8.9EX08C示例程序――一个完整的双窗口浏览器 8.10图形属性 8.11约束属性――改变通知 8.12其他的ActiveX控件 第九章 Win32内存管理 9.1进程和内存空间 9.1.1Windows95进程地址空间 9.1.2WindowsNT进程地址空间 9.2虚拟内存如何工作 9.3VirtualAlloc函数――占用和保留内存 9.4Windows 堆和GlobalAlloc 函数族 9.5小内存堆,C++的new和delete操作符,_heapmin 9.6内存映射文件 9.7访问资源 9.8管理动态内存的一些提示 9.9常量数据的优化存储 第十章 位图 10.1GDI位图和与设备无关的位图 10.2彩色位图和单色位图 10.3使用GDI位图 10.3.1从资源中装人GDI位图 10.3.2显示映射模式的作用 10.3.3对位进行伸缩处理 10.3.4EX10A示例程序 10.4利用位图改进屏幕显示 10.4.1EX10B示例程序 10.4.2Windows动画 10.5DIB和CDib类 10.5.1关于调色板编程的术语 10.5.2DIB、象素和颜色表 10.5.3BMP文件中DIB的结构 10.5.4DIB访问函数 10.5.5CDib类 10.5.6DIB显示性能 10.5.7EX10C示例程序 10.6进一步使用DIB 10.6.1Load Image函数 10.6.2DrawDibDraw函数 10.7在按钮上设置位图 10.7.1EX10D示例程序 10.7.2进一步使用位图按钮 第十一章 Wind0ws消息处理和多线程编程 11.1Windows消息处理 11.1.1单线程程序处理消息的过程 11.1.2交出控制 11.1.3计时器 11.1.4EX11A示例程序 11.2空状态处理 11.3多线程编程 11.3.1编写辅助线程函数和启动线程 11.3.2主线程如何和辅助线程通话 11.3.3辅助线程如何和主线程通话 11.3.4EX11B示例程序 11.3.5用事件使线程同步 11.3.6EX11C示例程序 11.3.7线程阻塞 11.3.8排斥区 11.3.9互斥体(mutex)和信号 11.3.10用户界面线程(UI线程) 第三部分 文档-视图结构 第十二章 菜单、键盘加速键、复文本编辑控件和属性表 12.1主框架窗口和文档类 12.2Windows的菜单 12.3键盘加速键 12.4命令处理 12.4.1派生类中的命令消息控制 12.4.2更新命令用户界面消息控制函数 12.4.3对话框发送的命令 12.5应用程序框架的内含菜单项 12.6菜单项的允许/禁用 12.7MFC文本编辑选择 12.7.1CE出tView类 12.7.2CRichEditView类 12.7.3CRichEditCtrl类 12.8ex12A示例程序 12.9属性表 12.9.1创建属性表 12.9.2属性表数据交换 12.10改进EX12A示例程序 12.11Apply按钮的处理过程 12.12CMenu类 12.13创建浮动的弹出式菜单 12.14扩展命令处理 第十三章 工具栏和状态栏 13.1控制栏和应用程序框架 13.2工具栏 13.2.1工具栏位图 13.2.2按钮的状态 13.2.3工具栏和命令消息 13.2.4工具栏更新命令UI消息控制函数 13.3工具提示 13.4寻找主框架窗口 13.5EX13A工具栏示例程序 13.6状态栏 13.6.1状态栏的定义 13.6.2信息行 13.6.3状态指示器 13.6.4获得对状态栏的控制 13.7EX13B状态栏示例程序 第十四章 可重用框架窗口基类 14.1为什么可重用基类难以设计 14.2CPersistentFrame类 14.3CFrameWnd类和ActivateFrame成员函数 14.4PreCreateWindow成员函数 14.5Windows注册表 14.6使用CString类 14.7最大化窗口的位置 14.8控制栏状态和注册表 14.9静态数据成员 14.10默认窗口矩形 14.11EX14A示例程序 14.12MDI应用程序中的持续框架 第十五章 文档与视图的分离 15.1文档-视图之间的相互作用函数 15.1.1CView∷GetDocument函数 15.1.2CDocumeat∷UpdateAllViews 函数 15.1.3CView∷OnUpdate函数 15.1.4CView∷OnInitialUpdate函数 15.1.5CDocument∷OnNewDocument函数 15.2最简单的文档-视图应用程序 15.3CFormViiew类 15.4CObject类 15.5诊断信息转储 15.5.1TRACE宏 15.5.2atxDump对象 15.5.3信息转储环境及CObjct类 15.5.4未被删除对象的自动信息转储 15.6EX15A示例程序 15.7更加高级的文档-视图之间的相互作用 15.8CDocument∷DeleteContents函数 15.9CObList集合类 15.9.1对先人先出列表使用CObList类 15.9.2在COblIst中进行迭代――POSITION变量 15.9.3CTypedPtrList模板集合类 15.9.4信息转储环境及集合类 15.10 EX15B示例程序 15.10.1资源要求 15.10.2代码要求 15.10.3CStudentDoc 15.10.4CStudentView 15.10.5测试EX15B应用程序 15.11留给读者的两个练习 第十六章 读和写文档――SDI应用程序 16.1什么是序列化 16.1.1磁盘文件和归档(Archives) 16.1.2使类可序列化 16.1.3编写Serialize函数 16.1.4 从归档中载人――内嵌对象和指针 16.1.5使集合序列化 16.1.6Serialize函数和应用程序框架 16.2SDI应用程序 16.2.1Windows应用程序对象 16.2.2文档模板类 16.2.3文档模板资源 16.2.4SDI文档的多视图 16.2.5创建空文档――CWinApp∷OnFileNew函数 16.2.6文档类的OnNewDocument函数 16.2.7连接FileOpe n与序列化代码――OnFileOpen函数 16.2.8文档类的DeleteContents函数 16.2.9将FileSave和FileSaveAs与序列化代码相连接 16.2.10 文档的“脏”标志 16.3EX16A――序列化SDI示例程序 16.3.1CStudent 16.3.2CEx16aApp 16.3.3CFrameWnd 16.3.4CStudentDoc 16.3.5cStudentView 16.3.6测试EX16A应用程序 16.4从Explorer启动及拖放 16.4.1程序注册 16.4.2在文档上双击鼠标 16.4.3允许拖放 16.4.4程序启动参数 16.4.5试验用Explorer启动程序及拖放功能 第十七章 读和写文档――MDI应用程序 17.1MDI应用程序 17.1.1一个典型的具有MFC库风格的MDI应用程序 17.1.2MDI应用程序对象 17.1.3MDI文档模板类 17.1.4MDI框架窗口和MDI子窗口 17.1.5主框架和文档模板资源 17.1.6创建空文档――CWinApp OnFileNew函数 17.1.7为现有文档创建新的视图 17.1.8载人和存储文档 17.1.9多文档模板 17.1.10Explorer启动及拖放 17.2EX17A示例程序 17.2.1CEx17aApp 17.2.2CMainFrame 17.2.3CChildFrame 17.2.4 测试EX17A应用程序 第十八章 打印和打印预览 18.1Windows的打印 18.1.1标准打印对话框 18.1.2交互选择打印页码 18.1.3显示页和打印页 18.2打印预览 18.3有关打印机的程序设计 18.3.1打印机设备环境和CViewOnDraw函数 18.3.2CView OnPrint函数 18.3.3准备设备环境――CView OnPrePareDC函数 18.3.4打印任务的开始和结束 18.4EX18A示例程序――一个所见即所得的打印程序 18.5读取打印机矩形框 18.6再看模板集合类――CArray类 18.7EX18B示例程序――多页打印程序 第十九章 切分窗口和多视图 19.1切分窗口 19.2多视图选择 19.3动态和静态切分窗口 19.4EX19A示例程序――具有单个视图类的SDI动态切分 19.4.1与切分有关的资源 19.4.2CMainFrame 19.4.3测试EX19A应用程序 19.5EX19B示例程序――双视图类SDI静态切分 19.5.1CHexView 19.5.2CMainFrame 19.5.3测试EX19B应用程序 19.6EX19C示例程序――切换没有切分的视图类 19.6.1资源要求 19.6.2CMainFrame 19.6.3测试Ex19C应用程序 19.7Ex19D示例程序――多视图类MDI应用程序 19.7.1资源要求 19.7.2CEx19dApp 19.7.3CMainFrame 19.7.4测试EX19D应用程序 第二十章 上下文相关帮助 20.1Windows 的WinHe lp程序 20.1.1复文本格式(RTF) 20.1.2编写简单的帮助文件 20.1.3改进的TableOfContents 20.2应用程序框架与WinHelp 20.2.1调用WinHelp 20.2.2使用搜索字符串 20.2.3从应用程序的菜单调用WinHelp 20.2.4帮助上下文别名 20.2.5确定帮助上下文 20.2.6F1帮助 20.2.7Shift-F1帮助 20.2.8消息框帮助――AfxMessageBox 函数 20.2.9一般的帮助 20.3帮助示例――不需要任何编程 20.4MAKEHEL处理 20.5帮助命令处理 20.5.1F1处理过程 2.5.2Shift-F1处理过程 20.6帮助命令处理示例程序――EX20 B 20.6.1头文件要求 20.6.2CStringView 20.6.3CHexView 20.6.4资源要求 20.6.5帮助文件要求 20.6.6测试EX20B应用程序 第二十一章 动态连接库 21.1基本DLL理论 21.1.1导人如何与导出相匹配 21.1.2隐式连接和显式连接 21.1.3符号连接和序号连接 21.1.4DLL人口点――DllMain 21.1.5实例句柄――装载资源 21.1.6客户程序如何找到DLL 21.1.7调试DLL 21.2MFcDLL――扩展的和正规的 21.2.1共享的MFCDLL和WindowsDLL 21.2.2MFC扩展DLL――导出类 21.2.3MFC扩展DLL资源搜索的顺序 21.2.4EX21A示例程序――MFC扩展DLL 21.2.5EX21B示例程序――DLL测试客户程序 21.2.6MFC正规DLL――CWinApp派生类 21.2.7使用AFX_MANAGE_STATE宏 21.2.8MFC正规DLL资源搜索顺序 21.2.9EX21C示例程序――MFC正规DLL 21.2.10修改EX21B示例程序――加入代码以测试ex21c.dll 21.3自定义控件DLL 21.3.1什么是自定义控件 21.3.2自定义控件的窗口类 21.3.3MFC库和WndProc函数 21.3.4自定义控件通知消息 21.3.5发送给控件的用户定义消息 21.3.6EX2 1D示例程序――自定义控件 21.3.7再修改EX2 1B示例程序――加入代码以测试ex21d.dll 第二十二章 不带文档或视图类的MFC程序 22.1EX22A示例程序――一个基于对话框的应用程序 22.1.1应用程序类InitInstance函数 22.1.2对话框类和程序图标 22.2EX22B示例――一个SDI应用程序 22.2.1应用程序类InitInstance函数 22.2.2CMainFrame类 22.3EX22C示例程序――一个MDI应用程序 22.3.1应用类程序InitInstance函数 22.3.2CMainFrame类 22.3.3CChildFrame类 22.3.4资源要求 22.4定制(Custom)AppWizard 第四部分 ActiveX:组件对象模型、自动化和OLE 第二十三章 组件对象模型 23.1ActiveX技术背景 23.2组件对象模型(COM) 23.2.1COM所解决的问题 23.2.2COM的本质 23.2.3什么是COM接口 23.2.4IUnknown接口和QueryInterface成员函数 23.2.5引用计数:AddRdf和Release函数 23.2.6类厂(classfactory) 23.2.7CCmdTarget类 23.2.8EX23A示例程序――一个模拟的COM 23.3MFC库中实际的COM 23.3.1COM的CoGetClassObject函数 23.3.2COM和Windows注册表 23.3.3运行时对象注册 23.3.4COM客户程序如何调用进程内组件 23.3.5COM客户程序如何调用进程外组件 23.3.6MFC接口宏 23.3.7MFC的COleObjectFactory类 23.3.8AppWizard/ClassWizard对COM进程内组件的支持 23.3.9MFCCOM客户程序 23.3.10EX23B示例程序――MFCCOM进程内组件 23.3.11EX23C示例程序――MFCCOM客户 23.4包容、集合和继承 第二十四章 自动化 24.1C++与VisualBasicforApplications(VBA)之间的连接 24.2自动化客户和自动化组件 24.3MicrosoftExcel――一种比VisualBasic还好的VisualBasic 24.4属性(property)、方法(method)和集合 24.5自动化所解决的问题 24.6IDispatch接口 24.7自动化程序设计的选择 24.8MFCIDispatch的实现 24.9一个MFC自动化组件 24.10一个MFC自动化客户程序 24.11使用编译器#import指令的自动化客户程序 24.12VARIANT类型 24.13COleVariant类 24.14Invoke的参数和返回值的类型转换 24.15自动化示例 24.15.1EX24A自动化组件EXE示例――不带任何用户界面 24.15.2EX24B自动化组件DLL示例程序 24.15.3EX24CSDI自动化组件EXE示例――带用户界面 24.15.4EX24D自动化客户示例程序 24.15.5EX24E自动化客户示例程序 24.16VBA早绑定 24.16.1注册类型库 24.16.2组件如何注册自己的类型库 24.16.3ODL文件 24.16.4Excel如何使用类型库 24.16.5为什么使用早绑定 24.16.6客户-组件的快速连接 第二十五章 统一数据传输――剪贴板传输以及OL拖放 25.1IDataO bject接口 25.2IDataObject如何增强标准剪贴板的支持 25.3FORMATETC和STGMEDIUM结构 25.3.1FORMATETC 25.3.2STGMEDTUM 25.3.3IDataObject接口成员函数 25.4MFC统一数据传输支持 25.4.1COleDataSource类 25.4.2COleDataObject类 25.4.3MFC数据对象剪贴板传输 25.5MFCCRectTracker类 25.5.1CRectTracker类成员函数 25.5.2CRectTracker类矩形坐标转换 25.6EX25A示例程序――数据对象剪贴板 25.6.1CMainFrame类 25.6.2CE25aDoc类 25.6.3CEx25aView类 25.7MFC拖放 25.7.1传输的源方 25.7.2传输的目标方 25.7.3拖放的顺序 25.8EX25B示例程序――OLE拖放 25.8.1CEx25bDoc类 25.8.2CEx25bView类 25.9Windows应用程序和拖放――Dobjview 第二十六章 结构化存储 26.1复合文件 26.2存储(Storage)和IStorage接口 26.2.1获取IStorage指针 26.2.2释放STATSTG内存 26.2.3对存储对象的元素进行枚举 26.2.4进程间共享存储 26.3流(Stream)和IStream接口 26.3.1IStream接口成员函数 26.3.2IStream编程 26.4ILockBytes接口 26.5EX26A示例程序――结构化存储 26.5.1菜单 26.5.2CEx26aView类 26.5.3辅助线程 26.6结构化存储和持久COM对象 26.6.1IPersistStorage 接口 26.6.2IPersistStream接口 26.6.3IpersistStream编程 26.7EX2 6B示例程序――一个持久DLL组件 26.8EX26C示例程序――一个持久存储客户程序 26.9复合文件碎片的处理 26.10复合文件的其他优点 第二十七章 OLE嵌入组件和包容器 27.1嵌入和实地激活(可视编辑) 27.2最小服务器和完备服务器(组件)――链接 27.3可视编辑前景暗淡的一面 27.4Windows 图元文件和内嵌对象 27.5组件程序的MFCOLE结构 27.6EX27A示例程序――MFC实地激活最小服务器 27.6.1MDI嵌入组件 27.6.2实地组件调整大小的思路 27.7包容器-组件相互作用 27.7.1使用组件的IOleObject接口 27.7.2装人和保存组件自身的数据――组件文档 27.7.3剪贴板数据传输 27.7.4获得组件的图元文件 27.7.5进程内控制器的角色 27.8组件状态 27.8.1包容器接口 27.8.2通报连接 27.8.3剪贴板图元文件 27.9接口简要说明 27.9.1IOleObject接口 27.9.2IViewObject2接口 27.9.3IOleClientSite接口 27.9.4IAdviseSink接口 27.10OLE辅助函数 27.11OLE嵌入包容器应用程序 27.11.1MFC对OLE包容器的支持 27.11.2一些包容器限制 27.11.3包容器特性 27.12EX27B示例程序――嵌入包容器 27.12.1CEx27bView类 27.12.2CEx27bDoc类 27.13 EX27C示例程序――OLE嵌入组件 27.13.1CEx27cView类 27.13.2CEx27cDoc类 第五部分 数据库管理 第二十八章 MicrosoftODBC数据库管理 28.1数据库管理的优势 28.2结构化查询语言 28.3ODBC标准 28.3.1ODBC结构 28.3.2ODBCDK编程 28.4MFCODBC类――CRecordset和CDatabase 28.4.1记录集中关于行的计数 28.4.2处理odbc异常 28.5学生注册数据库 28.6EX28A记录集示例程序 28.7Ex28A示例程序中的元素 28.7.1记录集类与应用程序之间的连接 28.7.2CEx28aView类的OnInitialUpdate成员函数 28.7.3CEx28aView类的OnDraw成员函数 28.8筛选器和排序字符串 28.9连接两个数据库表 28.10MFCCRecordView类 28.11EX28B记录查看示例程序 28.12多记录集 28.12.1EX28C多记录集示例程序 28.12.2参数化查询 28.13ODBC多线程 28.14大批行数据获取(bulkrow fetch) 28.15使用不带绑定的记录集 第二十九章 MicrosoftDataAccessObjbjects数据库管理 29.1DAO、COM和MicrosoftJet数据库引擎 29.2DAO和VBA 29.3DAO和MFC 29.4利用DAO可以打开什么样的数据库 29.5按ODBC模式使用DAO――快照和动态集 29.6DAO表类型记录集 29.7DAOQue ryDef和TableDef 29.8DAO多线程情况 29.9在滚动窗口中显示数据库的行 29.9.1滚动显示方法 29.9.2一个行-视图类 29.9.3基类和派生类的分工处理 29.9.4CRowView的纯虚成员函数 29.9.5其他的CRowView函数 29.10 动态记录集的编程 29.11EX29A示例程序 29.11.1CEx29aApp 29.11.2CMainFrame和CChildFrame 29.11.3CEx29aDoc 29.11.4CEx29aView 29.11.5CTableSelect 29.11.6CIsamSelect 29.12EX29A资源文件 29.13运行EX29A程序 第六部分 Interne t程序设计 第三十章 TCP/IP、Winsock和WinInet 30.1既针对COM也可以不需要COM 30.2Internet基础 30.2.1网络协议――层 30.2.2Internet协议 30.2.3用户报文协议 30.2.4IP地址格式――网络字节顺序 30.2.5传输控制协议 30.2.6域名系统 30.2.7HTTP基础 30.2.8FTP基础 30.2.9Internet和Intranet 30.3建立自己的价值$99的Intranet 30.3.1NT文件系统和文件分配表 30.3.2网络硬件 30.3.3对Windows进行网络配置 30.3.4Intranet的主机名――HOSTS文件 30.3.5测试Intranet――Ping程序 30.3.6只有一台计算机的Intranet――TCP/IP环形地址 30.4Winsock 30.4.1同步和异步Winsock编程 30.4.2MFCWinsock类 30.4.3BlockingSocket类 30.4.4一个简化了的HrTP服务器程序 30.4.5一个简化了的HTTP客户端程序 30.5用CHttpBlockingSocket创建一个Web服务器程序 30.5.1EX30A服务器限制 30.5.2Ex30A服务器结构 30.5.3使用Win32TransmitFile函数 30.5.4编译和测试EX30A 30.5.5使用Telnet 30.6用CHttpBlockingSocket创建一个Web客户端程序 30.6.1EX30AWinsock客户 30.6.2EX30A对代理服务器的支持 30.6.3测试EX30AWinsock客户 30.7WinInet 30.7.1WinInet相对于Winsock的优势 30.7.2MFCWinInet类 30.7.3Intenet会话状态回调 30.7.4一个简化了的WinInet客户程序 30.8用MFcWinInet类创建一个Web客户 30.8.1Ex30AWinInetClient #1――使用CHttpConnection 30.8.2测试WinInetClient#1 30.8.3EX3 OAWinInetClient #2――使用OpenURL 30.8.4测试WinInetClient#2 30.9异步Moniker文件 30.9.1Moniker 30.9.2MFCCAsyncMonikerFile类 30.9.3在程序中使用CAsyncMonikerFile类 30.9.4 异步moniker文件和WinInet编程 第三十一章 MicrosoftInternetInformationServer编程 31.1IIs的替代产品 31.2MicrosoftIIS 31.2.1安装和控制IIS 31.2.2运行InternetServiceManager 31.2.3IIS的安全性 31.2.4IIS目录 31.2.5IIS日志记录 31.2.6测试IIS 31.3ISAPI服务器扩展 31.3.1通用网关接口和ISAPI 31.3.2一个简单的ISSAPI服务器扩展GET请求 31.3.3HTML窗体――GEt和POST 31.3.4编写ISAPI服务器扩展DLL 31.3.5MFCISAPI服务器扩展类 31.4一个实际的ISAPI服务器扩展――ex31a.dll 31.4.1第一步――获取定单 31.4.2第二步――处理确认窗体 31.4.3编译并测试ex31a.dll 31.4.4调试EX31ADLL 31.5ISAPI数据库访问 31.6使用HTTPCookie来连接事务 31.6.1Cookie如何工作 31.6.2ISAPI服务器扩展如何处理Cookie 31.6.3使用cookie的一些问题 31.7WWW鉴定 31.7.1基本鉴定 31.7.2WindowsNT问讯/应答鉴定 31.7.3安全套接字层(SSL) 31.8ISAPI过滤器 31.8.1编写ISAPI过滤器DLL 31.8.2MFCISAPI过滤器类 31.9ISAPI过滤器示例――ex3lb.dll、ex3lc.exe 31.9.1选择通知 31.9.2把事务数据发送到显示程序 31.9.3显示程序 31.9.4 编译并测试EX31BISAPI过滤器 第三十二章 ActiveX文档服务器和Internet 32.1ActiveX文档理论 32.1.1ActiveX文档服务器和OLE嵌入服务器 32.1.2从IE3中运行ActiveX文档服务器 32.1.3ActiveX文档服务器和ActiveX控件 32.1.4ActiveX文档服务器和包容器的OLE接口 32.1.5MFC对ActiveX文档服务器的支持 32.2ActiveX文档服务器示例程序EX32A 32.2.1EX32A第一阶段――简单的服务器 32.2.2调试ActiveX文档服务器 32.2.3Ex32A第二阶段――加入WinInet调用 32.3ActiveX文档服务器示例程序EX32B 32.3.1在程序控制下产生POST请求 32.3.2EX32B视图类 32.3.3编译并测试EX32B 32.3.4ActiveX文档服务器和VBScript 32.4进一步使用ActiveX文档服务器 附录A Microsoft基本类(MFc)库中的消息映射函数 附录B MFC库运行时类识型和动态对象创建
【展开】
内容简介
在前三版的基础上,本书向读者详尽地介绍了Visual C++开发系统和复杂的32位Windows编程技术,全面诠释了Microsoft 的这个强大而复杂的开发工具的功能。 本书从对Windows,Visual C++和应用程序框架的技术性概述入手,讨论了下列课题:基础知识——事件处理,GDI,对话框,内存管理,SDI和MDI,打印,以及帮助;高级课题——多线程,DIB,ODBC,DLL等等。
【展开】
下载说明

1、追日是作者栎年创作的原创作品,下载链接均为网友上传的的网盘链接!

2、相识电子书提供优质免费的txt、pdf等下载链接,所有电子书均为完整版!

下载链接