虽然我看了一些关于COM的书,但我还是对OLE、ActiveX、COM三者之间的区分不太清楚。从书上看,ActiveX是微软的产品命名,OLE是一种技术实现,而COM是一种标准。前两者都是构建在COM的规范上,OLE以前不是用COM来实现的,但现在已经改用COM来实现。不知我的理解对不对?
看完《COM原理及其应用》,我对为什么用ATL而不是MFC来实现一个COM控件了解一二。但有点不明白,用ATL Wizard很容易就创建一个COM控件,那么《COM本质论》和《深入解析ATL》两本这么厚的书还有必要读吗?我以前也读了两本关于COM原理的书,但除了对概念有点理解外,于编程好像没有什么太大的帮助。谁有好的意见请给我讲讲。谢谢!
看完《COM原理及其应用》,我对为什么用ATL而不是MFC来实现一个COM控件了解一二。但有点不明白,用ATL Wizard很容易就创建一个COM控件,那么《COM本质论》和《深入解析ATL》两本这么厚的书还有必要读吗?我以前也读了两本关于COM原理的书,但除了对概念有点理解外,于编程好像没有什么太大的帮助。谁有好的意见请给我讲讲。谢谢!
正如你对面向对像设计理解不够的话,一旦设计大一点的项目,你做出的类往往会是一堆"类垃圾"。
同时,在调试的时候也会少很多的茫然。
基础知识,什么时候都是很重要的。
但仅有基础知识,也是什么都做不成的。
主要适用的范围还是在可以(并且应该)使用面向接口编程的程序模型里。
如果你的程序能比较好的利用面向接口模型,那么就应该考虑使用COM。
长见识!请问 nelsonc():那你怎么实现的呢?
project当然用wizard生成。但是里面的COM对象就不一定了。
因为很多COM对象并不要求在系统中注册,不需要ClassFactory,或者多个对象共享通一个接口,甚至有的时候需要产生局部的COM对象(就像局部变量一样)。这时,就要自己写代码了。
用VC中的“建立ATL”对象,只能产生最规范的那种。
我推荐大家读一下《深入解析ATL》这本书。里面详细剖析了ATL的结构。只要理解了这些结构,就可以编写自己的类了,从而摆脱VC Wizard的束缚。
我甚至曾经在普通的Win32 Console程序中建立COM对象,这些都是用Wizard无法实现的。