我在进行动态创建图层的时候,会重复进行创建,当第二次创建时,就会报错Non-Unique Name specified. (Name already in use by another object).我怎么判断这个图层已经创建,并且删除他?
CMapXLayerInfo LayerInfo ;
CMapXFields MapFields ;
try{
LayerInfo.CreateDispatch( LayerInfo.GetClsid ) ;
MapFields.CreateDispatch( MapFields.GetClsid );
MapFields.AddIntegerField( \"C_ID\" , TRUE ) ;
MapFields.AddStringField( \"Name\" , 32 ) ;
COleVariant vFields;
vFields.vt = VT_DISPATCH ;
vFields.pdispVal = MapFields;
vFields.pdispVal->AddRef;
LayerInfo.SetType( miLayerInfoTypeNewTable ); //如果是miLayerInfoTypeTemp则为临时图层
LayerInfo.AddParameter(\"Filespec\" , COleVariant(\"peirenlei\") );
LayerInfo.AddParameter(\"Name\" , COleVariant(\"peirenlei\") );
LayerInfo.AddParameter(\"Fields\", vFields );
//////////////////////////////////////////////
m_ctrlMapX.GetLayers.Add( LayerInfo ); //////////////////////////////////////////////
//当第二次创建时,就会报错Non-Unique Name specified. (Name already in use by another object).
//我怎么判断这个图层已经创建,并且删除他?
}
catch(COleDispatchException* e) {
e->ReportError;
e->Delete;
} catch(COleException* e) {
e->ReportError;
e->Delete;
}
------解决方案--------------------
不要用数字作为图层名..
判读图层是否存在我以前的方法很笨..遍历所有图层,看是否和要加的名称相同