http://blog.sina.com.cn/s/blog_5fe64ab30100fkjx.html
///
//读取属性数据,调试后可以运行
void CAsongGISView::OnMenuExportdata()
{
HRESULT hr;
IMapPtr ipMap;
ILayerPtr ipLyr;
ipMap = m_MapControl.GetMap();
if(ipMap)
hr = ipMap->get_Layer(0,&ipLyr);
IFeatureLayerPtr ipFeatLayer(ipLyr);
if(FAILED(hr))
{
AfxMessageBox("获取图层错误!");
return;
}
IFeatureClassPtr ipFeatureClass;
hr = ipFeatLayer->get_FeatureClass(&ipFeatureClass);
if (FAILED(hr))
{
AfxMessageBox("Failed to open the feature class.");
return;
}
IFeatureCursorPtr ipFeatureCursor;
ipFeatureClass->Search(0, VARIANT_TRUE, &ipFeatureCursor);
IFieldsPtr ipFields;
ipFeatureCursor->get_Fields(&ipFields);
long lFieldCount;
ipFields->get_FieldCount(&lFieldCount);
IFieldPtr ipField;
CComBSTR bsFieldNames;
CComBSTR bsFieldName;
for (int i = 0; i < lFieldCount; ++i)
{
ipFields->get_Field(i, &ipField);
ipField->get_Name(&bsFieldName);
bsFieldNames += CComBSTR(L" ");
bsFieldNames += bsFieldName;
}
IFeaturePtr ipFeature;
ipFeatureCursor->NextFeature(&ipFeature);
CComBSTR bsValues;
CComVariant varValue;
esriFieldType esriFldType;
while (ipFeature)
{
bsValues = CComBSTR(L" ");
for (int i = 0; i < lFieldCount; ++i)
{
ipFields->get_Field(i, &ipField);
ipField->get_Type(&esriFldType);
switch (esriFldType)
{
case (esriFieldTypeGeometry):
bsValues += CComBSTR(L"Shape ");
break;
default:
ipFeature->get_Value(i, &varValue);
if (varValue.vt != VT_BSTR)
varValue.ChangeType(VT_BSTR);
bsValues += varValue.bstrVal;
bsValues += CComBSTR(L" ");
break;
}
}
ipFeatureCursor->NextFeature(&ipFeature);
}
}