MAPGIS二次开发讲义 下载本文

int _ViewCurAtt1(CATT_STRU *stru,char *att,char *titleName,short ai=0);

参数:入口 ai - 工作区号。

aType – 属性类型 i – 指定记录号

*titleName – 窗口标题

*stru – 属性结构 *att – 属性

出口 无

返回值 成功返回属性窗口句柄,失败返回NULL。

个函数编辑、浏览指定记录的当前属性,后两个函数可编辑、浏览所有记录的当前属性。

说明:返回0,IDYES,IDNO,IDCANCEL,只有当显示窗口取消后,这些函数才返回。前两

字段操作

根据字段名称取字段序号

short _GetFldNo(CATT_STRU *stru,char *fldName);

参数:入口 *stru - 属性结构 *fldName- 字段名称

出口 无

返回值 成功返回字段序号,失败返回0。 根据字段名称取数值型字段值

double _GetFld(char *att,CATT_STRU *stru,char *fldName,short *type=NULL,short

*isBlank=NULL); short _GetField(char *att,CATT_STRU *stru,char *fldName,char *fldBuf,long bufLen,short *isBlank); 参数:入口 att - 属性记录 stru - 属性结构

*fldName- 字段名称

*fldBuf – 返回字段内容的缓冲区指针。 bufLen – fldBuf缓冲区字节长度。 *type - 返回字段类型的变量地址,若不需要返回字段类型,可设置 为NULL。

*isBlank – 返回字段是否为空的变量地址。 出口 *fldBuf – 返回字段内容

*type - 返回字段类型

*isBlank – 返回字段是否为空

返回值 _GetFld 函数返回字段值,因此,若fldName字段是非数值型字段,

该函数返回0;_GetField函数返回1/0,分别表示成功和失败,该函数通过fldBuf返回字段的二进制内容,因此,字段类型可以是任意类型。

说明:数值型字段包括:BYTE_TYPE(字节型),SHORT_TYPE(短整型),LONG_TYPE(长整型),FLOAT_TYPE(浮点型),DOUBLE_TYPE(双精度型),BOOL_TYPE(布尔型)。前一个函数通过函数返回值,后一个函数通过地址返回值。 根据字段序号取数值型字段值

double _GetFldOnNumb(char *att,CATT_STRU *stru,short fldi,short *type=NULL,short

*isBlank=NULL);

short _GetFieldOnNumb(char *att,CATT_STRU *stru,short fldi,char *fldBuf,long bufLen,short *isBlank); 参数:入口 *att - 属性记录 *stru - 属性结构

fldi - 字段序号,从0开始,第一个字段序号为0。

bufLen - 字段内容缓冲区长度

出口 *fldBuf – 字段内容缓冲区 *type - 返回字段类型的变量地址,若不需要返回字段类型,可设置为

*isBlank – 返回字段是否为空的变量地址

NULL。

说明:这两个函数的功能分别和_GetFld函数和_GetField函数相同,不同之处在于这两个函数是根据字段序号取字段内容,字段序号从0开始。其余注意事项请参阅_GetFld函数和_GetField函数。

根据字段名称设置字段值

short _SetFld(char *att,CATT_STRU *stru,char *fldName,char *realVal); 参数:入口 *att - 属性记录 *stru - 属性结构 *fldName- 字段名称,用来指定要修改的字段。

*realVal - 字段真值地址,该函数用此真值替换att中原来的字段值。

出口 无

返回值 1=成功,0=失败 说明:该函数仅仅把realVal值写到att所指内存空间上,若要永久修改属性字段值,还

必须调用_WriteAtt函数将属性记录写到工作区中。

VB函数:Declare Function bSetFld(att As Byte, stru As CATT_STRU, fldName As String, realVal As Any) As Integer

根据字段名称将字符串设置为字段值

short _SetFldFromStr(char *att,CATT_STRU *stru,char *fldName,char *strVal); 参数:入口 *att - 属性记录 *stru - 属性结构

*fldName- 字段名称,用来指定要修改的字段。 *strVal - 字符串地址,该函数将此字符串转换成字段名称所确定的字

段类型值,替换att中原来的字段值位置。

出口 无

返回值 1=成功,0=失败

说明:该函数仅仅修改att上的字段值,若要永久修改属性字段值,还必须调用_WriteAtt

函数将属性记录写到工作区中。

VB函数:Declare Function bSetFldFromStr(att As Byte, stru As CATT_STRU, fldName

As String, strVal As String) As Integer

根据字段序号设置字段值

short _SetFldOnNumb(char *att,CATT_STRU *stru,short fldi,char *realVal); 参数:入口 *att - 属性记录 *stru - 属性结构 *fldi - 字段序号,用来指定要修改的字段。

*realVal - 字段真值地址,该函数用此真值替换att中原来的字段值。

出口 无

返回值 1=成功,0=失败

说明:该函数仅仅修改att上的字段值,若要永久修改属性字段值,还必须调用_WriteAtt函数将属性记录写到工作区中。

VB函数:Declare Function bSetFldOnNumb(att As Byte, stru As CATT_STRU, ByVal fldi As Integer, realVal As Any) As Integer

根据字段序号将字符串设置为字段值

short _SetFldOnNumbFromStr(char *att,CATT_STRU *stru,short fldi,char *strVal); 参数:入口 *att - 属性记录

*stru - 属性结构

*fldi - 字段序号,用来指定要修改的字段。

*strVal - 字符串地址,该函数将此字符串转换成字段名称所确定的字

段类型值,替换att中原来的字段值位置。

出口 无

返回值 1=成功,0=失败

说明:该函数仅仅修改att上的字段值,若要永久修改属性字段值,还必须调用_WriteAtt函数将属性记录写到工作区中。

VB函数:Declare Function bSetFldOnNumbFromStr(att As Byte, stru As CATT_STRU,

ByVal fldi As Integer, strVal As String) As Integer

将属性记录中的字段内容转换成ASCII码

short _CvtFldToString(CATT_STRU *stru,char *att,short fldi,char *ptStr,short

ptLen,short *fldType,short *isBlank);

short _CvtFldToString1(CATT_STRU *stru,char *att,char *fldName,char

*ptStr,short ptLen,short *fldType,short *isBlank);

参数:入口 *stru – 属性结构 *att – 属性

*fldName– 字段名 fldi – 字段号

ptLen – 字符串缓冲区长度,要求比字段的字节长度多1个字节,以便存放字符串。

*ptStr – 返回字符串的缓冲区地址

*fldType – 返回字段类型的变量地址;若不需要,可设置为NULL *isBlank – 返回是否为空的变量地址

出口 *ptStr – 返回字符串内容 *fldType – 返回字段类型

*isBlank

– 返回字段是否为空

返回值 1=成功,0=失败 说明:将stru和att属性记录中第fldi号字段内容转换成ASCII码填到ptStr中,ptLen要>=32,ptStr的长度一般要求比字段的字节长度(fieldlength)多1个字节,以便存放字符串结束符(若是STR_TYPE的话)。若fldType=NULL,则不返回字段类型,若isBlank=NULL,则不返回空值标志(5.0版设为NULL)。 统改属性记录字段 long _RepLstRcdFld0(short ai,short aType,long *ptLst,char *ptRepFldFlag, char

*attExp,void *grpPad, void *grpInf,char *repAtt);

参数:入口 ai – 工作区号

aType - 属性类型

*ptLst - 将要进行替换的记录号表,ptLst[0]=个数,ptLst[1]...pt[ptLst[0]]=

记录号,若ptLst=NULL则统改所有记录。

*ptRepFldFlag - 替换字段开关;ptRepFldFlag[i]对应i(从0开始)号字段,

1=替换,0=不替换

*attExp *grpPad 结构,

其余类推。可为NULL。

*grpInf - 图形参数地址,如aType=LIN时,*grpInf为LIN_INFO结构,其余

类推。可为NULL。

*repAtt - 替换值记录数据

出口 无

返回值 成功则替换ptLst表所列记录的指定字段,返回统改的记录数,失败返

回0。 字段统改

short _RepLstRcdFld(short ai,short aType,long *ptLst,char *titleName); 参数:入口 ai – 工作区号

aType - 统改属性类型

*titleName–统改属性值条件输入窗口标题

*ptLst - 统改记录号表,ptLst[0]=个数,ptLst[1]...pt[ptLst[0]]=记录号,

若ptLst=NULL则统改所有记录 出口 无

返回值 成功=1,失败=0

统改字段值

short _ModLstRcdFldVal(short ai,short aType,long *ptLst,short fldI,char *fldVal);

参数:入口 ai

– 工作区号

- 属性条件表达式字符串,可为NULL,即无属性条件 - 图形参数开关地址,如aType=LIN时,*grpPad为LIN_PAD

aType - 统改属性类型

*ptLst - 统改记录号表,ptLst[0]=个数,ptLst[1]...pt[ptLst[0]]=记录号,

若ptLst=NULL则统改所有记录 fldI - 统改字段号

*fldVal - 返回统改字段域值地址

出口 无

返回值 成功=1,失败=0