20楼#
发布于:2006-11-25 22:11
AO用起来不难,理解起来很难!
|
|
21楼#
发布于:2006-08-27 17:38
<P>还是得先学COM</P>
|
|
22楼#
发布于:2006-08-21 15:37
<P>把while语句中的!去掉就可以了,甚么道理!</P>
|
|
23楼#
发布于:2006-08-17 17:16
<DIV class=quote><B>以下是引用<I>Yoyozwf</I>在2006-2-16 23:47:22的发言:</B><BR>
<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("选择数据"));<BR> // ipGxDialog->put_Title("选择数据");<BR>IEnumGxObjectPtr ipEnumGxObject;<BR>VARIANT_BOOL bResult;<BR>hr = ipGxDialog->DoModalOpen(0,;ipEnumGxObject,;bResult);<BR>if(FAILED(hr)) <BR> return;</P> <P>if(bResult == VARIANT_FALSE)<BR> return;</P> <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>}</P> <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;<BR></P> <P>这是一段添加shp文件的函数,可以在view类的openfile中添加,前提是创建一个vc工程,然后再stdafx中添加要用到的库文件esricore</P></DIV> <P>请问44楼的高手我使用你提供的代码,当执行到if(ipGxDataset !=0)<BR> {<BR>就跳过了,根本没有执行{}里面的语句!为什么啊?</P> |
|
24楼#
发布于:2006-08-17 16:23
<DIV class=quote><B>以下是引用<I>gm316</I>在2006-8-4 20:30:19的发言:</B><BR>
<P>47楼的问题是因为没有import有关的库</P> <P>其实很多库是分别import的</P> <P>看下ao文档就明白了</P> <P>IGxDialog是属于ArcCatalog的</P> <P>应该执行类似代码:</P> <P>#import "c:\ArcGIS\com\esriFramework.olb" raw_interfaces_only, raw_native_types, no_namespace, named_guids<BR>#import "c:\ArcGIS\com\esriCatalogUI.olb" raw_interfaces_only, raw_native_types, no_namespace, named_guids<BR>#import "c:\ArcGIS\com\esriCatalog.olb" raw_interfaces_only, raw_native_types, no_namespace, named_guids<BR></P> <P>俺目前在搞vc+ae,其实跟ao基本相同,功能反而少了不少,比如一些UI不可以用的</P> <P>象很好用的IIdentifyDialogPtr</P> <P>其实懂vb的代码,基本上转换为vc的就可以了,不过有时候方法会有小的差别,看懂文档就可以了</P></DIV> <P>我安装的是83版的并没有发现那个三个olb文件,怎么回事那?</P> |
|
25楼#
发布于:2006-08-17 12:35
<P>就看有没有兴趣了,现在学东西和做事,大多数人太浮躁,很难静下心来</P>
|
|
26楼#
发布于:2006-08-17 12:34
<P>VC+ArcEngine,开发其实也不难,</P>
<P>底层的工作人家都做掉了,我们只是做一下表面的工作</P> |
|
27楼#
发布于:2006-08-04 20:30
<P>47楼的问题是因为没有import有关的库</P>
<P>其实很多库是分别import的</P> <P>看下ao文档就明白了</P> <P>IGxDialog是属于ArcCatalog的</P> <P>应该执行类似代码:</P> <P>#import "c:\ArcGIS\com\esriFramework.olb" raw_interfaces_only, raw_native_types, no_namespace, named_guids<BR>#import "c:\ArcGIS\com\esriCatalogUI.olb" raw_interfaces_only, raw_native_types, no_namespace, named_guids<BR>#import "c:\ArcGIS\com\esriCatalog.olb" raw_interfaces_only, raw_native_types, no_namespace, named_guids<BR></P> <P>俺目前在搞vc+ae,其实跟ao基本相同,功能反而少了不少,比如一些UI不可以用的</P> <P>象很好用的IIdentifyDialogPtr</P> <P>其实懂vb的代码,基本上转换为vc的就可以了,不过有时候方法会有小的差别,看懂文档就可以了</P> |
|
28楼#
发布于:2006-07-22 11:56
我遇到的问题和47楼的完全相同,哪位高手帮帮忙吧,愁死我了.
|
|
29楼#
发布于:2006-07-07 16:51
<P>好好学习吧,我倒觉得VC好一些</P>
|
|