阅读:5237回复:14
[讨论]在vc里创建了一个工程(使用ao)(二)4、在stdafx。h文件中添加如下代码: #import "d:\Program Files\ArcGIS\COM\esriSystemUI.olb" raw_interfaces_only raw_native_types no_namespace named_guids exclude("OLE_COLOR", "OLE_HANDLE") #import "d:\Program Files\ArcGIS\COM\esriSystem.olb" raw_interfaces_only raw_native_types no_namespace named_guids exclude("OLE_COLOR", "OLE_HANDLE") #import "D:\Program Files\ArcGIS\COM\esriGeoDatabase.olb" raw_interfaces_only raw_native_types no_namespace named_guids exclude("OLE_COLOR", "OLE_HANDLE") #import "D:\Program Files\ArcGIS\COM\esriArcMap.olb" raw_interfaces_only raw_native_types no_namespace named_guids exclude("OLE_COLOR", "OLE_HANDLE") 注意,如果是8.3,则只需要#inport esricore库文件即可 5、在视图类中添加两个变量: IMapControl2Ptr m_ipMapControl; |
|
1楼#
发布于:2010-06-04 08:20
终于知道怎么错了,原来是没获得m_ipMap的值,只要在函数的第一行加上m_ipMap = m_ctrlMap.get_Map();就行了,m_ctrlMap是加入的空间,呵呵 |
|
2楼#
发布于:2010-06-04 07:41
这样好像会有内存错误啊,兄弟姐妹们帮帮忙 void MapComposer::addShpLayer() { HRESULT hr; IActiveViewPtr ipActiveView(m_ipMap); IDisplayPtr pDis;(ipActiveView); IGxDialogPtr ipGxDialog(CLSID_GxDialog); IGxObjectFilterCollectionPtr pGxObjectFilterCollect(ipGxDialog); IGxObjectFilterPtr ipGxObjectFilter(CLSID_GxFilterDatasets); pGxObjectFilterCollect->AddFilter(ipGxObjectFilter,TRUE); IGxObjectFilterPtr pGxObjectFilter(CLSID_GxFilterDatasets); pGxObjectFilterCollect->AddFilter(pGxObjectFilter,FALSE); ipGxDialog->put_AllowMultiSelect(VARIANT_TRUE); ipGxDialog->put_Title(CComBSTR("选择数据")); IEnumGxObjectPtr ipEnumGxObject; VARIANT_BOOL bResult; hr = ipGxDialog->DoModalOpen(0,;ipEnumGxObject,;bResult); if(FAILED(hr)) return; if(bResult == VARIANT_FALSE) return; hr = ipEnumGxObject->Reset(); IFeatureLayerPtr ipFeatureLayer(CLSID_FeatureLayer); IGxObjectPtr ipGxObject; while (!ipEnumGxObject->Next(;ipGxObject)) { IGxDatasetPtr ipGxDataset(ipGxObject); if(ipGxDataset != 0) { IDatasetPtr ipDataset; hr = ipGxDataset->get_Dataset(;ipDataset); if(FAILED(hr)) return; IFeatureClassPtr ipFeatureClass(ipDataset); hr = ipFeatureLayer->putref_FeatureClass(ipFeatureClass); if(FAILED(hr)) return; hr = ipFeatureLayer->put_Visible(VARIANT_TRUE); if(FAILED(hr)) return; ILayerPtr ipLayer(ipFeatureLayer);//这个地方出错 hr = m_ipMap->AddLayer(ipLayer); if(FAILED(hr)) return; } } IEnvelopePtr ipEnv; hr = ipActiveView->get_FullExtent(;ipEnv); if(FAILED(hr)) return; hr = ipActiveView->put_Extent(ipEnv); if(FAILED(hr)) return; hr = ipActiveView->Refresh(); if(FAILED(hr)) return; } 新建一个类,老是出现内存错误 |
|
3楼#
发布于:2008-04-14 19:23
![]() ![]() |
|
4楼#
发布于:2008-03-18 21:17
楼主代码利有些错误,下面我给出在9.0利面调试通过的代码,对于MapControl等空间设置同楼主: 在StdAfx.h中加入:(注意要按顺序,类库的路径自己换) #pragma warning(push) #import "com\esriSystem.olb" raw_interfaces_only,raw_native_types,no_namespace,named_guids,exclude("OLE_HANDLE","OLE_COLOR") #import "com\esriSystemUI.olb" raw_interfaces_only,raw_native_types,no_namespace,named_guids,exclude("OLE_HANDLE","OLE_COLOR") #import "com\esriGeoDatabase.olb" raw_interfaces_only,raw_native_types,no_namespace,named_guids,exclude("OLE_HANDLE","OLE_COLOR") #import "com\esriCarto.olb" raw_interfaces_only,raw_native_types,no_namespace,named_guids,exclude("OLE_HANDLE","OLE_COLOR") #import "com\esriCatalog.olb" raw_interfaces_only,raw_native_types,no_namespace,named_guids,exclude("OLE_HANDLE","OLE_COLOR")
在MyMapView.cpp中加入 #include "atlbase.h"//解决CComBSTR' : undeclared identifier问题 在添加shapefile的函数利面加入如下代码: void CMyMapView::OnAddmydata() IActiveViewPtr ipActiveView(m_ipMap); AfxMessageBox("Test One SUCCESS"); |
|
5楼#
发布于:2006-08-21 16:49
如果是arcgis9.0添加什么??? |
|
6楼#
发布于:2006-02-22 18:19
不错,顶先! ![]() |
|
7楼#
发布于:2006-02-17 12:23
这些代码在ArcObject开发一书中好象看到过,是否是此书上参考过的? |
|
8楼#
发布于:2006-02-17 00:00
最后编译,然后点击打开,确定要打开的shp文件,打开就行了;
|
|
9楼#
发布于:2006-02-16 23:59
IenvelopePtr ipEnv; hr = ipActiveView->put_Full_Extent(ipEnv); hr = ipActiveView->Refresh(); |
|