以下代码演示了如何加载指定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 ;
}