OCX的GUID对应关系梳理
1. 注册表中的GUID
{E0307BD0-8F81-4215-B33F-C468DDBF5C7C}
2. OCX项目中的GUID
1) xxxx.odl文件中:
[uuid(E0307BD0-8F81-4215-B33F-C468DDBF5C7C),
helpstring("ResOcxTest2 Control"), control ]
coclass ResOcxTest2
{
[default] dispinterface_DResOcxTest2;
[default, source] dispinterface_DResOcxTest2Events;
};
2) xxxctl.cpp文件中:
IMPLEMENT_OLECREATE_EX(CResOcxTest2Ctrl,"RESOCXTEST2.ResOcxTest2Ctrl.1",
0xe0307bd0, 0x8f81, 0x4215, 0xb3, 0x3f,0xc4, 0x68, 0xdd, 0xbf, 0x5c, 0x7c)
3. 与使用它的项目中的(如:对话框)自己生成的类GUID对应
CLSID const& GetClsid()
{
static CLSID const clsid
= { 0xe0307bd0, 0x8f81, 0x4215,{ 0xb3, 0x3f, 0xc4, 0x68, 0xdd, 0xbf, 0x5c, 0x7c } };
return clsid;
}
4. 由上得出:OCX控件修改ID的方法
vc++项目中替换两个地方:xxxx.odl文件和xxxctl.cpp文件
1) xxxx.odl文件中:
[uuid(E0307BD0-8F81-4215-B33F-C468DDBF5C7C),
helpstring("ResOcxTest2 Control"), control ]
coclass ResOcxTest2
{
[default] dispinterface_DResOcxTest2;
[default, source] dispinterface_DResOcxTest2Events;
};
2) xxxctl.cpp文件中:
IMPLEMENT_OLECREATE_EX(CResOcxTest2Ctrl,"RESOCXTEST2.ResOcxTest2Ctrl.1",
0xe0307bd0, 0x8f81, 0x4215, 0xb3, 0x3f,0xc4, 0x68, 0xdd, 0xbf, 0x5c, 0x7c)