http://peirenlei.iteye.com/blog/305057
以下代码演示了如何加载指定tab文件
int CHtGisClientView::LoadCustomLayers(
char *LayerDirPath)
{
CMapXLayerInfo layerInfo ;
// CMapXFields mapFields;
CStringArray tabFileList ;
try{
layerInfo.CreateDispatch( layerInfo.GetClsid() );
// mapFields.CreateDispatch( mapFields.GetClsid());
//
// mapFields.AddStringField("FID",254);
//
// COleVariant vFields;
// vFields.vt=VT_DISPATCH;
// vFields.pdispVal=mapFields;
// vFields.pdispVal->AddRef();
GetFilesOfPath( LayerDirPath , tabFileList ) ;
CString tabFileName , tabFileTitle ;
for ( int i = 0 ; i < tabFileList.GetSize() ; i++ ) {
tabFileName = tabFileList.GetAt( i ) ;
tabFileTitle = GetFileTitleFromFileName( tabFileName , FALSE );
layerInfo.SetType( miLayerInfoTypeTab ) ;
layerInfo.AddParameter("Filespec" , COleVariant(tabFileName) );
layerInfo.AddParameter("Name" , COleVariant(tabFileTitle) );
// layerInfo.AddParameter("Fields", vFields );
m_ctrlMapX.GetLayers().Add(layerInfo);
}
return R_OK ;
}
catch(COleDispatchException* e) {
e->ReportError();
e->Delete();
} catch(COleException* e) {
e->ReportError();
e->Delete();
}
return R_DEFAULT ;
}
{
CMapXLayerInfo layerInfo ;
// CMapXFields mapFields;
CStringArray tabFileList ;
try{
layerInfo.CreateDispatch( layerInfo.GetClsid() );
// mapFields.CreateDispatch( mapFields.GetClsid());
//
// mapFields.AddStringField("FID",254);
//
// COleVariant vFields;
// vFields.vt=VT_DISPATCH;
// vFields.pdispVal=mapFields;
// vFields.pdispVal->AddRef();
GetFilesOfPath( LayerDirPath , tabFileList ) ;
CString tabFileName , tabFileTitle ;
for ( int i = 0 ; i < tabFileList.GetSize() ; i++ ) {
tabFileName = tabFileList.GetAt( i ) ;
tabFileTitle = GetFileTitleFromFileName( tabFileName , FALSE );
layerInfo.SetType( miLayerInfoTypeTab ) ;
layerInfo.AddParameter("Filespec" , COleVariant(tabFileName) );
layerInfo.AddParameter("Name" , COleVariant(tabFileTitle) );
// layerInfo.AddParameter("Fields", vFields );
m_ctrlMapX.GetLayers().Add(layerInfo);
}
return R_OK ;
}
catch(COleDispatchException* e) {
e->ReportError();
e->Delete();
} catch(COleException* e) {
e->ReportError();
e->Delete();
}
return R_DEFAULT ;
}