阅读:5166回复:14
[讨论]在vc里创建了一个工程(使用ao)(二)
<P>4、在stdafx。h文件中添加如下代码:</P>
<P>#import "d:\Program Files\ArcGIS\COM\esriSystemUI.olb" raw_interfaces_only raw_native_types no_namespace named_guids exclude("OLE_COLOR", "OLE_HANDLE")<BR>#import "d:\Program Files\ArcGIS\COM\esriFramework.olb" raw_interfaces_only raw_native_types no_namespace named_guids exclude("OLE_COLOR", "OLE_HANDLE")</P> <P>#import "d:\Program Files\ArcGIS\COM\esriSystem.olb" raw_interfaces_only raw_native_types no_namespace named_guids exclude("OLE_COLOR", "OLE_HANDLE")<BR>#import "d:\Program Files\ArcGIS\COM\esriArcMapUI.olb" raw_interfaces_only raw_native_types no_namespace named_guids exclude("OLE_COLOR", "OLE_HANDLE")<BR>#import "d:\Program Files\ArcGIS\COM\esriCarto.olb" raw_interfaces_only raw_native_types no_namespace named_guids exclude("OLE_COLOR", "OLE_HANDLE")<BR>#import "d:\Program Files\ArcGIS\COM\esriCartoUI.olb" raw_interfaces_only raw_native_types no_namespace named_guids exclude("OLE_COLOR", "OLE_HANDLE")<BR>#import "d:\Program Files\ArcGIS\COM\esriCatalogUI.olb" raw_interfaces_only raw_native_types no_namespace named_guids exclude("OLE_COLOR", "OLE_HANDLE")<BR>#import "d:\Program Files\ArcGIS\COM\esriGeoDatabaseUI.olb" raw_interfaces_only raw_native_types no_namespace named_guids exclude("OLE_COLOR", "OLE_HANDLE")</P> <P>#import "D:\Program Files\ArcGIS\COM\esriGeoDatabase.olb" raw_interfaces_only raw_native_types no_namespace named_guids exclude("OLE_COLOR", "OLE_HANDLE")<BR>#import "D:\Program Files\ArcGIS\COM\esriGeometry.olb" raw_interfaces_only raw_native_types no_namespace named_guids exclude("OLE_COLOR", "OLE_HANDLE")</P> <P>#import "D:\Program Files\ArcGIS\COM\esriArcMap.olb" raw_interfaces_only raw_native_types no_namespace named_guids exclude("OLE_COLOR", "OLE_HANDLE")<BR>#import "d:\Program Files\ArcGIS\BIN\MapControl.ocx" raw_interfaces_only raw_native_types no_namespace named_guids <BR></P> <P>注意,如果是8.3,则只需要#inport esricore库文件即可</P> <P>5、在视图类中添加两个变量:</P> <P> IMapControl2Ptr m_ipMapControl;<BR> IMapPtr m_ipMap;</P> |
|
1楼#
发布于:2006-02-16 23:57
<P>6、在OnInitialUpdate()中添加如下代码:</P>
<P>CWnd* pWndCal = GetDlgItem(IDC_MAPCONTROL1);<BR> LPUNKNOWN pUnk = pWndCal->GetControlUnknown();<BR> pUnk->QueryInterface(IID_IMapControl2,(LPVOID*);m_ipMapControl);<BR> m_ipMapControl->get_Map(;m_ipMap);</P> |
|
2楼#
发布于:2006-02-16 23:58
<P>7、添加openfile消息函数,在view类里响应就行</P>
<P>8、编辑这个函数代码</P> |
|
3楼#
发布于:2006-02-16 23:58
<P>9、代码如下:</P>
<P>HRESULT hr;<BR> IActiveViewPtr ipActiveView(m_ipMap);<BR> IDisplayPtr pDisp(ipActiveView);</P> <P> 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("选择数据"));</P> |
|
4楼#
发布于:2006-02-16 23:59
IEnumGxObjectPtr ipEnumGxObject;<BR> VARIANT_BOOL bResult;<BR> hr = ipGxDialog->DoModalOpen(0,;ipEnumGxObject,;bResult);<BR> if(FAILED(hr)) <BR> return;
|
|
5楼#
发布于:2006-02-16 23:59
<P> hr = ipEnumGxObject->Reset();<BR> IFeatureLayerPtr ipFeatureLayer(CLSID_FeatureLayer);<BR> <BR> IGxObjectPtr ipObject;<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;</P>
<P> IfeatureClassPtr ipFeatureClass(ipDataset);<BR> hr = ipFeatureLayer->featurefy_FeatureClass(ipFeatureClass);<BR> if(FAILED(HR))<BR> return;</P> <P> hr = ipFeatureLayer->put_Visible(VARIANT_TRUE);</P> <P> if(FALIED(HR))<BR> return;</P> <P> ILayerPtr ipLayer(ipFeatureLayer);<BR> hr = m_ipMap->AddLayer(ipLayer);<BR> if(FALIED(HR))<BR> return;</P> <P> }<BR> }<BR></P> |
|
6楼#
发布于:2006-02-16 23:59
<P>IenvelopePtr ipEnv;<BR> hr = ipActiveView->get_FullExtent(;ipEnv);<BR> if(FALIED(HR))<BR> return;</P>
<P> hr = ipActiveView->put_Full_Extent(ipEnv);<BR> if(FALIED(HR))<BR> return;</P> <P> hr = ipActiveView->Refresh();<BR> if(FALIED(HR))<BR> return;</P> |
|
7楼#
发布于:2006-02-17 00:00
最后编译,然后点击打开,确定要打开的shp文件,打开就行了;
|
|
8楼#
发布于:2006-02-17 12:23
<P>这些代码在ArcObject开发一书中好象看到过,是否是此书上参考过的?</P>
|
|
9楼#
发布于:2006-02-22 18:19
<P>不错,顶先!</P><img src="images/post/smile/dvbbs/em01.gif" />
|
|
上一页
下一页