mapgis6.7二次开发vc6_demo 之六(mapgis公用函数二次封装库)
/////////////////////////////////////////// //mapgis_common.cpp //mapgis公用函数二次封装库 //vp:hsg //create date:2012-04 // /////////////////////////////////////////// #include "stdafx.h" #include "resource.h" #include <math.h> #include "win_area.h" #include "win_oper.h" #include "map_out.h" #include "demo.h" // extern char* AppTitle; //应用程序名称 extern AREA_HINST AHInst; extern HWND MainWnd; //主窗口句柄 extern HWND GrpWnd; //图形窗口句柄 //------------------------------------------------------------ //define function style mapgis_common.cpp /* char* GetDiskSpace_lc(unsigned char dsk); char* ltrim_lc(char* s); char* rtrim_lc(char* s); char* trim_lc(char* s); char* l2cp(long n); char* i2cp(int n); char* d2cp(double value); char* short2cp(short value); char* a2u(const char* A,const char* B); char* a3u(const char* A,const char* B,const char* C); char* a4u(const char* A,const char* B,const char* C,const char* D); char* a5u(const char* A,const char* B,const char* C,const char* D,const char* E); char* a6u(const char* A,const char* B,const char* C,const char* D,const char* E,const char* F); char* a7u(const char* a1,const char* a2,const char* a3,const char* a4,const char* a5,const char* a6,const char* a7); char* substr_lc(const char* cs,char* fd); char* getdir_lc(char* s,const char* d); char* getfilenameWithEx_lc(char* s,const char* d); char* getfilenameNoExt_lc(char* s,const char* d); char* getprestr(char* s,const char* d); char **GetStrArray(char* s,const char* d); void ShowMsg(char* msg); void TestGetDiskSpace(); void D2A_test(); char* GetGeoVctType(short ai); //获取图层类型 */ //------------------------------------------------------------ //long _GetDiskSpace(unsigned char dsk) //参数:入口 dsk 磁盘号, 1=A,2=B... // 出口 无 //返回值 返回磁盘剩余空间的字节数 char* GetDiskSpace_lc(unsigned char dsk) { long sy=_GetDiskSpace(dsk); // long M=sy/1024; char* atitle; int mLen=sizeof(M); atitle=new char[mLen]; ltoa(M,atitle,mLen); return atitle; } //去掉字符串首(左)空格函数 char* ltrim_lc(char* s) { char* s_s=new char[strlen(s)+1]; strcpy(s_s,s); char* s_rev=strrev(s_s); s_rev=rtrim_lc(s_rev); char* d_s=strrev(s_rev); return d_s; } //去掉字符串尾(右)空格函数 char* rtrim_lc(char* s) { char* s_s=new char[strlen(s)+1]; strcpy(s_s,s); // int s_len=strlen(s_s); for(int i=s_len-1;i>=0;i--) { if(s_s[i]==' ') { s_s[i]='\0'; } } char* d_s=new char[strlen(s_s)]; strcpy(d_s,s_s); return d_s; } //去掉字符串首尾空格函数 char* trim_lc(char* s) { return ltrim_lc(rtrim_lc(s)); } //long转字符串函数 char* l2cp(long n) { int nLen=sizeof(n); char* atitle=new char[nLen]; memset(atitle,0,nLen); // sprintf(atitle,"%d",n); //ltoa(n,atitle,nLen); //有问题 return atitle; } //int转字符串函数 char* i2cp(int n) { int nLen=sizeof(n); char* atitle=new char[nLen]; sprintf(atitle,"%d",n); //itoa(n,atitle,nLen); return atitle; } //double转字符串函数 char* d2cp(double value) { /* char *tt; int dec, sign; int ndig = 10; tt = ecvt(value, ndig, &dec, &sign); //tt = fcvt(value, ndig, &dec, &sign); return tt;*/ char* s=new char[sizeof(value)]; sprintf(s,"%8.6f",value); char* ret_s=new char[strlen(s)]; strcpy(ret_s,s); return ret_s; } //short转字符串函数 char* short2cp(short value) { char* s=new char[sizeof(value)]; sprintf(s,"%d",value); char* ret_s=new char[strlen(s)]; strcpy(ret_s,s); return ret_s; } //合并 char* a2u(const char* A,const char* B) { return strcat_lc(A,B); } char* a3u(const char* A,const char* B,const char* C) { char* t=strcat_lc(A,B); t=strcat_lc(t,C); return t; } char* a4u(const char* A,const char* B,const char* C,const char* D) { char* t=strcat_lc(A,B); t=strcat_lc(t,C); t=strcat_lc(t,D); return t; } char* a5u(const char* A,const char* B,const char* C,const char* D,const char* E) { char* t=strcat_lc(A,B); t=strcat_lc(t,C); t=strcat_lc(t,D); t=strcat_lc(t,E); return t; } char* a6u(const char* A,const char* B,const char* C,const char* D,const char* E,const char* F) { char* t=strcat_lc(A,B); t=strcat_lc(t,C); t=strcat_lc(t,D); t=strcat_lc(t,E); t=strcat_lc(t,F); return t; } char* a7u(const char* a1,const char* a2,const char* a3,const char* a4,const char* a5,const char* a6,const char* a7) { char* t=strcat_lc(a1,a2); t=strcat_lc(t,a3); t=strcat_lc(t,a4); t=strcat_lc(t,a5); t=strcat_lc(t,a6); t=strcat_lc(t,a7); return t; } char* substr_lc(const char* cs,char* fd) { return strstr(cs,fd); } char* getdir_lc(char* s,const char* d) { char* s_s=new char[strlen(s)]; strcpy(s_s,s); char* s_rev=strrev(s_s); char* t_rev=strstr(s_rev,d); char* t=strrev(t_rev); return t; } char* getfilenameWithEx_lc(char* s,const char* d) { char* t_dir=getdir_lc(s,d); // char* s_s=new char[strlen(s)]; strcpy(s_s,s); int dir_len=strlen(t_dir); int fn_len=strlen(s_s)-dir_len; char* fn_ext=new char[fn_len]; memset(fn_ext,0,fn_len); // for(int i=0;i<fn_len;i++) { fn_ext[i]=s_s[dir_len+i]; } char* ret_s=new char[strlen(fn_ext)]; strcpy(ret_s,fn_ext); return ret_s; } //获取不带扩展名的文件名 char* getfilenameNoExt_lc(char* s,const char* d) { //获取带扩展名的文件名 char** strArray; char* t_f_ext=NULL; strArray=GetStrArray(s,"\\"); int t_len=atoi(strArray[0]); t_f_ext=strArray[t_len]; //获取不带扩展名的文件名 char* t_fname=NULL; strArray=GetStrArray(t_f_ext,"."); int arraylen=atoi(strArray[0]); if(arraylen>=2) { t_fname=strArray[1]; } return t_fname; } //分割字符并返回字符数组 char **GetStrArray(char* s,const char* d) { char* s_s=new char[strlen(s)]; strcpy(s_s,s); //计算字符数组个数 int rows=0; char *p_str=strtok(s_s,d); while(p_str) { rows+=1; p_str=strtok(NULL,d); } //重新初始二维数据 char **strArray=new char*[rows+1]; for(int i=0;i<rows;i++) { strArray[i]=NULL; } strArray[0]=i2cp(rows); //数组总长度 // int index=1; s_s=new char[strlen(s)]; strcpy(s_s,s); p_str=strtok(s_s,d); while(p_str) { char* s_p=new char[strlen(p_str)]; strcpy(s_p,p_str); //添加到二维数组中 strArray[index]=s_p; // index+=1; p_str=strtok(NULL,d); } return strArray; } void ShowMsg(char* msg) { ::MessageBox(NULL,msg,"提示",0); //_MapGisAbout(msg); } void TestGetDiskSpace() { char* atitle=GetDiskSpace_lc(4); //char* atitle=AppTitle; ShowMsg(atitle); //MessageBox(hWnd,(LPCSTR)m,(LPCSTR)m,NULL); //_DispAbout(); } void D2A_test() { char* f_ext="cun_xzdw.wl"; char **strArray=GetStrArray(f_ext,"."); int tlen=atoi(strArray[0]); ShowMsg(strArray[1]); return; // int rows=3; int cols=4; int i; //int j; int *p; char* pret; //静态声明二维数据 /* int a[3][4]={{1,2,3,4},{11,12,13,14},{21,22,23,24}}; //赋值 for(i=0;i<rows;i++) { for(j=0;j<cols;j++) { a[i][j]=i*4+j; } } // p=a[0]; //数组首地址 //一般二维数据读取法 pret="一般二维数据读取法\n"; for(i=0;i<rows;i++) { for(j=0;j<cols;j++) { char* ret=new char[50]; memset(ret,0,50); sprintf(ret,"%d,",a[i][j]); if(strlen(pret)<=0) { pret=ret; } else { pret=a2u(pret,ret); } } pret=a2u(pret,"\n"); } //*(p+5)=pos(0,1,2,3,4,5)=12 //sprintf(ret,"test 2 array=%d,%d",*(p+5),a[1][1]); //12,12 ShowMsg(pret); //输出结果 //一般二维数据读取法 //1,2,3,4 //11,12,13,14 //21,22,23,24 */ //动态声明二维数据 int zlen=rows*cols; int **a=new int*[rows]; for(i=0;i<rows;i++) { a[i]=new int[cols]; } p=a[0]; //数组首地址 //赋值 for(i=0;i<zlen;i++) { *(p+i)=i; } //指针读取二维数据方法 pret="指针读取二维数据方法\n"; for(i=0;i<zlen;i++) { char* ret=new char[50]; memset(ret,0,50); sprintf(ret,"%d,",*(p+i)); if(strlen(pret)<=0) { pret=ret; } else { pret=a2u(pret,ret); } } ShowMsg(pret); //输出结果 //指针读取二维数据方法 //1,2,3,4,11,12,13,14,21,22,23,24 return; //----------------------------------- //查看属性 _ViewAtt(MainWnd,AHInst,0); //查看mapgis图层字段结构api _ViewStruct(MainWnd,AHInst); char* s; double value; int dec,sign; int ndig=2; //字符串长度 value=35951234.876533324234; s=ecvt(value,ndig,&dec,&sign); ShowMsg(a5u(s,",dec=",i2cp(dec),",sign=",i2cp(sign))); sprintf(s,"%8.6f",value); //OK ShowMsg(s); // value=-123.45; ndig=15; s=ecvt(value,ndig,&dec,&sign); ShowMsg(a5u(s,",dec=",i2cp(dec),",sign=",i2cp(sign))); // value=0.6789e5; ndig=5; s=ecvt(value,ndig,&dec,&sign); ShowMsg(a5u(s,",dec=",i2cp(dec),",sign=",i2cp(sign))); return; } //获取图层类型 OK char* GetGeoVctType(short ai) { short LayerType=_GetAreaType(ai); char* GeoVctType="UnKown"; switch(LayerType) { case REG: GeoVctType="Polygon"; break; case LIN: GeoVctType="Line"; break; case PNT: GeoVctType="Point"; break; default: break; } return GeoVctType; }
--the--end---