A solution is to put the sequence ( the order in which you add the objects to the map) in the key and the name of the key in the object associated with that key.
Something like :
CMyObjClass : public Cobject
{
public:
CMyObjClass( CString & s)
{
ObjName = s;
}
CString ObjName;
// other data
}
CMapStringToOb map;
CString key="1";
CMyObjClass o1 = new CMyObjClass("george"

;
map.Add(key,o1);
key = "2";
CMyObjClass o2 = new CMyObjClass("john"

;
map.Add(key,o2);
Lookup the map in the order of the sequence:
CMyObjClass *rObj=NULL;
CString sKey;
for (int i=0;i<map.GetCount();i++)
{
sKey.Format("%d",i);
Lookup(sKey, ( CObject*& ) &rObj);
if (rObj != NULL)
{
// process rObj->ObjName object with the "i" sequence
}
}
-obislavu-