先得说下GUID,它是Globally Unique Identifier的简称,中文翻译为“全球唯一标示符”,在Windows系统中也称之为Class ID,缩写为CLSID。对于不同的应用程序,文件类型,OLE对象,特殊文件夹以及各种系统组件,Windows都会分配一个唯一表示它的ID代码 CLSID是class ID的缩写,是一个128位的随机数,为了确保它的随机性,避免重复。。对于每个组件类,都需要分配一个唯一表示它的代码,就是ID,为了避免冲突,微软使用GUID作为CLSID,有生成GUID的函数,主要是根据当时的时间、机器地址等信息动态产生,理论上可保证全球唯一。
理解了clsid,再来说 getclsid 比如下面的例子:
//定义了点集
CMapXPoints l_oSlaveSerPts,l_oSlaveAllPts;
//定义了点
CMapXPoint l_oAllPt,l_oSerPt;
//定义了要素类型
CMapXFeature l_oPtlAllSlaFeat,l_oPtlSerSlaFeat;
//可以看下面的代码定义了变量后,创建相应对象,这时候CreateDispath参数里面获得的就//是CLSID,也就是说申请一个clsid,然后用它来创建对象,这里实际上涉及到COM组件的知识,。
if( !l_oSlaveSerPts.CreateDispatch(l_oSlaveSerPts.GetClsid()) ||
!l_oSlaveAllPts.CreateDispatch(l_oSlaveAllPts.GetClsid()) ||
!l_oAllPt.CreateDispatch(l_oAllPt.GetClsid()) ||
!l_oSerPt.CreateDispatch(l_oSerPt.GetClsid()) ||
!l_oPtlAllSlaFeat.CreateDispatch(l_oPtlAllSlaFeat.GetClsid())||
!l_oPtlSerSlaFeat.CreateDispatch(l_oPtlSerSlaFeat.GetClsid())
){
TRACE0( "Failed to Create slave object in CSiteGISView::DoDbCmp ");
return false;;
}
上面涉及到组件的知识,因为mapx就是一个activex控件,涉及到组件方面的知识,可以去找com组件方面的书或者资料来看看。
温馨提示:内容为网友见解,仅供参考