ATL简化版COM实现
ATL 的 COM 实现,真的是让人省心不少。之前写纯 COM,接口、引用计数、工厂对象全得自己来,一不小心就出 bug。用了 ATL 后,多重复的活都可以交给库里头的模板和宏搞定,像是CComCoClass
和OBJECT_ENTRY_AUTO
,用着挺顺手的,代码也清爽不少。
ATL 的类工厂设置其实还蛮有意思的。你定义完类,用CComCoClass
一包,基本就能自动注册到系统了。工厂模式、引用计数什么的都封装好了。想手动实现IClassFactory
也不是不行,但没必要,ATL 都帮你安排好了。
接口的事也简单。你声明个MyInterface
,用DECLARE_INTERFACE_
宏搞定结构,再用COM_INTERFACE_ENTRY
映射到类上。方法就是 C++函数,直接写业务逻辑就行,不用操心底层调用。
你要是搞跨进程通信,ATL 也挺好用的。线程模型可以直接设,比如CComObjectRootEx
后面跟个CComMultiThreadModel
,就表示支持多线程。要是是 STA,就换成CComSingleThreadModel
,几行代码的事。
注册这块也蛮人性化的。用AtlRegisterModule
和AtlUnregisterModule
就可以操作注册表。宏和结构都封装好了,少掉不少手动写.rgs
文件的麻烦。
如果你想直接看看怎么做,不妨去翻下AtlBaseCom
这个示例项目。类、接口、注册全套流程都有,哪怕是初学者也能看明白。嗯,对了,调试时别忘了注册 COM 组件,不然调来调去也用不上。
,ATL 对于熟 C++但不想深陷 COM 细节的开发者来说,还是挺友好的。如果你最近正好要写个 COM 组件,建议你直接上手 ATL,效率高多了。
37.57KB
文件大小:
评论区