ziyou4246
路人甲
路人甲
  • 注册日期2006-08-05
  • 发帖数5
  • QQ
  • 铜币144枚
  • 威望0点
  • 贡献值0点
  • 银元0个
10楼#
发布于:2006-08-21 16:49
<P>如果是arcgis9.0添加什么???</P>
举报 回复(0) 喜欢(0)     评分
creakwu
路人甲
路人甲
  • 注册日期2006-03-29
  • 发帖数13
  • QQ
  • 铜币209枚
  • 威望0点
  • 贡献值0点
  • 银元0个
11楼#
发布于:2008-03-18 21:17
<P>楼主代码利有些错误,下面我给出在9.0利面调试通过的代码,对于MapControl等空间设置同楼主:</P>
<P>在StdAfx.h中加入:(注意要按顺序,类库的路径自己换)</P>
<P>#pragma warning(push)<BR>#pragma warning(disable:4192)<BR>#pragma warning(disable:4146)<BR>#pragma warning(disable:4099)</P>
<P>#import "com\esriSystem.olb" raw_interfaces_only,raw_native_types,no_namespace,named_guids,exclude("OLE_HANDLE","OLE_COLOR")</P>
<P>#import "com\esriSystemUI.olb" raw_interfaces_only,raw_native_types,no_namespace,named_guids,exclude("OLE_HANDLE","OLE_COLOR")<BR>#import "com\esriGeometry.olb" raw_interfaces_only,raw_native_types,no_namespace,named_guids,exclude("OLE_HANDLE","OLE_COLOR")</P>
<P>#import "com\esriGeoDatabase.olb" raw_interfaces_only,raw_native_types,no_namespace,named_guids,exclude("OLE_HANDLE","OLE_COLOR")<BR>#import "com\esriDisplay.olb" raw_interfaces_only,raw_native_types,no_namespace,named_guids,exclude("OLE_HANDLE","OLE_COLOR")</P>
<P>#import "com\esriCarto.olb" raw_interfaces_only,raw_native_types,no_namespace,named_guids,exclude("OLE_HANDLE","OLE_COLOR")<BR>#import "com\esriDataSourcesFile.olb" raw_interfaces_only,raw_native_types,no_namespace,named_guids,exclude("OLE_HANDLE","OLE_COLOR")<BR>#import "com\esriCatalogUI.olb" raw_interfaces_only,raw_native_types,no_namespace,named_guids,exclude("OLE_HANDLE","OLE_COLOR")</P>
<P>#import "com\esriCatalog.olb" raw_interfaces_only,raw_native_types,no_namespace,named_guids,exclude("OLE_HANDLE","OLE_COLOR")</P>
<P><BR>#pragma warning(pop)</P>

<P>在MyMapView.cpp中加入</P>
<P>#include "atlbase.h"//解决CComBSTR' : undeclared identifier问题</P>
<P>在添加shapefile的函数利面加入如下代码:</P>
<P>void CMyMapView::OnAddmydata() <BR>{<BR> // TOD Add your command handler code here<BR> HRESULT hr;</P>
<P> IActiveViewPtr ipActiveView(m_ipMap);<BR> IDisplayPtr pDisp(ipActiveView);<BR> <BR> IGxDialogPtr ipGxDialog(CLSID_GxDialog);<BR> IGxObjectFilterCollectionPtr pGxObjectFilterCollect(ipGxDialog);<BR> IGxObjectFilterPtr ipGxObjectFilter(CLSID_GxFilterDatasets);<BR> pGxObjectFilterCollect->AddFilter(ipGxObjectFilter,TRUE);<BR> IGxObjectFilterPtr pGxObjectFileter(CLSID_GxFilterFiles);<BR> pGxObjectFilterCollect->AddFilter(pGxObjectFileter,FALSE);<BR> ipGxDialog->put_AllowMultiSelect(VARIANT_TRUE);<BR> ipGxDialog->put_Title(CComBSTR("选择数据"));<BR> <BR> IEnumGxObjectPtr ipEnumGxObject;<BR> VARIANT_BOOL bResult;<BR> hr = ipGxDialog->DoModalOpen(0,;ipEnumGxObject,;bResult);<BR> if(FAILED(hr)) <BR>  return;<BR> <BR> hr = ipEnumGxObject->Reset();<BR> IFeatureLayerPtr ipFeatureLayer(CLSID_FeatureLayer);<BR> <BR> IGxObjectPtr ipGxObject;<BR> while(!ipEnumGxObject->Next(;ipGxObject))<BR> {<BR>  IGxDatasetPtr ipGxDataset(ipGxObject);<BR>  if(ipGxDataset !=0)<BR>  {<BR>   IDatasetPtr ipDataset;<BR>   hr = ipGxDataset->get_Dataset(;ipDataset);<BR>   if(FAILED(hr))<BR>    return;<BR>   <BR>   IFeatureClassPtr ipFeatureClass(ipDataset);<BR>   hr = ipFeatureLayer->putref_FeatureClass(ipFeatureClass);<BR>   if(FAILED(hr))<BR>    return;<BR>   <BR>   hr = ipFeatureLayer->put_Visible(VARIANT_TRUE);<BR>   <BR>   if(FAILED(hr))<BR>    return;<BR>   <BR>   ILayerPtr ipLayer(ipFeatureLayer);<BR>   hr = m_ipMap->AddLayer(ipLayer);<BR>   if(FAILED(hr))<BR>    return;<BR>   <BR>  }<BR> }<BR> <BR> IEnvelopePtr ipEnv;<BR> hr = ipActiveView->get_FullExtent(;ipEnv);<BR> if(FAILED(hr))<BR>  return;<BR> <BR> hr = ipActiveView->put_Extent(ipEnv);<BR> if(FAILED(hr))<BR>  return;<BR> <BR> hr = ipActiveView->Refresh();<BR> if(FAILED(hr))<BR>  return;<BR> </P>
<P> AfxMessageBox("Test One SUCCESS");<BR>}<BR></P>
举报 回复(0) 喜欢(0)     评分
seagatebarracud
路人甲
路人甲
  • 注册日期2008-03-25
  • 发帖数145
  • QQ
  • 铜币414枚
  • 威望0点
  • 贡献值0点
  • 银元0个
12楼#
发布于:2008-04-14 19:23
<img src="images/post/smile/dvbbs/em01.gif" /><img src="images/post/smile/dvbbs/em01.gif" />
举报 回复(0) 喜欢(0)     评分
yilang
路人甲
路人甲
  • 注册日期2009-04-24
  • 发帖数12
  • QQ
  • 铜币165枚
  • 威望0点
  • 贡献值0点
  • 银元0个
13楼#
发布于:2010-06-04 07:41
这样好像会有内存错误啊,兄弟姐妹们帮帮忙<div><div>void MapComposer::addShpLayer()</div><div>{</div><div> HRESULT hr;</div><div> IActiveViewPtr ipActiveView(m_ipMap);</div><div> IDisplayPtr pDis;(ipActiveView);</div><div> IGxDialogPtr  ipGxDialog(CLSID_GxDialog);</div><div> IGxObjectFilterCollectionPtr pGxObjectFilterCollect(ipGxDialog);</div><div> IGxObjectFilterPtr ipGxObjectFilter(CLSID_GxFilterDatasets);</div><div> pGxObjectFilterCollect->AddFilter(ipGxObjectFilter,TRUE);</div><div><br></div><div> IGxObjectFilterPtr pGxObjectFilter(CLSID_GxFilterDatasets);</div><div> pGxObjectFilterCollect->AddFilter(pGxObjectFilter,FALSE);</div><div> ipGxDialog->put_AllowMultiSelect(VARIANT_TRUE);</div><div> ipGxDialog->put_Title(CComBSTR("选择数据"));</div><div> IEnumGxObjectPtr ipEnumGxObject;</div><div> VARIANT_BOOL bResult;</div><div> hr = ipGxDialog->DoModalOpen(0,;ipEnumGxObject,;bResult);</div><div> if(FAILED(hr)) return;</div><div> if(bResult == VARIANT_FALSE) return;</div><div> hr = ipEnumGxObject->Reset();</div><div> IFeatureLayerPtr ipFeatureLayer(CLSID_FeatureLayer);</div><div> IGxObjectPtr ipGxObject;</div><div> while (!ipEnumGxObject->Next(;ipGxObject))</div><div> {</div><div> IGxDatasetPtr ipGxDataset(ipGxObject);</div><div> if(ipGxDataset != 0)</div><div> {</div><div> IDatasetPtr ipDataset;</div><div> hr = ipGxDataset->get_Dataset(;ipDataset);</div><div> if(FAILED(hr)) return;</div><div> IFeatureClassPtr ipFeatureClass(ipDataset);</div><div> hr = ipFeatureLayer->putref_FeatureClass(ipFeatureClass);</div><div> if(FAILED(hr)) return;</div><div> hr = ipFeatureLayer->put_Visible(VARIANT_TRUE);</div><div> if(FAILED(hr)) return;</div><div> ILayerPtr ipLayer(ipFeatureLayer);//这个地方出错</div><div> hr = m_ipMap->AddLayer(ipLayer);</div><div> if(FAILED(hr)) return;</div><div> }</div><div> }</div><div> IEnvelopePtr ipEnv;</div><div> hr = ipActiveView->get_FullExtent(;ipEnv);</div><div> if(FAILED(hr)) return;</div><div> hr = ipActiveView->put_Extent(ipEnv);</div><div> if(FAILED(hr)) return;</div><div> hr = ipActiveView->Refresh();</div><div> if(FAILED(hr)) return;</div><div>}</div></div><div>新建一个类,老是出现内存错误</div>
举报 回复(0) 喜欢(0)     评分
yilang
路人甲
路人甲
  • 注册日期2009-04-24
  • 发帖数12
  • QQ
  • 铜币165枚
  • 威望0点
  • 贡献值0点
  • 银元0个
14楼#
发布于:2010-06-04 08:20
终于知道怎么错了,原来是没获得m_ipMap的值,只要在函数的第一行加上m_ipMap = m_ctrlMap.get_Map();就行了,m_ctrlMap是加入的空间,呵呵<div><br><div><br></div></div>
举报 回复(0) 喜欢(0)     评分
上一页 下一页
游客

返回顶部