默认头像
路人甲
路人甲
  • 注册日期2004-04-19
  • 发帖数118
  • QQ
  • 铜币551枚
  • 威望0点
  • 贡献值0点
  • 银元0个
阅读:1701回复:0

如何从serverstyle文件中得到Symbol

楼主#
更多 发布于:2005-09-06 14:12

因工作需要,要从 ArcEngine的 serverStyle里面得到以前保存的Symbol,昨天试验了半天,没有成功,今天到END上找了个Java的例子,按照上面,终于成功了。

在这里严重批评 ESRI公司的帮助文档和函数命名,很多东西都没有写清楚(特别是参数的含义),很容易把人搞糊涂和微软公司的MSDN的帮助比起来,简直就是幼儿园水平!!!!。严重鄙视之。

IStyleGalleryPtr ipStyleGall(CLSID_ServerStyleGallery);
IStyleGalleryStoragePtr ipSGS(ipStyleGall);

HRESULT hr;
//只用用这种方法才能得到Symbol
ipSGS->AddFile(CComBSTR("C:\\Caves.ServerStyle"));
//本来是想用以下两个方法,可是死活读取不到里面的内容,严重鄙视之
// hr = ipStyleGall->ImportStyle(CComBSTR("C:\\Caves.ServerStyle"));
// hr = ipStyleGall->LoadStyle(CComBSTR("C:\\Caves.ServerStyle"),CComBSTR("Marker Symbols"));

long lCount;
hr = ipStyleGall->get_ClassCount(;lCount);

IStyleGalleryClassPtr ipStyleGallClass;
CComBSTR bstrName;

for(int i=0 ;i{
hr = ipStyleGall->get_Class(i,;ipStyleGallClass);
hr =  ipStyleGallClass->get_Name(;bstrName);

IEnumStyleGalleryItemPtr ipEnumStyleGallItem;

//第一个参数是Class名字,第二个参数未搞明白,第三个参数是 category名字

//严重鄙视他的帮助说明,强烈到极点
hr = ipStyleGall->get_Items(bstrName,CComBSTR(""),CComBSTR(""),;ipEnumStyleGallItem);
 
IStyleGalleryItemPtr ipStyleGallItem;
hr = ipEnumStyleGallItem->Next(;ipStyleGallItem);
while (ipStyleGallItem)
{
  IUnknownPtr ipUnknowed;
  ipStyleGallItem->get_Item(;ipUnknowed);
  ISymbolPtr ipSymbol(ipUnknowed);
 
  if(ipSymbol)
 {
...做你想做的操作
 }
ipEnumStyleGallItem->Next(;ipStyleGallItem);
}
}

喜欢0 评分0
默认头像

返回顶部