📄 cpp1.cpp
字号:
void CDZX_BMP_DRAW::InitMap()
{
char Temp1[80],Temp2[40];
CString strCommand,strtemp;
if (!AfxOleInit())
{
AfxMessageBox("AfxOleInit failed");
// return FALSE;
}
if (!mapinfo.CreateDispatch("MapInfo.Application")) {
AfxMessageBox("Failed to create MapInfo dispatch class!");
// return false;
}
MapInit=true;
memset(Temp1,'\0',80);
sprintf(Temp1,"Open Table \"");
strcat(Temp1,Cue1);
memset(Temp2,'\0',40);
sprintf(Temp2,"\" Interactive");
strcat(Temp1,Temp2);
mapinfo.Do(Temp1);
memset(Temp1,'\0',80);
sprintf(Temp1,"Map from ");
strcat(Temp1,Cue2);
mapinfo.Do(Temp1);
memset(Temp1,'\0',80);
strcat(Temp1,"Set ");
strcat(Temp1,ProjectionStr);
// strcat(Temp1,"Set CoordSys Earth Projection 3,0,\"mi\",110,10,25,40,0,0");
mapinfo.Do(Temp1);
strCommand.Format("WindowID(0)");
strtemp=mapinfo.Eval(strCommand);
wid=atoi(strtemp);
}
void CDZX_BMP_DRAW::GreISO(BOOL ColorSet,int *Rain,long *ColorVar,int ColorCount)
{
int VarType,RainFall,MapType,CirType,i,t;
long LineColor;
float FirX,FirY,SecX,SecY,OrgX,OrgY,RainValue;
float AX,AY,BX,BY,CX,CY;
char filename[130],Temp1[80],Temp2[200];
BOOL ColorDefined;
t=0;
ColorDefined=false;
memset(CurrentDir,'\0',100);
::GetCurrentDirectory(100,CurrentDir);//获取当前路径
memset(Temp2,'\0',200);
memset(filename,'\0',130);
strcpy(filename,CurrentDir);
strcat(filename,"\\DZX_LAY");
i=0;
RainValue=0;
strcpy(Temp2,"Create Table DZX_LAY (RainValue float) File \"");
strcat(Temp2,filename);
strcat(Temp2,"\"");
strcat(Temp2," Type NATIVE");
mapinfo.Do(Temp2);
memset(Temp1,'\0',80);
strcpy(Temp1,"Create Map For DZX_LAY");
mapinfo.Do(Temp1);
memset(Temp1,'\0',80);
sprintf(Temp1,"Add Map Window %d Layer DZX_LAY",wid);
mapinfo.Do(Temp1);
memset(Temp1,'\0',80);
strcpy(Temp1,"Set Map Layer DZX_LAY editable on Display Global Global Line(1,2,65280) Global Pen(1,2,65280)");
mapinfo.Do(Temp1);
memset(Temp1,'\0',80);
strcpy(Temp1,"Dim DZX_LINE as Object");
mapinfo.Do(Temp1);
memset(Temp1,'\0',80);
strcpy(Temp1,"Set Map Layer DZX_LAY editable on Display Global Global Line(1,2,65535) Global Pen(1,2,65535)");
mapinfo.Do(Temp1);
memset(Temp1,'\0',80);
strcpy(Temp1,"Set Style Pen MakePen(1, 2,255)");
mapinfo.Do(Temp1);
memset(Temp1,'\0',80);
sprintf(Temp1,"Set Style Font MakeFont(\"MS Sans Serif\",0,12, %ld,%ld)",miColorBlack,miColorWhite);
mapinfo.Do(Temp1);
memset(Temp1,'\0',80);
strcpy(Temp1,"Dim DZX_TEXT as Object");
mapinfo.Do(Temp1);
memset(Temp1,'\0',80);
sprintf(Temp1,"Set Style Pen MakePen(1, 2,%ld)",miColorRed);
mapinfo.Do(Temp1);
if(TriFlag==1)
{
TriData1=fopen(TriDataPath,"r");
for(i=0;i<m_nTris;i++)
{
fscanf(TriData1,"%f,%f,%f,%f,%f,%f\n",&AX,&AY,&BX,&BY,&CX,&CY);
memset(Temp1,'\0',80);
sprintf(Temp1,"%s%f,%f,%f,%f))","Insert Into DZX_LAY(obj) Values (CreateLine(",AX,AY,BX,BY);
mapinfo.Do(Temp1);
memset(Temp1,'\0',80);
sprintf(Temp1,"%s%f,%f,%f,%f))","Insert Into DZX_LAY(obj) Values (CreateLine(",BX,BY,CX,CY);
mapinfo.Do(Temp1);
memset(Temp1,'\0',80);
sprintf(Temp1,"%s%f,%f,%f,%f))","Insert Into DZX_LAY(obj) Values (CreateLine(",CX,CY,AX,AY);
mapinfo.Do(Temp1);
}
fclose(TriData1);
}
DZXData=fopen(DZXDataPath,"r");
memset(Temp1,'\0',80);
// sprintf(Temp1,"Set Style Pen MakePen(1, 2,%ld)",LineColor);
sprintf(Temp1,"Set Style Pen MakePen(2,2,%ld)",miColorBlue);
mapinfo.Do(Temp1);
while(!feof(DZXData))
{
if(!feof(DZXData))
fscanf(DZXData,"%d",&VarType);
else break;
switch(VarType)
{
case COLORFLAG:
if(!feof(DZXData))
fscanf(DZXData,",%d\n",&RainFall);
else
break;
if(ColorSet)
{
for(i=0;i<ColorCount;i++)
{
if(Rain[i]==RainFall)
{
LineColor=ColorVar[i];
break;
ColorDefined=true;
}
}
}
if(!ColorDefined)
{
if(t>ColorNum-1)
t=0;
LineColor=ColorDefault[t];
t++;
}
memset(Temp1,'\0',80);
// sprintf(Temp1,"Set Style Pen MakePen(1, 2,%ld)",LineColor);
sprintf(Temp1,"Set Style Pen MakePen(2,2,%ld)",miColorBlue);
mapinfo.Do(Temp1);
break;
case CIRCLEFLAG:
if(!feof(DZXData))
fscanf(DZXData,",%d,%d\n",&MapType,&CirType);
else break;
if(!feof(DZXData))
fscanf(DZXData,"%d",&VarType);
else break;
if((VarType==COODFLAG)||(VarType==9))
{
if(!feof(DZXData))
fscanf(DZXData,",%f,%f\n",&FirX,&FirY);
else
break;
}
if(!feof(DZXData))
fscanf(DZXData,"%d",&VarType);
else break;
OrgX=FirX;
OrgY=FirY;
while((VarType==COODFLAG)||(VarType==9))
{
if(!feof(DZXData))
fscanf(DZXData,",%f,%f\n",&SecX,&SecY);
else break;
memset(Temp1,'\0',80);
if(Between(MinDX,MaxDX,FirX)&&Between(MinDY,MaxDY,FirY)&&Between(MinDX,MaxDX,SecX)&&Between(MinDY,MaxDY,SecY))
{
sprintf(Temp1,"%s%f,%f,%f,%f))","Insert Into DZX_LAY(obj) Values (CreateLine(",FirX,FirY,SecX,SecY);
mapinfo.Do(Temp1);
}
FirX=SecX;
FirY=SecY;
if(!feof(DZXData))
fscanf(DZXData,"%d",&VarType);
else break;
}
if(CirType==CLOSE)
{
memset(Temp1,'\0',80);
if(Between(MinDX,MaxDX,FirX)&&Between(MinDY,MaxDY,FirY)&&Between(MinDX,MaxDX,OrgX)&&Between(MinDY,MaxDY,OrgY))
{
sprintf(Temp1,"%s%f,%f,%f,%f))","Insert Into DZX_LAY(obj) Values (CreateLine(",FirX,FirY,OrgX,OrgY);
mapinfo.Do(Temp1);
}
CirType=OPEN;
}
break;
}
}
fclose(DZXData);
DZXText=fopen(DZXTextPath,"r");
while(!feof(DZXText))
{
fscanf(DZXText,"%d,%f,%f\n",&RainFall,&FirX,&FirY);
memset(Temp1,'\0',80);
/* if(RainFall==9)
sprintf(Temp1,"Create text into Window %d \"●\" (%f,%f) (%f,%f) Font MakeFont(\"宋体\",0,990, %ld,%ld)",wid,FirX+3,FirY+3,FirX-2,FirY-2,miColorBlack,miColorWhite);
else if(RainFall==7)
sprintf(Temp1,"Create text into Window %d \"◢\" (%f,%f) (%f,%f) Font MakeFont(\"宋体\",0,990, %ld,%ld)",wid,FirX+3,FirY+3,FirX-2,FirY-2,miColorBlack,miColorWhite);
else*/
if(RainFall>500)
sprintf(Temp1,"Create text into Window %d \"%d\" (%f,%f) (%f,%f) Font MakeFont(\"宋体\",0,%d, %ld,%ld)",wid,RainFall,FirX,FirY,FirX-2*FontRatio,FirY-2*FontRatio,FontSize,miColorBlack,miColorWhite);
else
sprintf(Temp1,"Create text into Window %d \"%d\" (%f,%f) (%f,%f) Font MakeFont(\"宋体\",0,%d, %ld,%ld)",wid,RainFall,FirX+2*FontRatio,FirY+2*FontRatio,FirX,FirY,FontSize,miColorBlack,miColorWhite);
mapinfo.Do(Temp1);
}
fclose(DZXText);
memset(Temp1,'\0',80);
// sprintf(Temp1,"Commit Table DZX_LAY As \"%s\" Type NATIVE CoordSys Earth ",ISOName);
// strcat(Temp1," Projection 3,0,\"mi\",110,10,25,40,0,0");
sprintf(Temp1,"Commit Table DZX_LAY As \"%s\" Type NATIVE ",ISOName);
strcat(Temp1,ProjectionStr);
mapinfo.Do(Temp1);
memset(Temp1,'\0',80);
strcat(Temp1,"Close All");
mapinfo.Do(Temp1);
//fclose(DZXData);
//fclose(DZXText);
}
void CDZX_BMP_DRAW::ReleaseMap()
{
mapinfo.ReleaseDispatch();
mapinfo.m_lpDispatch=NULL;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -