在VC的Activex控件开发中注意idl文件中的4个GUID,是分别标识和区分别的Activex控件的标识

其中4个GUID在*Ctrl.cpp和*.cpp文件中又分别会再出现一次。如下图:

 1 // HIKActivex.idl : ActiveX 控件项目的类型库源。
 2 
 3 // 此文件将由 MIDL 编译器工具处理以
 4 // 产生类型库(HIKActivex.tlb),该类型库将成为
 5 // HIKActivex.ocx.
 6 
 7 #include <olectl.h>
 8 #include <idispids.h>
 9 
10 [ uuid(375327E5-66A3-440E-89C8-636DEBF47CA8), version(1.0),
11   control ]
12 library HIKActivexLib
13 {
14     importlib(STDOLE_TLB);
15 
16     //  CHIKActivexCtrl 的主调度接口
17     [ 
18         uuid(12E6718F-545D-4D00-AA3A-46E3D716CD2B)    
19     ]
20     dispinterface _DHIKActivex
21     {
22         properties:
23         methods:
24             [id(1), helpstring("注册用户到监控设备")] LONG IPNC_Login(BSTR strDVRIP, LONG iDVRPort, BSTR strUserName, BSTR strPwd, LONG iWaitTime, LONG* iError);
25             [id(2), helpstring("初始化监控设备")] VARIANT_BOOL IPNC_Init(void);
26             [id(3), helpstring("注销设备用户")] VARIANT_BOOL IPNC_Logout(void);
27             [id(4), helpstring("启动实时监视")] LONG IPNC_RealPlay(LONG iChan);
28             [id(5), helpstring("停止实时监视")] LONG IPNC_RealStop(void);
29             [id(6), helpstring("设置码流(0,主码流;1,子码流)")] void IPNC_SetBitStream(LONG iBitStreamType);
30             [id(9), helpstring("返回摄像头参数值")] void IPNC_GetDevConfig(LONG* iBright, LONG* iContrast, LONG* iSaturation, LONG* iSharpness);
31             [id(10), helpstring("设置摄像头参数")] VARIANT_BOOL IPNC_SetDevConfig(LONG iBright, LONG iContrast, LONG iSaturation, LONG iSharpness);
32     };
33 
34     //  CHIKActivexCtrl 的事件调度接口
35 
36     [ 
37         uuid(D56BD0F4-0107-4011-9168-0DBA557F4CA4)    
38     ]
39     dispinterface _DHIKActivexEvents
40     {
41         properties:
42             //  事件接口没有任何属性
43 
44         methods:
45             [id(1)] void ClickSel(LONG xCoordinate, LONG yCoordinate);
46             [id(3)] void RClickUp(LONG xCoordinate, LONG yCoordinate);
47             [id(5)] void FullScreen(LONG x, LONG y);
48     };
49 
50     //  CHIKActivexCtrl 的类信息
51     [
52         uuid(729ACD9B-4D64-4A39-AE23-4BAEC1D7B782)
53     ]
54     coclass HIKActivex
55     {
56         [default] dispinterface _DHIKActivex;
57         [default, source] dispinterface _DHIKActivexEvents;
58     };
59 
60 };

*Ctrl.cpp
 1 // 初始化类工厂和 guid
 2 
 3 IMPLEMENT_OLECREATE_EX(CHIKActivexCtrl, "HIKACTIVEX.HIKActivexCtrl.1",
 4     0x729acd9b, 0x4d64, 0x4a39, 0xae, 0x23, 0x4b, 0xae, 0xc1, 0xd7, 0xb7, 0x82)
 5 
 6 
 7 
 8 // 键入库 ID 和版本
 9 
10 IMPLEMENT_OLETYPELIB(CHIKActivexCtrl, _tlid, _wVerMajor, _wVerMinor)
11 
12 
13 
14 // 接口 ID
15 
16 const IID IID_DHIKActivex = { 0x12E6718F, 0x545D, 0x4D00, { 0xAA, 0x3A, 0x46, 0xE3, 0xD7, 0x16, 0xCD, 0x2B } };
17 const IID IID_DHIKActivexEvents = { 0xD56BD0F4, 0x107, 0x4011, { 0x91, 0x68, 0xD, 0xBA, 0x55, 0x7F, 0x4C, 0xA4 } };

*.cpp
1 CHIKActivexApp theApp;
2 
3 const GUID CDECL _tlid = { 0x375327E5, 0x66A3, 0x440E, { 0x89, 0xC8, 0x63, 0x6D, 0xEB, 0xF4, 0x7C, 0xA8 } };
4 const WORD _wVerMajor = 1;
5 const WORD _wVerMinor = 0;