关于MFC 中COM借口的问题

来源:百度知道 编辑:UC知道 时间:2024/06/05 14:27:57
我用的是VS.net 2003 ,在MFC COM 编程中,我编的是DLL组件(常规DLL),我编写了一个接口IID_IPosition,而在我的.cpp文件中有句话
static const IID IID_IPosition = {0x692d03a4,0xc689,0x11ce,{0xb3,0x37,0x88,0xea,0x36,0xde,0x9e,0x4e}};
我知道在客户程序里,比如ClientView.cpp的开都部分也有这句话,估计是为了可以找到唯一标志的借口,我想问的是这32位数字唯一的吗?
比如我有个程序有2个COM接口,第一个接口是{0x692d03a4,0xc689,0x11ce,{0xb3,0x37,0x88,0xea,0x36,0xde,0x9e,0x4e}}
第二个接口就是{0x692d03a5,0xc689,0x11ce,{0xb3,0x37,0x88,0xea,0x36,0xde,0x9e,0x4e}}
第三第四……就依次类推?
另外,我在项目MyCom(常规DLL)中有个类 class CSpaceship: public CCmdTarget;Spaceship.cpp中的
宏IMPLEMENT_OLECREATE_FLAGS(CSpaceship,"MyCom.Spaceship",afxRegApartmentThreading,0xdf55c608,0x9598, 0x4edd, 0xb9,0xed, 0x91, 0x98, 0x42, 0x64, 0x71, 0xb3)
请问宏后面的32位数字是怎么得来的,也是唯一标识的吗?不同的程序用这个宏都是一样的数字吗?
谢谢一楼的回答。
我还想问下 那这些唯一的标志再哪可以查到啊?

这是唯一标志,每个接口都不一样的。在不同的机器上可以用是因为这些信息会注册到注册表中去。

你如果装了vc6,可以到开始菜单->vc6目录->vc tools->OLE/COM Object viewer查看你机器上注册的所有com的标志。

GUIDGEN只是生成唯一标志的工具。

GUID是一个128位的随机数,对于COM,任何的CLSID、IID都必须是唯一的,不能重复。VS有个专门用来随机产生GUID的程序,叫GUIDGEN,可以在安装目录去找找看。