MAPGIS 二次开发常见问题及解答
MAPGIS, 解答, 开发
1、问:如何用
Delphi 生成 MAPGIS 明码文件? 答:先利用手册看懂明码格式文件的格式,知道数据的组织方式,利用 delphi 的文件函数创建一个文本型 文件,吧数据库中的数 据按照格式输出就是了。 2、问:ATT_STRU 和 CATT_STRU 的区别和联系? 答: ATT_STRU 是以前老版本的东东,换成 CATT_STRU 试试.CATT_STRU 中包含了属性结构的详细信 息,具体用法可参见二次开发帮助
文档中第三章数据结构中关于属性字段描述结构,属性字段描述头和属性信息头的介绍,里面有该结构的详 细内容。 3、问:请教关于“不能打开子图库...”的问题,急! 答:系统库路径不对,将 mapfont.gis、mconfig.gis、netcfg.gis 三个文件拷贝到执行目录即可。这几 个语言件放在 MAPGIS\PROGRAM\目录中。或是运行 MapEnv.exe 可设置,该运行文件也同样在 MAPGIS\PROGRAM\目录中。 4、问:如果只知道工作区 ai 能不能依次得到工作区中的图元号,该如何得到啊! 答: long i,pntn; short len; pnt_info inf; d_dot xy; char *dat; {_GetPntNum(ai,&;i,&;pntn);//取点数 for(i=1;i《pntn;i++) { if(_getpnt(ai,i,&;xy,&;dat,&;len,&;inf)<=0)//取点,返回值 1/0/-1 成功/失败/删除 continue; …对该图元进行操作 } }i 就是图元号 5、问:MapGis6.5 的 SDK 函数 NearPnt,到底应该如何用啊!跟以前的不同了,给个例子吧! 答: long WINAPI _NearPnt(short ai,D_DOT *xy,unsigned char *layerOnOffPad,short padLen,double *dis); ai 点工作区号 *xy 点位置号---比如鼠标的位置 layeronoffpad 图层开关标志,如不为空就只在打开状态的图层中查找 padLen 是 layerOnOffPad 的长度 出口 dis 返回距离 返回值成功返回点号,失败为 0 6、问:如何屏蔽掉 CPrjEditView 中的右键功能!!!
答: editview 有一个 PopMenuControl 属性,同理 CPrjEditView 也可以直接使用这个属性。 editview.PopMenuControl=-1 '///不显示菜单 =0 '///全部显示 =1 '///显示窗口菜单 =2 '///显示窗口+编辑菜单 =3 '///1+2+工具箱 7、问:如何将一个圆添加到一个工作区 Ai 中? 答: 先用_AppendLin 函数在工作区画园(或画弧)的时候需要自己生成坐标点,比如说 D_DOT *dat, 这里 dat 的空间需自己申请,其长度为 long len,线的参数是 LIN_INFO inf,需要赋值,short ai 为 区工作区号,long i 为弧 段号。然后调用: i = _AppendLin(ai,dat,len,&;inf); 输入弧段。然后添加区域 入口: ai - 区
工作区号 (i 为弧段号) long rdat[2] - 区域数据块 rdat[0] = 1(弧段个数),rdat[1]= i rinf - 区域图形信息,需要赋值 然后调用: _AppendReg(ai,rdat,2,&;rinf); 8、问:急关于_ShortFlash(ENTITY_MSG *pt,long num)函数! 答: sypedef struct {short ai 工作区号 short type 图元类型 long elmi 图元号 }ENTITY_MSG 定义一
个 ENTITY_MSG 数组你把所要闪烁的图元一个一个加进去就行了。 9、问:实现
查询多边形中图元的,并时期闪烁显示,应如何实现呢? 答:用_RectAskToList 系列函数,然后可通过 CGisView 的闪烁机制完成。 10、问: CloseToolBox();//关闭工具箱 OpenToolBox(); //打开工具箱 我的
程序只要进行了上面关闭和打开工具箱的操作后,在最后关闭时总是报错 不管是用上面的函数还是用右键提供的工具箱控制,到最后都会出现一个 Debug Assertion Failed! 的错误,谁能解释一下呢?答: 1、升级你的 VC++(比如 SP2、SP4) 2、出现这种问题不用管,在编绎成 Releas 版后,这个
问题不会再出现。 11、问:我在本机器开发环境上运行开发的
软件没什么问题。但在其他机器上,运行时出现找不到 mfc42d.dll 动态链接库文件。请帮忙! 答:你编的东西编译成 DEBUG 版,运行时需要 mfc42.dll(这可不