⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 convert.cpp

📁 坐标转换程序,可以将空间直角坐标转化为大地坐标
💻 CPP
📖 第 1 页 / 共 3 页
字号:
	ON_EVENT(CConvert, IDC_Grid2, -603 /* KeyPress */, OnKeyPressGrid1, VTS_PI2)
	ON_EVENT(CConvert, IDC_Grid3, -603 /* KeyPress */, OnKeyPressGrid1, VTS_PI2)
	ON_EVENT(CConvert, IDC_Grid4, -603 /* KeyPress */, OnKeyPressGrid1, VTS_PI2)
	ON_EVENT(CConvert, IDC_Grid5, -603 /* KeyPress */, OnKeyPressGrid1, VTS_PI2)
	//}}AFX_EVENTSINK_MAP
END_EVENTSINK_MAP()

void CConvert::OnClickGrid1() 
{
	TransferValue (FALSE);	
}

void CConvert::OnEnterCellGrid1() 
{
	TransferValue (FALSE);	
}

void CConvert::OnKeyPressGrid1(short FAR* KeyAscii) 
{

  switch (k_mode)
  {
     case 1:
		    m_Grid=&m_Grid1;
			break;
     case 2:
		    m_Grid=&m_Grid2;
			break;
     case 3:
 		    m_Grid=&m_Grid3;
            break;
     case 4:
 		    m_Grid=&m_Grid4;
            break;
     case 5:
 		    m_Grid=&m_Grid5;
            break;
  
  }

 	   switch ( (int) * KeyAscii) {

	        case  VK_BACK : //Backspace - delete the last character
				  m_GridData .Delete  (m_GridData .GetLength ()-1,1);
		          break;
            case '1':
            case '2':
            case '3':
            case '4':
            case '5':
            case '6':
            case '7':
            case '8':
            case '9':
            case '0':
                   m_GridData  = m_GridData  + (TCHAR *) KeyAscii;
				 break;
            case '.': 
				 if ((m_GridData.Find('.')==-1))
				  m_GridData  = m_GridData  + (TCHAR *) KeyAscii;
				break;
            case '-': 
				  if (m_GridData=="")
				  m_GridData  = m_GridData  + (TCHAR *) KeyAscii;
				  break;
			default :
				if (m_Grid->GetCol()==1) 
				   m_GridData  = m_GridData  + (TCHAR *) KeyAscii;
			      break;
	   }
	   TransferValue (TRUE);		
}
BOOL CConvert::TransferValue(BOOL ToGrid)
{
	CString sText;
    switch (k_mode)
	{
     case 1:
		    m_Grid=&m_Grid1;
			break;
     case 2:
		    m_Grid=&m_Grid2;
			break;
     case 3:
 		    m_Grid=&m_Grid3;
            break;
     case 4:
 		    m_Grid=&m_Grid4;
            break;
     case 5:
 		    m_Grid=&m_Grid5;
            break;
	}

	if (ToGrid) 
	{ //Transfer value to Grid from Edit Box
         switch (k_mode)
		 {
          case 1:
          case 2:
          case 3:
               if (m_Grid->GetCol()<4)   m_Grid->SetText(m_GridData);
			   break;
		  case 4:
		  case 5:
               if (m_Grid->GetCol()<5)   m_Grid->SetText(m_GridData);
			   break;
		 }
	} else {
	      m_GridData  = m_Grid->GetText ();
		  m_Grid->SetBackColorSel(RGB(0,255,255));
		  m_Grid->SetForeColor(RGB(255,0,0));
	}
	return TRUE;
}



void CConvert::OnInsert() 
{
  int i,j,k;

  CString str;
  switch (k_mode)
  {
     case 1:
		    m_Grid=&m_Grid1;
			break;
     case 2:
		    m_Grid=&m_Grid2;
			break;
     case 3:
 		    m_Grid=&m_Grid3;
            break;
     case 4:
 		    m_Grid=&m_Grid4;
            break;
     case 5:
 		    m_Grid=&m_Grid5;
            break;
	  
  }

  
  switch (k_mode)
  {
     case 1:
     case 2:
     case 3:
		    i=m_Grid->GetRow();
		    m_Grid->SetRows(m_Grid->GetRows()+1);
			for (j=m_Grid->GetRows()-1;j>i+1;j--)
			{ 
				for (k=1;k<=5;k++)
				{
                m_Grid->SetCol(k); m_Grid->SetRow(j-1);  str=m_Grid->GetText();
                                 m_Grid->SetRow(j);     m_Grid->SetText(str);
				}
			}
			  str=""; m_Grid->SetCol(1);m_Grid->SetRow(i+1);m_Grid->SetText(str);
                      m_Grid->SetCol(2);m_Grid->SetText(str);
					  m_Grid->SetCol(3);m_Grid->SetText(str);
					  m_Grid->SetCol(4);m_Grid->SetText(str);
					  m_Grid->SetCol(5);m_Grid->SetText(str);
		    break;
	 case 4:
	 case 5:
		    i=m_Grid->GetRow();
		    m_Grid->SetRows(m_Grid->GetRows()+1);
			for (j=m_Grid->GetRows()-1;j>i+1;j--)
			{ 
				for (k=1;k<=7;k++)
				{
                m_Grid->SetCol(k); m_Grid->SetRow(j-1);  str=m_Grid->GetText();
                                 m_Grid->SetRow(j);     m_Grid->SetText(str);
				}
			}
			  str=""; m_Grid->SetCol(1);m_Grid->SetRow(i+1);m_Grid->SetText(str);
                      m_Grid->SetCol(2);m_Grid->SetText(str);
					  m_Grid->SetCol(3);m_Grid->SetText(str);
					  m_Grid->SetCol(4);m_Grid->SetText(str);
					  m_Grid->SetCol(5);m_Grid->SetText(str);
					  m_Grid->SetCol(6);m_Grid->SetText(str);
					  m_Grid->SetCol(7);m_Grid->SetText(str);
		    break;

	  
  }


}

void CConvert::OnDelete() 
{
  int i,j,k;
  CString str;

  switch (k_mode)
  {
     case 1:
		    m_Grid=&m_Grid1;
			break;
     case 2:
		    m_Grid=&m_Grid2;
			break;
     case 3:
 		    m_Grid=&m_Grid3;
            break;
     case 4:
 		    m_Grid=&m_Grid4;
            break;
     case 5:
 		    m_Grid=&m_Grid5;
            break;
	  
  }


  switch (k_mode)
  {
     case 1:
     case 2:
     case 3:

		    i=m_Grid->GetRow();
			if (i==0) break;
		 
			m_Grid->SetCol(1); m_Grid->SetRow(i);    str=m_Grid->GetText();
			str="确认删除 "+str;
			if (AfxMessageBox(str,MB_YESNO)==IDYES)
			{
			  for (j=i+1;j<m_Grid->GetRows();j++)
			  { 
				for (k=1;k<=5;k++)
				{
                  m_Grid->SetCol(k); m_Grid->SetRow(j);    str=m_Grid->GetText();
                                     m_Grid->SetRow(j-1);  m_Grid->SetText(str);
				}
			  }
			m_Grid->SetRows(m_Grid->GetRows()-1);
			}
		    break;
	 case 4:
	 case 5:
		    i=m_Grid->GetRow();
			if (i==0) break;
		 
			m_Grid->SetCol(1); m_Grid->SetRow(i);    str=m_Grid->GetText();
			str="确认删除 "+str;
			if (AfxMessageBox(str,MB_YESNO)==IDYES)
			{
			  for (j=i+1;j<m_Grid->GetRows();j++)
			  { 
				for (k=1;k<=7;k++)
				{
                  m_Grid->SetCol(k); m_Grid->SetRow(j);    str=m_Grid->GetText();
                                     m_Grid->SetRow(j-1);  m_Grid->SetText(str);
				}
			  }
			m_Grid->SetRows(m_Grid->GetRows()-1);
			}
		    break;
  
  }
	
}


void CConvert::OnOK() 
{
	// TODO: Add extra validation here
	WriteData();
	CDialog::OnOK();
}


double CConvert::CallL0(double l,int mode)
{
 
 double d0,l0;
 d0=l*180.0/PI;
// double xxx;
 l0=0;

 if (mode==0)   GyBl.Zbxt_work= &GyBl.WorkData.Zbxt;
       else     GyBl.Zbxt_work= &GyBl.WorkData.New_Zbxt;
 //中央子午线计算
 if (strcmp(GyBl.Zbxt_work->Xtmode,"自定义坐标系统")==0)
 {
    l0=GyBl.Zbxt_work->Zyzwx;
	l0=Deg(l0);
//	xxx=GyBl.Zbxt_work->Yp;
 }
 else
 {
//	 xxx=500000.000;
    {// int tt;
	  // 3度 6度计算

         CWnd::UpdateData(TRUE);
		 if (mode==0)
		 l0=m_Zyzwx;
         else l0=m_New_Zyzwx;			 
	  
    }
 }
 l0=l0 *PI/180;
// vSetSystem(WorkSpaceData.Zbxt.Ra,1/WorkSpaceData.Zbxt.Bl,0,l0,0,xxx,1);
 return l0;

}

double CConvert::Deg(double a2)
{
   double  d;
   double  du,fen,miao;
   double  nn;
   if (a2<0) { nn=-1;a2=-a2;} else nn=1;
   du=floor(a2);   fen=floor((a2-du)*100);
   miao=((a2-du)*100-fen)*100;
   if (miao>=60) { fen++;miao=0;
		    if (fen>=60)   { fen=0;du++;}
		   }
   d=du+fen/60+miao/3600;
   d=d*nn;
   return(d);
}

double CConvert::Dfm(double a2)
{
   double  d;
   double  du,fen,miao;
   double  nn;
   if (a2<0) { nn=-1;a2=-a2;} else nn=1;
   du=floor(a2);
   fen=floor((a2-du)*60);
   miao=((a2-du)*60-fen)*60;
    if ((miao+0.00001)>=60) { fen++;miao=0;
		    if (fen>=60)  { fen=0;du++;}
		   }
   d=du+fen/100+miao/10000;
   d=d*nn;
   return(d);
}

void CConvert::ReadData()
{
  int i,j,k;
  char  buf[100];
  double xx;
  m_Grid1.SetRows(1);
  m_Grid2.SetRows(1);
  m_Grid3.SetRows(1);
  m_Grid4.SetRows(1);
  m_Grid5.SetRows(1);
  m_Grid6.SetRows(1);
  m_Grid7.SetRows(1);
  FILE *in;
  in =fopen ("data","r+");
  if (in!=NULL)
  {
     //m_Grid1
     fread(&j,sizeof(int),1,in);
     m_Grid1.SetRows(j);
	 for (i=0;i<j-1;i++)
	 {
      m_Grid1.SetRow(i+1);
	  for (k=1;k<=5;k++)
	  {
           if (k==1) fread(buf,20,1,in);
	       else  { fread(&xx,sizeof(double),1,in);
	             if (xx!=0)     sprintf(buf,"%.3f",xx);
			     else           strcpy(buf,"");
		   }
	  m_Grid1.SetCol(k);   m_Grid1.SetText(buf);
	  }
	 }

     //m_Grid2
     fread(&j,sizeof(int),1,in);
     m_Grid2.SetRows(j);

	 for (i=0;i<j-1;i++)
	 {
      m_Grid2.SetRow(i+1);
	  for (k=1;k<=5;k++)
	  {
           if (k==1) fread(buf,20,1,in);
	       else  { fread(&xx,sizeof(double),1,in);
	             if (xx!=0)     				
				 {
					 if (k<=3)
					   sprintf(buf,"%.8f",xx);
					   else 
					   sprintf(buf,"%.3f",xx);
				 }
			     else           strcpy(buf,"");
		   }
	  m_Grid2.SetCol(k);   m_Grid2.SetText(buf);
	  }
	 }

     //m_Grid3
     fread(&j,sizeof(int),1,in);
     m_Grid3.SetRows(j);

	 for (i=0;i<j-1;i++)
	 {
      m_Grid3.SetRow(i+1);
	  for (k=1;k<=5;k++)
	  {
           if (k==1) fread(buf,20,1,in);
	       else  { fread(&xx,sizeof(double),1,in);
	             if (xx!=0)     
				 {
					 if (k<=3)
					   sprintf(buf,"%.3f",xx);
					   else 
					   sprintf(buf,"%.8f",xx);
				 }
			     else           strcpy(buf,"");
		   }
	  m_Grid3.SetCol(k);   m_Grid3.SetText(buf);
	  }
	 }

     //m_Grid4
     fread(&j,sizeof(int),1,in);
     m_Grid4.SetRows(j);

	 for (i=0;i<j-1;i++)
	 {
      m_Grid4.SetRow(i+1);
	  for (k=1;k<=7;k++)
	  {
           if (k==1) fread(buf,20,1,in);
	       else  { fread(&xx,sizeof(double),1,in);
	             if (xx!=0)     
				 {
					 if (k<=3)
					   sprintf(buf,"%.8f",xx);
					   else 
					   sprintf(buf,"%.3f",xx);
				 }
			     else           strcpy(buf,"");
		   }
	  m_Grid4.SetCol(k);   m_Grid4.SetText(buf);
	  }
	 }

     //m_Grid5

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -