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 - 区工作区号
long rdat[2] - 区域数据块
rdat[0] = 1(弧段个数),rdat[1]= i (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(这可不是MAPGIS的动态库,是VC的),如果你在编译时生成RELEASE版,到
别的机子上运行,就不用找mfc42d.dll了。
12、