今天心情不是很好,就简单的写写。
没有写完的明天再写。
com对象的创建说白了,就是要new。
但为了跨语言,它不能直接new,好多语言不会。
那怎么办,让别人来干,然后自己窃取别人的指针。
com就是这样一个东西。
ATL更是在它上面做了很多的工作,这些工作是为了配合com的理论流程,同样也为了配合它的众多的api
建立com ,当然是调用CoCreateInstance,这个是表面,不是真的,它在内部会调用一个叫作CoGetClassObject
的函数来生成它的类厂,然后由它的类厂来完成生成工作。
但是就调这个函数是不行的,dll 位置我们都不知道,程序是怎么调的呢
当然要注册。就是把信息写入注册表
在注册表中有你需要的所有信息。
ATL 给所有的类都写了一个 ATL_OBJMAP_ENTRY的结构,这个结构中就放着这个类所有的信息。
这个结构通过一个很强大的方法将信息直接写入了一个连续的数据段,以至于以后很多操作都通过遍历这个数据段来
执行
UpdataRegistry就是这个结构体中的函数,它就是用来注册的,复杂的我就不说了,直接使用一个DECLARE_REGISTRY
宏就可以完成了注册,这个宏配合一个rgs脚本就可以注册一个com
这个脚本就是向导里面经常出现的那个。
太困了,明天再写吧。