/**//* 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)); }