我的目的是当用户往地图上加入图层后,用户在这个图层上做的加点,线,标注等能保留下来,由于加入的是栅格图层,不能编辑,所以我想在加入栅格图层的同时,创建一个永久的图层,用来保留用户的点线和标注等,创建新图层的代码如下:
CMapXFields Flds;
 Flds.CreateDispatch(Flds.GetClsid());
 
 //Create the field definitions for the new layer. For example:
 //First field is a string, second is an integer, last is a date
/* Flds.AddStringField("My String Column", 50);
   Flds.AddIntegerField("My Integer Field");
   Flds.AddDateField("My Date Field");*/  这一段编译报错,说没有这三个函数,于是我用了下面这个函数
   Flds.Add(COleVariant("IDField"),COleVariant("IDField"),COleVariant((long)miAggregationIndividual),COleVariant((long)miTypeString));  
 //Create a variant that points to the fields collection just created
 VARIANT vFlds;
 vFlds.vt = VT_DISPATCH;
 vFlds.pdispVal = Flds.m_lpDispatch;
 
 //Create a new LayerInfo Object
 CMapXLayerInfo Linfo;
 Linfo.CreateDispatch(Linfo.GetClsid());
 
 //Set the Layer Info type to type: New Table
 Linfo.SetType(miLayerInfoTypeNewTable);
 
 //Add the parameters for the new table
 Linfo.AddParameter("FileSpec", COleVariant("MyTab.tab")); //Tab file
 Linfo.AddParameter("Name", COleVariant("MyNewLayer")); //Layer name
 Linfo.AddParameter("Fields", vFlds); //Fields
 
 //Add the new layer to the map
 m_MapX.GetLayers().Add(Linfo.m_lpDispatch);  //运行到这句就运行不过去,产生异常错误,也没有提示什么错误                                                    //查看相关的目录下面只产生了.ID和.MAP文件,没有.TAB等其他文件
注明:由于我的应用程序主框架是基于单文档的,所以我加MAPX时是加入MAP.H 和MAPX.CPP。另外由于需要,在一个弹出对话框中为了方便画控件我又将mapx以Conponents and Contral形式添加到工程。Flds.AddStringField("My String Column", 50);这几句出错,我的理解是他调用的是前一种方式下加入的MAPX类里面的函数,我找了在这种方式下FIELDS对象的没有AddStringField这一方法,所以我用了它包含的Flds.Add(...)方法,不知道字段有没有加进去?希望各位大侠帮我分析,谢谢!