具体描述
内容简介
本书是学习用MFC进行ObjectLinkingandEmbeding(OLE)程序设计的参考书。
首先介绍用MFC进行程序设计的一般技术,然后介绍用MFC设计OLE应用程序的技
术。本书是美国著名作者WilliamH.MurrayⅢ和ChrisH.Pappas的力作,是OLE程
序设计方面难得的一本好书。本书适用于任何用MFC设计OLE应用程序的读者。
作者简介
作 者 简 介
WilliamH.Murray.Ⅲ和ChrisH.Pappas是纽约Binghamton的S.U.N.Y.System的
计算机科学教授。他们写作了超过两打的获得高度评价的计算机书籍,包括三卷Osborne
WindowsProgrammingSeries、Windows3.1Programming、ApplicationProgrammingfor
WindowsNT、TheVisualC++Handbook和TheBorlandC++Handbook,现在已经再版
三次。
目录信息
献给我们的朋友
作者简介
介绍
第一章 面向对象概念介绍
1.1在同一芯片上运行一切
1.2一般的结构化程序设计
1.3转向面向对象程序设计
1.4使用C++进行面向对象程序设计
1.5面向对象的定义和术语
1.5.1类的层次
1.5.2封装
1.5.3继承
1.5.4多态性
1.5.5虚函数
1.6创建第一个C十十类
16.1在结构之外创建类
16.2C十十类的句法
1.6.3一个简单的类
第二章 开发面向对象的应用程序
2.1C++的类
2.2类的高级功能
2.2.1嵌套
2.2.2构造函数和析构函数
2.2.3类成员函数重载
2.2.4用友元函数访问私有的类变量
2.2.5使用this指针
2.3使用运算符重载
2.3.1运标符重载与函数调用
2.3.2重载的句法
2.4派生类
2.4.1派生类的句法
2.4.2创建派生类
2.5C++的I/O
2.6iostream类清单
2.6.1输入流类
2.6.2输出流类
2.6.3缓冲流类
2.6.4字符串流类
2.7在面向对象的环境中工作
2.8用C++设计的面向对象的堆栈
2.9用C十十开发面向对象的链表
2.9.1创建父类
2.9.2派生子类
2.9.3使用友元类
2.9.4分析整个程序
2.9.5链表的输出
第三章 Windows程序设计:Microsoft基础类库(MFCL)
3.1对基础类库的需求
3.2基本类库设计考虑
3.3主要的基本类库特点
3.4一切从CObject开始
3.5重要的基础库类
3.6一个简化的应用程序
3.6.1用SIMPLE.CPP 建立一个窗口
3.6.2运行SIMPLE.CPP
3.7简化的设计确保了方便的维护
第四章 开发基础类库应用程序
4.1简单的应用程序和模板
4.1.1理解MFCTEMP工程文件
4.1.2理解MFCTEMP.H头文件
4.1.3MFCTEMP.CPP 应用程序
4.1.4运行MFCTEMP
4.2窗口中的绘图元素
4.2.1MFCGDI.H头文件
4.2.2MFCGDI.CPP应用程序
4.2.3运行MFCGDI应用程序
4.3带菜单和对话框的条形图
4.3.1MFCBAR.H头文件
4.3.2MFCBARR.H资源头文件,MFCBAR.RC资源描述文件
和MFCBAR.DLG对话描述文件
4.3.3MFCBAR.CPP 应用程序文件
4.3.4运行MFCBAR
第五章 OL理概念及定义
5.1OLE是什么
5.1.1OLE2的功能
5.1.2嵌入
5.1.3被链接的应用程序
第六章 开发OLE包容器应用程序
6.1应用程序和类Wizard一瞥
6.1.1使用Wizard
6.1.2创建应用程序
6.1.3理解AppWizard代码
6.1.4在客户区内绘图
6.2建立包容器应用程序
6.2.1使用AppWixard
6.2.2AppWizard文件
6.2.3使用包容器和服务器应用程序
第七章 开发OLE服务器应用程序
7.1AppWizard的使用
7.1.1AppWizard文件
7.2使用服务器应用程序
7.3关于OLEAutomation(自动化)的一点说明
7.4现在该干什么
第八章 定制控件:概念和定义
8.1标准控件
8.2OLE定制控件
8.2.1OLE定制控件设计标准
8.2.2COleControl类
第九章 开发简单的定制控件
9.1用ControlWizard创建第一个定制控件
9.1.1使用ControlWizard缺省项
9.1.2理解ControlWizard的代码
9.2创建牛眼控件
9.2.1用ClassWizard修改形状、大小和颜色
9.2.2响应鼠标事件
9.3下一步干什么
第十章 开发更复杂的定制控件
10.1创建温度控件
10.1.1利用ClassWizord改变控件的形状大小和颜色
10.1.2对鼠标事件响应
10.1.3库存字体标题
10.1.4改变缺省的属性页
10.1.5数据联编
10.2TestContainer
10.3将MicrosoftAccess当作包容器使用
· · · · · · (收起)
读后感
用户评价
我特别关注这本书在控件设计模式上的推荐。书中似乎推崇一种较为传统的“面向消息”的事件驱动模型,这在处理大量并发事件流时,可能会导致代码逻辑复杂化和耦合度增高。我更希望看到作者能结合现代设计模式,比如MVVM或MVP在COM组件设计中的应用,来阐述如何将业务逻辑与UI展现彻底分离。例如,在自定义属性页的实现上,书中描述的方法相对繁琐,需要大量的API调用和回调函数的注册。我曾期待看到一种更简洁的、基于反射或元数据驱动的属性绑定机制,这样能大幅减少样板代码的编写量。此外,关于性能优化,书中提到了少量关于对象池的概念,但对于如何设计一个高效的、线程安全的OLE对象生命周期管理器,缺乏深入的探讨。特别是当涉及到COM对象的生命周期依赖于外部资源的获取和释放时,如何设计出原子性的操作,这本书没有给出明确的指导方针。对于期望构建高性能、可维护性强的控件库的读者,这部分内容略显单薄。
这本书的语言风格非常平易近人,即便是对于初次接触OLE编程的读者,也能很快跟上节奏。作者在解释复杂的概念时,总能找到非常贴切的比喻,这极大地降低了学习曲线。然而,这种“易懂”的代价可能在于牺牲了一定的技术精度和全面性。我发现书中对错误处理机制的探讨,主要集中在如何捕获和显示标准错误码,而对于异步操作中,如何优雅地处理异常传播路径,以及如何利用结构化异常处理(SEH)与COM的错误报告机制进行有效整合,介绍得较为简略。在涉及到用户界面定制化时,虽然提供了如何注册和加载控件的步骤,但对于如何根据不同的宿主环境动态调整控件的外观和行为(例如,如何适配高DPI设置下的渲染问题),书中给出的解决方案显得有些过时或过于简化。如果这本书能增加一个章节,专门讨论如何在现代操作系统特性下保持OLE/ActiveX组件的兼容性和安全性,那它的价值会大大提升。目前看来,它更侧重于“如何让它跑起来”,而非“如何让它在复杂环境下健壮地运行”。
这本书的配套资源——如果存在的话——以及示例代码的质量,是我在评估技术书籍时非常看重的一环。从书中提供的零散代码片段来看,它们多数是独立的、功能验证式的,缺乏一个完整的、可编译运行的“项目”骨架,这使得读者很难将各个知识点串联起来形成一个完整的应用概念。我期待看到的是,如何将OLE控件嵌入到Web浏览器(例如,使用`OBJECT`标签或现代的嵌入API)中进行交互,以及如何处理跨域安全限制和数据传输的性能瓶颈。书中对调试工具的使用,如Spy++,讲解得很基础,并没有展示如何利用更专业的COM调试工具来跟踪接口调用栈和HRESULT的流向。对于一个面向应用的指南,缺乏对实际部署和打包流程的指导也算是一个遗憾。例如,如何有效地进行控件的注册、卸载,以及如何处理不同版本的控件共存问题,这些都是实际工作中绕不开的环节,书中未能给予足够的篇幅。
这本书的封面设计得非常引人注目,采用了鲜明的色彩搭配和富有科技感的字体,让人在书店众多技术书籍中一眼就能注意到。我主要关注的是它在系统级编程和底层接口方面的讲解深度。初翻目录,我注意到它似乎对Windows API的调用细节着墨不多,更多的是偏向于上层应用框架的构建,这与我预期中能深入探讨COM/DCOM底层机制的期望略有偏差。例如,对于线程同步机制在OLE对象生命周期管理中的具体实现,我期望能看到更具操作性的代码示例,而不是仅仅停留在概念层面。书中对ActiveX控件与宿主环境(如VB6或Delphi)交互时的内存管理策略,介绍得比较概括,对于内存泄漏的排查和调试技巧,显得不够详尽。另外,对于现代C++环境下如何更安全、更面向对象地封装这些底层接口,这本书似乎没有给出太多前沿的指导。总体来说,它更像是一本面向快速原型开发和入门级应用的指南,对于追求极致性能和深度调试经验的资深开发者来说,可能需要搭配其他更底层的参考资料才能满足需求。我希望它能在数据序列化和跨进程通信(IPC)的OLE实现上,提供一些更具实战性的陷阱与优化方案。
从技术实现的深度来看,这本书在对早期Windows平台特性的兼容性介绍上花费了较多的篇幅,这对于只关注最新开发环境的工程师来说,可能有些冗余。例如,关于如何处理32位和64位环境下的指针差异以及类型转换问题,虽然有所提及,但没有深入讲解如何利用预处理器宏或模板技术来实现跨平台的编译兼容。我最想在其中找到的是关于自定义数据类型(如Variant的深度使用)如何在不同编程语言间无缝传递的详尽规范和最佳实践。书中对`IDispatch`接口的描述停留在了基础的调用上,对于IUnknown的引用计数机制及其在复杂继承链中的潜在陷阱(如循环引用导致的对象泄漏),分析得不够透彻。我个人认为,一个好的OLE应用设计指南,必须能将这些C++层面的“暗坑”清晰地展示出来,并提供规避策略。这本书似乎更侧重于“功能实现”,而较少涉及“健壮性保障”。