使用ATL开发COM组件
使用ATL开发COM组件之前,要对几个重要的类进行说明:
CComModule
这是ATL的中心模块类,它的作用有点像MFC中的CWinApp,但没有后者那么庞大。它和它导出的类主要负责处理引用技术、在本地服务器内的类厂注册以及管理自动注册和自动反注册的注册表管理程序间的协调。若要创建进程内组件,只需直接使用CComModule,但如果是创建本地组件,则需要派生CComModule。
CComObjectRoot 和 CComObjectRootEx
他们的基本功能是处理组件的引用计数并对聚合提供支持,其中后者是一个类模板,模板参数是线程模型,而前者是后者取一个默认的线程模型的实例。
CComCoClass
该类主要负责类厂的定义,并提供两个标准方法取得对象的CLSID和说明。
CComObject
它用于实现IUnknown接口,这个类比较特殊,因为它是一个模板类,需要从我们自定义的类继承,模板参数是自定义类的类名,它的代码不需要我们编写,由其内宏自动生成。
ATL创建的组件类必须从CComObjectRoot和CComCoClass派生出来,此外还必须从自定义组件类派生CComObject类。
在VS2008中开发ATL
创建一个ATL项目,名称叫A