怎么读取某一个图元的某一个字段的属性值?
方法1:利用CMapXDataset,CMapXFeature,CMapXField对象pdataset,pfeature,pfield:
COleVariant rowVt;
rowVt.vt = VT_DISPATCH;
rowVt.pdispVal = pfeature.m_lpdispatch;
rowVt.pdispVal -> AddRef();
COleVariant colVt;
colVt.vt = VT_DISPATCH;
colVt.pdispVal = pfield.m_lpdispatch;
colVt.pdispVal -> AddRef();
pdataset.GetValue(rowVt,colVt);
rowVt.vt = VT_DISPATCH;
rowVt.pdispVal = pfeature.m_lpdispatch;
rowVt.pdispVal -> AddRef();
COleVariant colVt;
colVt.vt = VT_DISPATCH;
colVt.pdispVal = pfield.m_lpdispatch;
colVt.pdispVal -> AddRef();
pdataset.GetValue(rowVt,colVt);
方法二:用CMapXDataset,CMapXRowValues,CMapXFeature,CMapXField对象的
Pdataset,Prowvalues,pfeature,pfield;
CMapXRowValues prowvalues;
CMapXField pfield;
CMapXFeature pfeature
CMapXDataset Pdataset;
Pdataset = player.GetDatasets().Item( 1 );
Pfeature = player.AllFeature().Item( 1 );
COleVariant f1Vt;
f1Vt.vt = VT_DISPATCH;
f1Vt.pdispVal = pfeature.m_lpDispatch;
f1Vt.pdispVal -> AddRef();
pfield = Pdataset.GetFields().Item( " Direction " );
COleVariant f2Vt;
f2Vt.vt = VT_DISPATCH;
f2Vt.pdispVal = pfield.m_lpDispatch;
f2Vt.pdispVal -> AddRef();
prowvalues = Pdataset.GetRowValues(f1Vt);
COleVariant v1;
v1 = prowvalues.Item(f2Vt).GetValue();
v1.ChangeType(VT_BSTR);
CString fd;
fd.Format( " %s " ,v1.bstrVal);
MessageBox(fd);
CMapXRowValues prowvalues;
CMapXField pfield;
CMapXFeature pfeature
CMapXDataset Pdataset;
Pdataset = player.GetDatasets().Item( 1 );
Pfeature = player.AllFeature().Item( 1 );
COleVariant f1Vt;
f1Vt.vt = VT_DISPATCH;
f1Vt.pdispVal = pfeature.m_lpDispatch;
f1Vt.pdispVal -> AddRef();
pfield = Pdataset.GetFields().Item( " Direction " );
COleVariant f2Vt;
f2Vt.vt = VT_DISPATCH;
f2Vt.pdispVal = pfield.m_lpDispatch;
f2Vt.pdispVal -> AddRef();
prowvalues = Pdataset.GetRowValues(f1Vt);
COleVariant v1;
v1 = prowvalues.Item(f2Vt).GetValue();
v1.ChangeType(VT_BSTR);
CString fd;
fd.Format( " %s " ,v1.bstrVal);
MessageBox(fd);
这两种方法的区别:pdataset.GetValue()只能读取,不能修改,因为没有SetValue()方法;
而用prowvalues.Item(fieldvt).GetValue()可以读取,也可以用相对应的SetValue()来设置。
prowvalues.Item(fieldvt).SetValue(COleVariant(strroaddic));