阅读:1706回复:0
如何从serverstyle文件中得到Symbol
<P>因工作需要,要从 ArcEngine的 serverStyle里面得到以前保存的Symbol,昨天试验了半天,没有成功,今天到END上找了个Java的例子,按照上面,终于成功了。</P>
<P>在这里严重批评 ESRI公司的帮助文档和函数命名,很多东西都没有写清楚(特别是参数的含义),很容易把人搞糊涂和微软公司的MSDN的帮助比起来,简直就是幼儿园水平!!!!。严重鄙视之。</P> <P>IStyleGalleryPtr ipStyleGall(CLSID_ServerStyleGallery);<BR>IStyleGalleryStoragePtr ipSGS(ipStyleGall);<BR> <BR>HRESULT hr;<BR>//只用用这种方法才能得到Symbol<BR>ipSGS->AddFile(CComBSTR("C:\\Caves.ServerStyle"));<BR>//本来是想用以下两个方法,可是死活读取不到里面的内容,严重鄙视之<BR>// hr = ipStyleGall->ImportStyle(CComBSTR("C:\\Caves.ServerStyle"));<BR>// hr = ipStyleGall->LoadStyle(CComBSTR("C:\\Caves.ServerStyle"),CComBSTR("Marker Symbols"));</P> <P>long lCount;<BR>hr = ipStyleGall->get_ClassCount(;lCount);</P> <P>IStyleGalleryClassPtr ipStyleGallClass;<BR>CComBSTR bstrName;<BR> <BR>for(int i=0 ;i<lCount ;i++)<BR>{<BR> hr = ipStyleGall->get_Class(i,;ipStyleGallClass);<BR> hr = ipStyleGallClass->get_Name(;bstrName);</P> <P> IEnumStyleGalleryItemPtr ipEnumStyleGallItem;</P> <P>//第一个参数是Class名字,第二个参数未搞明白,第三个参数是 category名字</P> <P>//严重鄙视他的帮助说明,强烈到极点<BR> hr = ipStyleGall->get_Items(bstrName,CComBSTR(""),CComBSTR(""),;ipEnumStyleGallItem);<BR> <BR> IStyleGalleryItemPtr ipStyleGallItem;<BR> hr = ipEnumStyleGallItem->Next(;ipStyleGallItem);<BR> while (ipStyleGallItem)<BR> {<BR> IUnknownPtr ipUnknowed;<BR> ipStyleGallItem->get_Item(;ipUnknowed);<BR> ISymbolPtr ipSymbol(ipUnknowed);<BR> <BR> if(ipSymbol)<BR> {<BR> ...做你想做的操作<BR> }<BR> ipEnumStyleGallItem->Next(;ipStyleGallItem);<BR> }<BR>}<BR></P> |
|