浏览本商品所属分类:首页 > 计算机 > 程序设计 > Visual Studio系列 > Visual C++.NET
《Microsoft Visual C++.NET技术内幕(第6版)》
Microsoft  Visual C++.NET技术内幕(第6版)
作者:GeorgeShepherdDavidKruglinski
译者:
开本:
ISBN:730208931
出版社:清华大学
出版日期:
装帧:
书夫曼编号:2364820
原价: 106
普通会员:99.11  一星会员:96.14
二星会员:94.15  三星会员:92.17

内容简介
本书是经典的''''''''Visual C++技术内幕''''''''的最新版。Visual C++一方面是一个C++实现,它提供了一个功能强大的集成开发环境;另一方面,它提供了一些C++类库,其中最具影响力的当然是MFC。随着Visual C++的发展,MFC已经不是Visual C++中唯一的类库了,其他还有ATL、STL等。此外,Visual C++还融合了大量的开发工具,特别是与Internet相关的开发支持。最后,本书也介绍了Visual C++对.NET的支持。总体而言,本书涵盖了当前最新的Visual C++的主流技术,既有对老技术的继承和更新,也有对新技术的精辟阐述。所以,阅读本书可以全面拓宽读者的知识面。从这层意义上讲,本书相当于Visual C++的百科全书,它浓缩了Visual C++的精华。
本书面向中级Visual C++程序设计人员,并可以作为高年级计算机专业学生及软件学院学生的程序设计教程。
自2000年6月微软宣布自己的.NET战略以来,在不到两年的时间里,.NET已经从战略变成现实。.NET带来了全新的、快速而敏捷的企业计算能力,也给软件开发商和软件开发人员提供了支持未来计算的高效Web 服务开发工具。作为微软.NET战略的重要组成部分--Visual Studio .NET (中文版)已经于2002年3月22日正式在中国推出。
Visual Studio .NET 是一个功能强大、高效并且可扩展的编程环境。它充分展现了应用程序开发的潜能,并提供了生成应用程序所需的工具和技术。这些应用程序将给当今的企业、机构提供强大的支持,并推动下一代基于 XML Web服务软件的发展。
有了 Visual Studio .NET,那些对全世界数百万的专业和业余程序员来说曾一度极端复杂、费时费力,甚至让人望而生畏的编程任务现在已不再神秘。更重要的是,Visual Studio .NET 使开发人员能运用既有的技能和知识来迎接新的编程挑战。
在10年前,Visual Basic 1.0成为数以百万计的开发人员的革命性的应用程序开发语言。现在,Visual Studio .NET 为未来的10年做好了准备。
微软出版社为了配合Visual Studio .NET的推广以及.NET技术的普及,邀请Visual Studio .NET项目开发组的核心开发人员和计算机图书专业作家精心编写了英文版《微软.NET程序员系列》丛书;该丛书自面市以来,在美国图书销量排行榜上一直高居前列,颇受好评,成为程序开发人员和网络开发人员了解.NET技术的权威工具书。尤其是《Microsoft .NET Framework 程序设计》一书,长期占据美国及欧洲此类书籍的排行榜冠军位置,程序开发人员不可不读此书。
清华大学出版社为了满足中国广大程序开发人员、网络开发人员学习最新技术的渴望,在微软出版社的配合下,从《微软.NET程序员系列》这套丛书中精选了40本50余本翻译成中文,以满足国内广大读者的需要。这套丛书阵容庞大且在不断扩充之中,几乎涵盖了.NET技术及其应用的各个方面;也正因为如此,翻译和编辑加工的工作量也大得惊人。但为了保持国外优秀技术图书的魅力,同时使读者领会新技术的真谛,本丛书的翻译和编辑都是经过严格筛选的、具有很高的翻译水平或丰富编辑经验的技术人员;另外,我们还聘请微软公司Visual Studio .NET产品组的技术专家审读每一本书,确保在技术上准确无误。
相信这套丛书定会帮助程序开发人员、网络开发人员以及那些具有一定编程基础的中、高级读者,快速、全面地掌握.NET技术,协助他们为技术生涯的下一个10年做好准备,为培养新一代软件人才,并推动中国软件产业的快速发展起到积极的作用!
译序
终于可以松一口气了,翻译一本上千页的图书实在是一个不小的工程。想起五年之前我第一次翻译计算机图书(本书的第四版)的时候,期望借这本书将自己的编程知识总结和回顾一下。时隔五年之后再翻译第六版,算?墙サ谋喑叹橛肿邢傅馗聪傲艘槐椋诜牍讨校行矶嗟胤接只狡鹆说背趺鱒isual C++和MFC时的那种感觉,因为那时摸索得来的经验与本书中的许多内容不谋而合,所以,每每碰到这种地方,总是感觉特别亲切,作为C++程序员的那种掌控一切的豪情油然而生,也真切地希望每一个Visual C++程序员都能够掌握这些技术,并享受这种因知识和技术而带来的人生体验和乐趣。当然,除了怀旧之外,本书中新增的内容又让我手心发痒,恨不得回到程序员的角色之中,利用这些新的技术(特别是.NET和Internet部分)做一个实实在在的项目。一本讲解技术的书能够将译者和读者的情绪带动起来,并且让他(们)产生亲近技术的欲望,这恐怕正是本书的魅力所在吧。
这几年来,关于Visual C++的书籍多如牛毛,但这本书一直占据着最重要的地位,我有幸翻译了本书的两个重要版本,所以借第六版中文版出版之际,谈谈我对本书的一些体会,算是译序吧。
一、本书与Visual C++的发展历程
了解本书历史的读者都知道,本书的开创者David Kruglinski在完成了第四版之后因为事故身亡,以后的版本是别人续写的。其中,第六版是由George Shepherd(MFC Internals的作者)续写的,以George对于MFC和Visual C++的理解深度,以及他的写作经验和教学经验,新版本只会增色而不会逊色。相信读者在读过这本书之后能够体会到这一点。
在我手上,除了英文第六版之外,还有本书的第二版(中文版)、第四版(中文版和英文版)。书很沉,很有分量,拿在手里沉甸甸的,当然更重的是内容。关于本书具体的内容请读者参看本书的目录或者引言部分。这里我想说明我对本书技术倾向的看法。
Visual C++开发环境包含哪些内容呢?这是被很多人误解的一个问题。有人把MFC和Visual C++等同起来,也有人把Visual C++和C++混淆起来,实际上,它们都有明确的分界线,在软件开发过程中,它们有各自的含义和用途。
Visual C++一方面是一个C++实现,它提供了一个功能强大的集成开发环境;另一方面,它提供了一些C++类库,其中最具影响力的当然是MFC。随着Visual C++的发展,MFC已经不是Visual C++中唯一的类库了,其他还有ATL、STL等。此外,Visual C++还融合了大量的开发工具,特别是与Internet相关的开发支持。本书几乎涵盖了所有这些内容,所以,阅读本书可以拓宽知识面。从这层意义上讲,本书相当于Visual C++的百科全书,它浓缩了Visual C++的精华。
Microsoft Visual C++的版本更新基本上反映了这10年来Windows平台上软件技术的发展历程。在Visual C++ 5.0版本之前,一切变化都在伴随着MFC的成熟与壮大,在此期间Visual C++主要用于开发桌面应用程序。到5.0版本之后,MFC已经不再是发展的重点,整体的发展呈多元化趋势,先是COM技术的普及,然后是Internet和Web开发技术的不断深入,最新版本中又引入了.NET框架的支持。
本书的发展历程也反映了Visual C++的技术路线。在本书第四版(对应于Visual C++ 5.0)出版的时候,桌面应用技术已经非常成熟,MFC结构完全定型,同时COM技术在Internet应用中大行其道,由此产生了一批Active技术,包括ActiveX控件、ASP、ADO、Active Document等。在第四版中我们可以看到关于这些技术的讲解。(第五版又引入了ATL相关的一些内容。)
现在呢,最大的变化,也是最激动人心的变化应该是.NET架构的引入,当然也随之带来了一大批新的技术。从长远的发展来看,.NET必将取代现有的大量应用技术,但不是所有,另一方面,新的技术和老的技术将会共存相当长的时间。
本书第六版基本上反映了现在的技术发展状况,MFC仍然存在,但是一些新兴的用户界面元素也被更新到MFC中。并且,本书也全面地讨论了COM和相关的开发支持,包括MFC和ATL对于COM的支持,这是目前仍然非常实用的两项技术。本书还讨论了针对Internet的程序设计技术,包括MFC对于Winsock和WinInet的支持,以及DHTML和ATL Server等。最后,本书也介绍了Visual C++对于.NET的支持,其中包括托管的C++以及如何用托管的C++来开发Windows Forms、ASP.NET和ADO.NET应用程序。本书所有这些内容涵盖了当前的主流技术,既有对老技术的继承和更新,又有对新技术的精辟阐述,所以,通过这本书你可以全面地学习到这些实用开发技术。
二、本书特色和新增内容
虽然这是一本再版的书,并且有差不多三分之二的内容与以前的版本(这里主要指第四版)相同,但是,它仍然有自己的特色以及新增的丰富内容。
本书的叙述风格基本上没有变化,仍然按照以前的模式,既有原理性的说明,也有指导性的介绍,还有很好的例子来帮助理解一些技术细节。并且,本书在讲解的时候也不啰嗦,与以前的版本相比,本书的内容增加了不少,但是篇幅基本上没有明显的增加。作者对于前面部分的传统内容有所精简,以便为后面的内容腾出空间。
本书新增的内容可以分几个方面来看:
1. 本书的前三部分内容主要针对桌面应用程序的开发,这既是MFC的传统优势,也是本书的传统优势。我们应该可以感受得到,这几年桌面应用技术还是有了一些变化的,特别是随着Windows 2000/XP的推?觯痪」躆FC的基本框架保持不变,但是在许多细微之处还是有了许多新增的界面元素,例如,除了SDI和MDI之外,Windows 2000又引入了一种新的界面风格:多顶级窗口界面(MTI)。而且Internet Explorer的新版本更是引入了许多新的UI元素,包括一些扩展的控件,以及Rebar等。Visual C++ .NET为这些新的特性提供了支持,本书也介绍了相应的编程技术。
2. 本书第四部分介绍了COM、自动化、ActiveX和OLE。COM是一项底层的组件技术,这部分介绍了COM的原理,以及MFC和ATL提供的最基本的支持。要想在不到300页的篇幅中全面地介绍所有这些技术是不可能的,但是本书这一部分中,不仅成功地叙述了这些基本知识,同时还介绍了几项关键应用技术,包括自动化、统一数据传输、用ATL来开发ActiveX控件,以及用OLE DB模板来开发OLE DB使用者和OLE DB提供者。
值得一提的是,除了传统的C++编程之外,Visual C++ .NET还引入了一种新的编程模式,被称为属性化的编程,用于支持COM组件的开发,它的基本思想是,允许C++类直接引用COM类和COM接口的一些属性,由编译器来解释这些属性并产生必要的代码,从而减轻了程序员在开发COM组件过程中一些不必要的负担。
3. Internet开发是一个不可错过的部分。本书第五部分在介绍MFC对Winsock和WinInet支持的基础上,又介绍了动态HTML和ATL Server。请读者不要将ATL Server与COM联系起来,实际上,ATL Server主要是针对IIS的一个开发工具,它被用来支持对于IIS服务器的扩展。
4. 最后一部分介绍Microsoft .NET程序设计。这是本书完全新增的内容,虽然.NET的标准语言应该是C#,但是Visual C++ .NET也提供了全面的支持,它是通过扩展标准C++而实现的,被称为托管的C++。被托管的代码将运行在.NET的公共语言运行时库之上,这是对组件技术的新发展,它使得应用程序运行在一个更加完善的管理环境之中,底层大量的设施可以被直接使用,并且软件的发布和协作将更加理想。对于开发人员呢,负担减轻了,他们可以更加关注于自己的应用,而无需为一些琐碎的细节操心。这一部分首先介绍了.NET中最为核心的公共语言运行时库,然后介绍了托管C++扩展,以及它的编程示例。最后用三章篇幅分别介绍了如何用托管C++来开发Windows Forms、ASP.NET和ADO.NET应用程序。
三、如何使用本书
面对一本涉及面如此广阔的计算机程序设计图书,我们该如何来使用呢?要想掌握书中每一项技术,不仅需要大量的时间,还需要扎实的基本功,但是,掌握这些技术对于把握现代软件设计环境又非常有帮助。
按照这本书的内容结构,读者当然可以有所取舍,但是最好的做法是,首先按顺序阅读一遍,如果有可能的话,对于其中一些关键例子最好配合在机器上进行实战练习。然后,对于感兴趣的话题可以仔细钻研,或者把这本书当作参考书,以后随时翻阅。
这本书讲解的深度属于中等程度,读者最好有一些C++和Windows应用开发方面的基础。对于书中讲述的每一项技术,本书也只是起到基本的引导作用,如果读者希望进一步深入钻研的话,需要阅读系统提供的源代码或者查阅MSDN Library中的详细讲解。但是,通过这本书,你可以快速地领会每一项技术。
因为这本书既有原理性的讲解,也有示例说明,甚至还有一步一步的实战过程。所以,本书也适合于被用作教材,可以针对研究生程序设计课程或者高年级本科生课程。我在本书刚刚出版之际,用本书作为北京大学软件学院研究生课程''''''''程序开发环境分析与实践''''''''的教材,取得了不错的效果。
曾经听人提到过,说这本书只是教会你怎么用向导工具来生成一个应用程序,离开了向导工具你还是什么也不会。这种观点并不正确,我说过这本书是原理和实战的结合,向导是提高开发效率的好帮手,但是如果你明白了原理,难道还会离不开向导吗?难道会看不懂代码吗?我很赞成使用Visual C++提供的向导,但是一定要知道这些向导帮你做了哪些事情,这很重要,否则当向导不工作的时候,你就失控了。
最后,我想说明一点,在翻译本书时,本书中的屏幕拷贝图以及Visual C++ .NET集成环境中的一些称谓(比如各种向导的叫法)我都保留了英文版本,而没有将它们转译过来。国内的大多数程序员都会使用中文版的Visual Studio .NET,Visual Studio .NET中文版几乎彻底地进行了汉化,所以,读者在阅读本书的时候也许会感到些微的不便。但是,本书在适当的地方作了?喙氐乃得鳎嘈耪庑┲杏⑽牟钜觳换嵊跋炷愕脑亩梁屠斫狻?
在本书的翻译过程中,我参照了第四版(中文版)的内容,发现了第四版中有不少错误,所幸的是,我这次还有机会把这些错误一一改正过来。同时也顺带着把原书中的一些错误也改正了。当然,翻译过程中必定会带来一些语言表达上的偏差,期望这些偏差不会影响您的阅读。
潘爱民
2003年2月14日
于北大燕园

顾客评论
>>浏览该商品的全部评论 >>我要发表评论

目录
第Ⅰ部分??Windows、Visual?C++?.NET和应用?程序框架基础
第1章??Windows和Visual?C++?.NET??3
1.1??Windows编程模型??3
1.1.1??消息处理??3
1.1.2??Windows的图形设备接口(GDI)??4
1.1.3??基于资源的程序设计??5
1.1.4??内存管理??5
1.1.5??动态连接库(DLL)??5
1.1.6??Win32应用程序编程接口??5
1.2??Visual?C++?.NET的组成??6
1.2.1??Visual?C++?.NET和创建过程??6
1.2.2??资源视图窗口和资源编辑器??9
1.2.3??C/C++编译器??9
1.2.4??源代码编辑器??9
1.2.5??资源编译器??10
1.2.6??连接器??10
1.2.7??调试器??10
1.2.8??MFC?Application?Wizard??11
1.2.9??Class?View??12
1.2.10??方案管理器??12
1.2.11??对象浏览器??12
1.2.12??UML工具??13
1.2.13??联机帮助??13
1.2.14??Windows诊断工具??14
1.2.15??MFC库版本7??14
1.2.16??ATL库版本7.0??14
1.2.17??.NET支持??15
第2章??Microsoft基本类库应用程序框架??16
2.1??为什么要使用应用程序框架???16
2.1.1??学习曲线??20
2.2??什么是应用程序框架???20
2.2.1??应用程序框架和类库??20
2.2.2??应用程序框架示例??21
2.3??MFC库消息映射??24
2.4??文档和视图??24
第Ⅱ部分??MFC基础
第3章??从MFC?Application?Wizard开始学习??29
3.1??什么是视图??29
3.2??MFC库应用程序的类型??30
3.3??MFC库支持的用户界面??30
3.4??Ex03a:“不做任何事情”的应用程序??30
3.5??CEx03aView视图类??34
3.6??在视图窗口内绘图:Windows?GDI??35
3.6.1??OnDraw成员函数??35
3.6.2??Windows设备环境??35
3.6.3??往Ex03a程序中添加绘制代码??36
3.7??资源编辑器简介??37
3.7.1??Ex03a.rc的内容??37
3.7.2??运行对话框资源编辑器??38
3.8??Win32?Debug目标和Win32?Release目标??39
3.9??对预编译头文件的理解??40
3.10??两种方法运行程序??42
第4章??Visual?C++?.NET向导??43
4.1??向导的类型??43
4.2??向导是如何工作的??44
4.3??创建一个向导??45
4.4??创建一个“用托管C++来开发Web应用”的向导??46
第5章??Windows消息映射??53
5.1??获取用户输入——消息映射函数??53
5.1.1??消息映射??54
5.1.2??保存视图的状态:类的数据成员??54
5.1.3??初始化视图类数据成员??55
5.1.4??使矩形区域无效的理论??55
5.1.5??Windows的客户区域??56
5.1.6??判断一个点是否在矩形内??56
5.1.7??判断一个点是否在椭圆内??57
5.1.8??Ex05a示例程序??57
5.1.9??对Ex05a使用Class?View??61
5.2??使用Windows映射模式??64
5.2.1??MM_TEXT映射模式??65
5.2.2??“固定比例”映射模式??66
5.2.3??“可变比例”映射模式??66
5.2.4??坐标转换??68
5.2.5??Ex05b示例程序——转换到MM_HIMETRIC映射模式??69
5.3??创建一个滚动视图窗口??71
5.3.1??窗口比您所见到的要大??71
5.3.2??滚动条??71
5.3.3??滚动方式的选择??71
5.3.4??OnInitialUpdate函数??72
5.3.5??接收键盘输入??72
5.3.6??Ex05c示例程序:滚动??72
5.4??使用其他Windows消息??76
5.4.1??WM_CREATE消息??76
5.4.2??WM_CLOSE消息??76
5.4.3??WM_QUERYENDSESSION消息??76
5.4.4??WM_DESTROY消息??77
5.4.5??WM_NCDESTROY消息??77
第6章??经典的GDI函数、字体和位图??78
6.1??设备环境类??78
6.1.1??显示设备环境类CClientDC和CWindowDC??79
6.1.2??构造和析构CDC对象??79
6.1.3??设备环境的状态??80
6.1.4??CPaintDC类??80
6.2??GDI对象??81
6.2.1??GDI对象的构造与析构??81
6.2.2??跟踪GDI对象??82
6.2.3??库存的GDI对象??82
6.2.4??GDI选择的有效期??83
6.3??字体??84
6.3.1??字体是GDI对象??84
6.3.2??选择字体??84
6.3.3??打印字体??85
6.3.4??显示字体??85
6.3.5??显示器的逻辑英寸和
物理英寸??86
6.3.6??计算字符高度??87
6.4??Ex06a示例程序??87
6.4.1??Ex06a程序的组成元素??90
6.5??Ex06b示例程序??91
6.5.1??Ex06b程序的组成元素??93
6.6??Ex06c示例程序——再次
使用CScrollView??94
6.6.1??Ex06c程序的组成元素??97
6.6.2??CScrollView的
SetScaleToFitSize模式??99
6.6.3??在滚动视图中使用逻辑
twips映射模式??99
6.7??位
图??99
6.7.1??GDI位图和与设备
无关的位图??99
6.7.2??彩色位图和单色位图??100
6.8??DIB和CDib类??101
6.8.1??关于调色板编程的术语??101
6.8.2??DIB、像素和颜色表??102
6.8.3??BMP文件中DIB
的结构??103
6.8.4??DIB访问函数??104
6.8.5??CDib类??104
6.8.6??DIB显示性能??110
6.8.7??Ex06d示例程序??111
6.9??进一步使用DIB??113
6.9.1??LoadImage函数??113
6.9.2??DrawDibDraw函数??114
6.10??在按钮上放置位图??115
6.10.1??Ex06e示例程序??116
6.10.2??进一步使用位图按钮??118
第7章??对话框??119
7.1??模式和无模式对话框??119
7.2??资源和控件??119
7.3??模式对话框的编程??120
7.4??包罗万象的对话框——Ex07a示例程序??121
7.4.1??创建对话框资源??122
7.4.2??创建对话框类??127
7.4.3??将对话框与视图相连接??131
7.4.4??深入理解Ex07a应用程序??133
7.5??Ex07a应用程序的改进??134
7.5.1??控制OnOK退出过程??134
7.5.2??OnCancel处理??135
7.5.3??和滚动条控件挂上钩??136
7.6??控件的标识:CWnd指针和控件ID??137
7.7??设置对话框的背景色和其中控件的颜色??138
7.8??在运行时加入对话框控件??139
7.9??利用其他的控件特性??139
7.10??Windows通用对话框??139
7.10.1??直接使用?CFileDialog类??140
7.10.2??从通用对话框类?进行派生??140
7.10.3??嵌套对话框??141
7.10.4??Ex07b示例程序:?CFileDialog??141
7.10.5??CFileDialog的其他可?定制特性??146
7.11??无模式对话框的编程??147
7.11.1??创建无模式对话框??147
7.11.2??用户定义的消息??147
7.11.3??对话框的所有
关系(Ownership)??148
7.11.4??Ex07c示例程序:无模式?对话框??148
第8章??通用控件??155
8.1??标准通用控件??155
8.1.1??进度指示器控件
(Progress?Control)??156
8.1.2??滑块控件(Slider?Control)??156
8.1.3??微调控件(Spin?Control)??157
8.1.4??列表控件??157
8.1.5??树状控件??157
8.1.6??WM_NOTIFY消息??158
8.2??Ex08a示例程序:标准通用控件??158
8.3??高级通用控件??171
8.3.1??日期时间选择器??171
8.3.2??月历控件??172
8.3.3??IP地址控件??173
8.3.4??扩展的组合框控件??173
8.4??Ex08b示例程序:
高级通用控件??174
第9章??使用ActiveX控件??187
9.1??ActiveX控件和普通的Windows
控件??187
9.1.1??普通的Windows控件:
一个参考框架??188
9.1.2??ActiveX控件与普通控件
的相同点??188
9.1.3??ActiveX控件与普通控件的
不同点:属性和方法??188
9.2??安装ActiveX控件??189
9.3??日?历?控?件??191
9.4??ActiveX控件包容器编程??192
9.4.1??属性访问??192
9.4.2??Visual?Studio?.NET为
ActiveX控件产生的
C++包装类??193
9.4.3??MFC?Application?Wizard
对ActiveX控件的支持??196
9.4.4??Add?Class?Wizard和
包容器对话框??196
9.4.5??把ActiveX控件锁定
在内存里??198
9.5??Ex09a示例程序:ActiveX控件
对话框包容器??198
9.6??ActiveX控件在HTML文件中
的使用??206
9.7??在运行时创建ActiveX控件??206
9.8??Ex09b示例程序:Web浏览器
ActiveX控件??207
9.9??图?形?属?性??211
9.10??可绑定的属性:变化通知??211
第10章??Win32核心内存管理??213
10.1??进程和内存空间??213
10.1.1??Windows?95/98进程
地址空间??214
10.1.2??Windows?NT/2000/XP的
进程地址空间??215
10.2??虚拟内存如何工作??216
10.3??VirtualAlloc函数——占用和
保留内存??218
10.4??Windows堆和GlobalAlloc
函数族??219
10.5??小内存堆,C++的new和delete
操作符,_heapmin??220
10.6??内存映射文件??221
10.7??访?问?资?源??222
10.8??管理动态内存的一些提示??222
10.9??常量数据的优化存储??223
第11章??Windows消息处理和多线
程编程??225
11.1??Windows消息处理??225
11.1.1??单线程程序处理
消息的过程??225
11.1.2??交出控制??226
11.1.3??计时器??226
11.1.4??Ex11a示例程序??227
11.2??空状态处理??230
11.3??多线程编程??231
11.3.1??编写辅助线程函数和
启动线程??231
11.3.2??主线程如何与辅助
线程通话??232
11.3.3??辅助线程如何与主
线程通话??233
11.3.4??Ex11b示例程序??234
11.3.5??用事件使线程同步??235
11.3.6??Ex11c示例程序??236
11.3.7??线程阻塞??238
11.3.8??临界区??238
11.3.9??互斥体(mutex)和信号
(semaphore)??240
11.3.10??用户界面线程
(UI线程)??240
第Ⅲ部分??MFC的文档-视图结构
第12章??菜单、键盘加速键、复文本
编辑控件和属性表??243
12.1??主框架窗口和文档类??243
12.2??Windows菜单??244
12.3??键盘加速键??245
12.4??命?令?处?理??246
12.4.1??派生类中的命令
消息控制??247
12.4.2??更新命令用户界面消息
控制函数??247
12.4.4??对话框发送的命令??248
12.5??应用程序框架的内置菜单命令??248
12.5.1??菜单命令的允许/禁用??249
12.6??MFC文本编辑选择??249
12.6.1??CEditView类??249
12.6.2??CRichEditView类??250
12.6.3??CRichEditCtrl类??250
12.7??Ex12a示例程序??250
12.8??属??性??表??256
12.8.1??创建属性表??256
12.8.2?属性表数据交换??256
12.9??改进Ex12a示例程序??257
12.9.1??Apply按钮的处理过程??269
12.10??CMenu类??269
12.11??创建浮动的快捷菜单??270
12.12??扩展的命令处理??271
第13章??工具栏和状态栏??273
13.1??控制栏和应用程序框架??273
13.2??工??具??栏??274
13.2.1??工具栏位图??274
13.2.2??工具栏按钮的状态??274
13.2.3??工具栏和命令消息??275
13.2.4??工具栏更新命令UI
消息控制函数??276
13.3??工?具?提?示??277
13.4??获得主框架窗口??277
13.5??Ex13a示例程序:使用工具栏??278
13.6??状??态??栏??282
13.6.1??状态栏的定义??282
13.6.2??信息行??283
13.6.3??状态指示器??283
13.6.4??对状态栏的控制??284
13.7??Ex13b示例程序:使用状态栏??285
13.8??Rebar??289
13.8.1??解剖一个rebar??290
13.9??Ex13c示例程序:使用rebar??290
第14章??可重用的框架窗口基类??294
14.1??为什么可重用基类难以设计??294
14.2??CPersistentFrame类??295
14.3??CFrameWnd::ActivateFrame
成员函数??295
14.4??PreCreateWindow成员函数??296
14.5??Windows注册表??297
14.6??使用CString类??299
14.7??最大化窗口的位置??300
14.8??控制栏状态和注册表??301
14.9??静态数据成员??301
14.10??默认窗口矩形??301
14.11??Ex14a示例程序:使用持续
框架窗口类??302
14.12??MDI应用程序中的持续框架??307
第15章??文档与视图的分离??308
15.1??文档-视图之间的相互作用函数??308
15.1.1??CView∷GetDocument
函数??309
15.1.2??CDocument∷
UpdateAllViews函数??309
15.1.3??CView∷OnUpdate函数??310
15.1.4??CView∷OnInitialUpdate
函数??310
15.1.5??CDocument∷
OnNewDocument函数??311
15.2??最简单的文档-视图
应用程序??311
15.3??CFormView类??312
15.4??CObject?类??313
15.5??诊断信息转储??313
15.5.1??TRACE宏??313
15.5.2??afxDump对象??314
15.5.3??信息转储环境及CObject
类??314
15.5.4??未被删除对象的自动
信息转储??315
15.6??Ex15a示例程序:简单的文档-
视图交互??318
15.7??更加高级的文档-视图交互??324
15.8??CDocument∷DeleteContents
函数??326
15.9??CObList集合类??326
15.9.1??对先入先出列表
使用CObList类??326
15.9.2??在CObList中进行迭代
——POSITION变量??328
15.9.3??CTypedPtrList
模板集合类??329
15.9.4??信息转储环境
及集合类??329
15.10??Ex15b示例程序:一个多视图
SDI应用程序??330
15.10.1??资源要求??332
15.10.2??代码要求??332
15.10.3??保护类型的虚函数??346
15.10.4??测试Ex15b应用程序??346
15.11??留给读者的两个练习??347
第16章??读和写文档??348
16.1??什么是序列化??348
16.1.1??磁盘文件和归档
(Archives)??349
16.1.2??使一个类可序列化??349
16.1.3??编写Serialize函数??350
16.1.4??从归档中载入:内嵌对象
和指针??351
16.1.5??使集合序列化??353
16.1.6??Serialize函数和应用程序
框架??353
16.2??SDI应用程序??354
16.2.1??Windows应用
程序对象??354
16.2.2??文档模板类??355
16.2.3??文档模板资源??356
16.2.4??SDI文档的多视图??357
16.2.5??创建空文档:CWinApp∷
OnFileNew函数??357
16.2.6??文档类的
OnNewDocument函数??358
16.2.7??连接File?Open与序列化
代码:OnFileOpen
函数??358
16.2.8??文档类的DeleteContents
函数??359
16.2.9??将File?Save和File?Save
As与序列化代码
相连接??359
16.2.10??文档的“脏”标志??360
16.3??Ex16a示例程序:支持序列化的
SDI程序??360
16.3.1??CStudent??361
16.3.2??CEx16aApp??361
16.3.3??CMainFrame??365
16.3.4??CEx16aDoc类??368
16.3.5??CEx16aView类??370
16.3.6??测试Ex16a应用程序??370
16.4??从Windows资源管理器
启动及拖放??370
16.4.1??程序注册??371
16.4.2??在文档上双击鼠标??371
16.4.3??允许拖放??372
16.4.4??程序启动参数??372
16.4.5??试验用Windows资源
管理器启动程序及拖放??372
16.5??MDI支持??372
16.5.1??一个典型的具有MFC
风格的MDI应用程序??373
16.5.2??MDI应用程序对象??374
16.5.3??MDI文档模板类??374
16.5.4??MDI框架窗口和MDI
子窗口??375
16.5.5??主框架和文档
模板资源??376
16.5.6??创建空文档??377
16.5.7??为已有的文档创建
新的视图??378
16.5.8??载入和存储文档??378
16.5.9??多文档模板??378
16.5.10??从Windows资源管理器
启动及拖放??379
16.6??Ex16b示例程序:
MDI应用程序??380
16.6.1??CEx16bApp??380
16.6.2??CMainFrame??384
16.6.3??CChildFrame??387
16.6.4??测试Ex16b应用程序??389
16.7??MTI支持??389
16.8??Ex16c示例程序:MTI
应用程序??389
16.8.1??测试Ex16c应用程序??391
第17章??打印和打印预览??392
17.1??基于Windows的打印??392
17.1.1??标准打印对话框??392
17.1.2??交互选择打印页码??393
17.1.3??显示页和打印页??394
17.2??打?印?预?览??394
17.3??打印机的程序设计??395
17.3.1??打印机设备环境和
CView::OnDraw函数??395
17.3.2??CView::OnPrint函数??395
17.3.3??准备设备环境:
CView::OnPrepareDC
函数??395
17.3.4??打印任务的
开始和结束??396
17.4??Ex17a示例程序:一个所见即
所得的打印程序??397
17.4.1??读取打印机矩形框??402
17.5??再看模板集合类:
CArray类??403
17.6??Ex17b示例程序:
多页打印程序??404
第18章??切分窗口和多视图??410
18.1??切?分?窗?口??410
18.2??关于视图的选择??411
18.3??动态和静态切分窗口??411
18.4??Ex18a示例程序:具有单个
视图类的SDI动态切分??412
18.4.1??与切分有关的资源??412
18.4.2??CMainFrame??413
18.4.3??测试Ex18a应用程序??413
18.5??Ex18b示例程序:双视图类SDI
静态切分??414
18.5.1??CHexView??414
18.5.2??CMainFrame??415
18.5.3??测试Ex18b应用程序??416
18.6??Ex18c示例程序:切换视图类但
不用切分窗口??416
18.6.1??资源要求??417
18.6.2??CMainFrame??417
18.6.3??测试Ex18c应用程序??418
18.7??Ex18d示例程序:多视图类MDI
应用程序??419
18.7.1??资源要求??419
18.7.2??CEx18dApp??420
18.7.3??CMainFrame??420
18.7.4??测试Ex18d应用程序??421
第19章??上下文相关帮助??423
19.1??WinHelp和HTML?Help??423
19.2??Windows的WinHelp程序??425
19.2.1??复文本格式(RTF)??425
19.2.2??编写简单的帮助文件??425
19.2.3??改进的目录??430
19.3??应用程序框架与WinHelp??430
19.3.1??调用WinHelp??431
19.3.2??使用搜索字符串??432
19.3.3??从应用程序的菜单来
调用WinHelp??432
19.3.4??帮助上下文别名??432
19.3.5??确定帮助上下文??433
19.3.6??F1帮助??434
19.3.7??Shift+F1?帮助??434
19.3.8??消息框帮助:AfxMessageBox
函数??434
19.3.9??一般的帮助??435
19.4??帮助示例:不需要任何编程??435
19.5??帮助命令处理??437
19.5.1??F1处理过程??437
19.5.2??Shift+F1处理过程??438
19.6??Ex19b示例程序:帮助
命令处理??438
19.6.1??头文件要求??439
19.6.2??CStringView??439
19.6.3??CHexView??440
19.6.4??资源要求??440
19.6.5??帮助文件要求??440
19.6.6??测试Ex19b应用程序??441
19.7??MFC和HTML?Help??441
19.8??Ex19c示例程序:
HTML?Help??442
第20章??动态链接库??444
20.1??基本DLL理论??444
20.1.1??导入如何与导出
相匹配??445
20.1.2??隐式链接和显式链接??446
20.1.3??符号链接和序号链接??446
20.1.4??DLL入口点:DllMain??447
20.1.5??实例句柄:装载资源??448
20.1.6??客户程序如何
找到DLL??448
20.1.7??调试DLL??449
20.2??MFC?DLL:扩展的和常规的??449
20.2.1??MFC扩展DLL:
导出类??450
20.2.2??MFC扩展DLL的资源
搜索序列??450
20.2.3??Ex20a示例程序:MFC
扩展DLL??451
20.2.4??Ex20b示例程序:DLL
测试客户程序??453
20.2.5??MFC常规DLL:
AFX_EXTENSION_
MODULE结构??454
20.2.6??使用AFX_MANAGE?_STATE宏??454
20.2.7??MFC常规DLL的资源
搜索序列??454
20.2.8??Ex20c示例程序:MFC常规DLL??455
20.2.9??修改Ex20b示例程序:?加入代码以测试?Ex20c.dll??457
20.3??自定义控件DLL??458
20.3.1??什么是自定义控件??458
20.3.2??自定义控件的窗口类??459
20.3.3??MFC库和WndProc?函数??459
20.3.4??自定义控件的?通知消息??460
20.3.5??发送给控件的用户定义消息??460
20.3.6??Ex20d示例程序:自定义控件??461
20.3.7??再修改Ex20b示例程序:加入代码以测试
Ex20d.dll??466
第21章??不带文档或视图类的MFC程序??469
21.1??Ex21a示例程序:一个基于对话框的应用程序??469
21.1.1??应用程序类的InitInstance函数??471
21.1.2??对话框类和程序图标??472
21.2?Ex21b示例程序:一个SDI
应用程序??473
21.3??Ex21c示例程序:一个MDI
应用程序??475
第四部分?COM、自动化、ActiveX和OLE??1
第22章?组件对象模型??1
22.1?ActiveX技术??1
22.2?什么是COM??2
22.3?Ex22a示例程序:一个模拟的COM??14
22.4?MFC库中实际的COM??23
22.5?Ex22b示例程序:MFC?COM进程内组件??34
22.6?Ex22c示例程序:MFC?COM客户??39
22.7?包容、聚合和继承??40
第23章?自动化??1
23.1?为VBA创建C++组件??1
23.2?自动化客户和自动化组件??2
23.3自动化接口??5
23.4?自动化程序设计的选择??6
23.5?一个MFC自动化组件??8
23.6?一个MFC自动化客户程序??9
23.7?使用了编译器的#import指令的自动化客户程序??12
23.8?VARIANT类型??13
23.9?COleVariant类??15
23.10自动化示例??18
23.11?VBA早绑定??67
第24章?统一数据传输:剪贴板传输以及OLE拖放??1
24.1?IDataObject接口??1
24.2?FORMATETC和STGMEDIUM结构??2
24.3?MFC对UDT的支持??4
24.4?MFC?CRectTracker类??9
24.5?Ex24a示例程序:数据对象剪贴板??11
24.6?MFC的拖放??20
24.7?Ex24b示例程序:OLE拖放??22
第25章?活动模板库介绍??1
25.1再谈COM??1
25.2?编写COM代码??4
25.3?COM基础设施??7
25.4?ATL简介??8
25.5?客户端ATL程序设计??10
25.6?服务器端ATL程序设计??27
25.7?属性化程序设计??54
第26章?ATL和ActiveX控件??1
26.1?什么是ActiveX控件??1
26.2?用ATL编写ActiveX控件??2
26.3?创建一个属性化的控件??46
第27章?OLE?DB模板??1
27.1?为什么使用OLE?DB??1
27.2?OLE?DB的基本结构??2
27.3?OLE?DB模板的基本结构??3
27.4?创建一个OLE?DB使用者??10
27.5?创建一个OLE?DB提供者??16
27.6?属性化的OLE?DB程序设计??27
第五部分?Internet程序设计??1
第28章?Internet基础??1
28.1?Internet入门??2
28.2?建立一个Intranet??11
28.3?Winsock程序设计??13
28.4?用CHttpBlockingSocket建立一个Web服务器??26
28.5?用CHttpBlockingSocket建立一个Web客户??29
28.6?WinInet??31
28.7?用MFC?WinInet类建立一个Web客户??35
28.8?异步Moniker文件??37
第29章?动态HTML简介??1
29.1?DHTML对象模型??1
29.2?Visual?C++?.NET和DHTML??5
29.3?Ex29a示例程序:MFC和DHTML??6
29.3?Ex29b示例程序:DHTML和MFC??7
29.4?Ex29c示例程序:ATL和DHTML??12
29.5?进一步的信息??14
第30章?ATL?Server??1
30.1?IIS??1
30.2?ISAPI服务器扩展??6
30.3?ATL?Server简介??9
30.4?Ex30a示例程序:一个ATL?Server?Web站点??16
第六部分?.NET和远景??1
第31章?Microsoft?.NET??1
31.1?Windows组件技术??1
31.2?公共语言运行时库??5
第32章?托管C++??1
32.1?公共语言运行时库与C++开发人员??1
32.2?为什么使用C++??2
32.3?托管的C++扩展??3
32.4?Visual?C++?.NET和托管扩展??4
32.5?Ex32a示例程序:一个托管C++?DLL程序集??5
32.6程序集的用法??12
32.7?Ex32b示例程序:一个托管的客户可执行程序??13
32.8?加入托管扩展支持??16
第33章?用托管C++进行Windows?Forms编程??1
33.1?Windows?Forms??1
33.2?Windows?Forms的不足??28
第34章?用托管C++进行ASP.NET编程??1
34.1?Internet作为开发平台??1
34.2?ASP.NET的演变??2
34.3?IIS的作用??3
34.4?ASP.NET的编译模型??4
34.5?Page类??4
34.6?HTTP传递路径??16
34.7?Web服务??23
第35章?用托管C++进行ADO.NET编程??1
35.1?托管的提供者??1
35.2?使用托管提供者??3
35.3?ADO.NET数据集??9
附录A?MFC库中的消息映射函数??1
附录B?MFC库运行时类识别和动态对象创建??1
B.1?运行时获取对象的类名??1
B.2?MFC?CRuntimeClass结构和RUNTIME_CLASS宏??2
B.3?动态创建??4
B.4?示例程序??4


Microsoft Visual C++.NET技术内幕(第6版)-相关图书
·人工智能
·计算机图形学教程(修订本)
·TCP/IP网络安全篇
·VISUALC/C++编程精选集锦网络与通信分册
·RedHatLinux9.0实用教程4273
·SQLServer2000数据库开发教程4170
·DREAMWEAVERMX动态网站开发标准教程(1CD)CX
·VisualBasic.NET程序设计经典
·XML实用培训教程4313
·医学细胞与分子生物学(第二版)
·网络工具经典范例50讲
·BorlandC++Builde6程序设计经典(含光盘)
·J2EE核心模式(影印版)
·UML参考手册
·有效需求分析(影印版)
·C#面向对象程序设计
·软件项目管理
·软件体系结构
·计算机组织与结构(1CD)网络版
·遥感数字图像处理
未分类图书 网站地图 全部分类