MapX SetKeyField及GetKeyValue使用举例。

 




/*
MapInfo Products Knowledge Base
Product: MapX
Version: 5.x
Platform: Not Platform Related
Category: VC++ Code Samples
Summary:
Extract data from a layer using the keyvalue/keyfield properties.
Question:
How can the keyvalue/keyfield properties be used to extract data from a layer in C++?
Answer:
Try this code:
*/



// Counters
long  numFtrs;
long  numFlds;

// message buffer
CString Buffer;

CMapXLayer lyr;
CMapXFeatures ftrs;
CMapXDataset ds;

// Create a variant for the layer
VARIANT vLyr;
vLyr.vt 
=  VT_DISPATCH;

// add the layer
lyr  =  m_ctrlMapX.GetLayers().Add(LPCTSTR( " USA " ), 1 );
vLyr.pdispVal 
=  lyr;

// create the dataset
ds  =  m_ctrlMapX.GetDatasets().Add(miDataSetLayer, vLyr);

// init the counters
numFtrs  =  lyr.AllFeatures().GetCount();
numFlds 
=  ds.GetFields().GetCount();

// build and save the feature set
// faster than rebuilding the feature every time through the loop
ftrs  =  lyr.AllFeatures();

// loop through the features
for  ( long  i  =   1 ; i  <=  numFtrs; i ++
{
//reset the buffer
Buffer = "";

//loop through the fields
for (long j = 1; j <= numFlds; j++)
{
//set the keyfield
lyr.SetKeyField(LPCTSTR(ds.GetFields().Item(j).GetName()));

//get the keyvalue for that field add it to the buffer
Buffer += ftrs.Item(i).GetKeyValue();

//add formating
Buffer += " ";
}


//display all the information for the feature
AfxMessageBox(LPCTSTR(Buffer));
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值