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

📄 convert.cpp

📁 坐标转换程序,可以将空间直角坐标转化为大地坐标
💻 CPP
📖 第 1 页 / 共 3 页
字号:
// Convert.cpp : implementation file
//

#include "stdafx.h"
#include "坐标转换.h"
#include "Convert.h"
#include "Converting.h"
#include "zbxtsz.h"
#include "gybl.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/////////////////////////////////////////////////////////////////////////////
// CConvert dialog


CConvert::CConvert(CWnd* pParent /*=NULL*/)
	: CDialog(CConvert::IDD, pParent)
{
	//{{AFX_DATA_INIT(CConvert)
	m_s21 = -1;
	m_s22 = -1;
	m_s23 = -1;
	m_s24 = -1;
	m_s25 = -1;
	m_s26 = -1;
	m_s27 = -1;
	m_New_Zyzwx = 0.0;
	m_Zyzwx = 0.0;
	//}}AFX_DATA_INIT
}


void CConvert::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CConvert)
	DDX_Control(pDX, IDC_NEW_Zyzwx, m_C_New_Zyzwx);
	DDX_Control(pDX, IDC_Zyzwx, m_C_Zyzwx);
	DDX_Control(pDX, IDC_ZBXT, m_Zbxt);
	DDX_Control(pDX, IDC_New_ZBXT, m_New_Zbxt);
	DDX_Control(pDX, IDC_Txfs1, m_Txfs1);
	DDX_Control(pDX, IDC_a21, m_c21);
	DDX_Control(pDX, IDC_a22, m_c22);
	DDX_Control(pDX, IDC_a23, m_c23);
	DDX_Control(pDX, IDC_a24, m_c24);
	DDX_Control(pDX, IDC_a25, m_c25);
	DDX_Control(pDX, IDC_a26, m_c26);
	DDX_Control(pDX, IDC_a27, m_c27);
	DDX_Radio(pDX, IDC_a21, m_s21);
	DDX_Radio(pDX, IDC_a22, m_s22);
	DDX_Radio(pDX, IDC_a23, m_s23);
	DDX_Radio(pDX, IDC_a24, m_s24);
	DDX_Radio(pDX, IDC_a25, m_s25);
	DDX_Radio(pDX, IDC_a26, m_s26);
	DDX_Radio(pDX, IDC_a27, m_s27);
	DDX_Text(pDX, IDC_NEW_Zyzwx, m_New_Zyzwx);
	DDX_Text(pDX, IDC_Zyzwx, m_Zyzwx);
	DDX_Control(pDX, IDC_Grid1, m_Grid1);
	DDX_Control(pDX, IDC_Grid2, m_Grid2);
	DDX_Control(pDX, IDC_Grid3, m_Grid3);
	DDX_Control(pDX, IDC_Grid4, m_Grid4);
	DDX_Control(pDX, IDC_Grid5, m_Grid5);
	DDX_Control(pDX, IDC_Grid6, m_Grid6);
	DDX_Control(pDX, IDC_Grid7, m_Grid7);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CConvert, CDialog)
	//{{AFX_MSG_MAP(CConvert)
	ON_BN_CLICKED(IDC_Dyzbxt, OnDyzbxt)
	ON_BN_CLICKED(IDC_Txfs1, OnTxfs1)
	ON_BN_CLICKED(IDC_Txfs2, OnTxfs2)
	ON_BN_CLICKED(IDC_Txfs3, OnTxfs3)
	ON_BN_CLICKED(IDC_Txfs4, OnTxfs4)
	ON_BN_CLICKED(IDC_a21, Ona21)
	ON_BN_CLICKED(IDC_a22, Ona22)
	ON_BN_CLICKED(IDC_a23, Ona23)
	ON_BN_CLICKED(IDC_a24, Ona24)
	ON_BN_CLICKED(IDC_a25, Ona25)
	ON_BN_CLICKED(IDC_a26, Ona26)
	ON_BN_CLICKED(IDC_a27, Ona27)
	ON_CBN_SELCHANGE(IDC_New_ZBXT, OnSelchangeNewZBXT)
	ON_CBN_SELCHANGE(IDC_ZBXT, OnSelchangeZbxt)
	ON_BN_CLICKED(ID_Insert, OnInsert)
	ON_BN_CLICKED(ID_Delete, OnDelete)
	ON_BN_CLICKED(ID_change, Onchange)
	ON_BN_CLICKED(ID_Input, OnInput)
	ON_BN_CLICKED(ID_Output, OnOutput)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CConvert message handlers

void CConvert::OnDyzbxt() 
{
  CZbxtSz dlg;
  dlg.DoModal();

  int i,j;
  i=m_Zbxt.GetCount();
  for (j=0;j<i;j++) 
  { m_Zbxt.DeleteString(0);
    m_New_Zbxt.DeleteString(0);
  }
   GyBl.Zbxt_work= GyBl.Zbxt_head;
	while (GyBl.Zbxt_work!=NULL)
	{
      m_Zbxt.AddString(GyBl.Zbxt_work->XtName);
      m_New_Zbxt.AddString(GyBl.Zbxt_work->XtName);
      GyBl.Zbxt_work=GyBl.Zbxt_work->next;
	}
	SzzbxtName();

}

BOOL CConvert::OnInitDialog() 
{
	int i;
    k_mode=1;
	CDialog::OnInitDialog();
	CString sHeading;
	sHeading = _T("序号|点    号 | 转 换 前 X 坐 标  |  转 换 前 Y 坐 标 | 转 换 后 X 坐 标  | 转 换 后 Y 坐 标  ");
    m_Grid1.SetFormatString  ( sHeading);
     
	sHeading = _T("序号|   点  号 |    纬           度     |      经           度    | 转 换 后 X 坐 标  | 转 换 后 Y 坐 标  ");
    m_Grid2.SetFormatString  ( sHeading);

	sHeading = _T("序号|   点  号 |    X    坐    标  |     Y    坐    标 |   纬              度      |      经             度    ");
    m_Grid3.SetFormatString  ( sHeading);

	sHeading = _T("序号|   点  号 |  B  |  L |  H  |X|Y|Z");
    m_Grid4.SetFormatString  ( sHeading);


	sHeading = _T("序号|   点  号 |  X  | Y   |  Z |B|L|H");
    m_Grid5.SetFormatString  ( sHeading);

   	for( i = 1; i < 8; i++ )
	{	m_Grid4.SetColWidth(i,1500);
        m_Grid5.SetColWidth(i,1500);
	}


	sHeading = _T("序号|   点  号 | 转 换 前 X 坐 标  |  转 换 前 Y 坐 标 | 转 换 后 X 坐 标  | 转 换 后 Y 坐 标  ");
    m_Grid6.SetFormatString  ( sHeading);

	sHeading = _T("序号|   点  号 | 转 换 前 X 坐 标  |  转 换 前 Y 坐 标 | 转 换 前 Z 坐 标 | 转 换 后 X 坐 标  | 转 换 后 Y 坐 标  |转 换 前 Y 坐 标 ");
    m_Grid7.SetFormatString  ( sHeading);

    m_Grid1.SetAllowUserResizing(1);
    m_Grid2.SetAllowUserResizing(1);
    m_Grid3.SetAllowUserResizing(1);
    m_Grid4.SetAllowUserResizing(1);
    m_Grid5.SetAllowUserResizing(1);
    m_Grid6.SetAllowUserResizing(1);
    m_Grid7.SetAllowUserResizing(1);

	m_Txfs1.SetCheck(1);
    Szzhfs();
    GyBl.Zbxt_work= GyBl.Zbxt_head;
	while (GyBl.Zbxt_work!=NULL)
	{
      m_Zbxt.AddString(GyBl.Zbxt_work->XtName);
      m_New_Zbxt.AddString(GyBl.Zbxt_work->XtName);
      GyBl.Zbxt_work=GyBl.Zbxt_work->next;
	}
	SzzbxtName();
    ReadData();
	return TRUE;  // return TRUE unless you set the focus to a control
	              // EXCEPTION: OCX Property Pages should return FALSE
}

void CConvert::OnTxfs1() 
{
  GyBl.WorkData.Mode=1;
  Szzhfs();
}

void CConvert::OnTxfs2() 
{
  GyBl.WorkData.Mode=2;
  Szzhfs();
}

void CConvert::OnTxfs3() 
{
  GyBl.WorkData.Mode=3;
  Szzhfs();
}

void CConvert::OnTxfs4() 
{
  GyBl.WorkData.Mode=4;
  Szzhfs();
}

void CConvert::Szzhfs()
{
	m_c21.EnableWindow(GyBl.WorkData.Mode==1||GyBl.WorkData.Mode==2);
	m_c22.EnableWindow(GyBl.WorkData.Mode==1||GyBl.WorkData.Mode==2);
	m_c23.EnableWindow(GyBl.WorkData.Mode==1||GyBl.WorkData.Mode==2);
	m_c24.EnableWindow(GyBl.WorkData.Mode==3);
	m_c25.EnableWindow(GyBl.WorkData.Mode==3);
	m_c26.EnableWindow(GyBl.WorkData.Mode==4);
	m_c27.EnableWindow(GyBl.WorkData.Mode==4);
    Szzbxt();
}

CConvert::Szzbxt()
{
    m_Zbxt.EnableWindow( ((GyBl.WorkData.Mode==1||GyBl.WorkData.Mode==2)&&
	   (GyBl.WorkData.Ys[1]+GyBl.WorkData.Ys[2]+GyBl.WorkData.Ys[3]>=1))
	   || ( (GyBl.WorkData.Mode==3)&&
	   (GyBl.WorkData.Ys[4]+GyBl.WorkData.Ys[5])));

    m_New_Zbxt.EnableWindow( (GyBl.WorkData.Mode==1||GyBl.WorkData.Mode==2)&&
	   (GyBl.WorkData.Ys[1]==1)  );

    m_C_New_Zyzwx.EnableWindow( ((GyBl.WorkData.Mode==1||GyBl.WorkData.Mode==2)&&
	   (GyBl.WorkData.Ys[1]==1)) &&(!strcmp(GyBl.WorkData.New_Zbxt.Xtmode,"系统保留"))  );
   

	  if (strcmp(GyBl.WorkData.Zbxt.Xtmode,"系统保留")==0)
	  {
	   m_C_Zyzwx.EnableWindow((GyBl.WorkData.Mode==1||GyBl.WorkData.Mode==2)&&
	       ((GyBl.WorkData.Ys[1]==1||GyBl.WorkData.Ys[3]==1||GyBl.WorkData.Ys[2]==1) ));
	  }
      else
	  m_C_Zyzwx.EnableWindow(FALSE);


   m_c21.SetCheck(GyBl.WorkData.Ys[1]==1);
   m_c22.SetCheck(GyBl.WorkData.Ys[2]==1);
   m_c23.SetCheck(GyBl.WorkData.Ys[3]==1);
   m_c24.SetCheck(GyBl.WorkData.Ys[4]==1);
   m_c25.SetCheck(GyBl.WorkData.Ys[5]==1);
   m_c26.SetCheck(GyBl.WorkData.Ys[6]==1);
   m_c27.SetCheck(GyBl.WorkData.Ys[7]==1);
   Szinput();
}

void CConvert::Ona21() 
{
    GyBl.WorkData.Ys[1]=1; 
    if (GyBl.WorkData.Ys[1]==1)
	{
      GyBl.WorkData.Ys[2]=GyBl.WorkData.Ys[3]=0;
	}
    Szzbxt();
}

void CConvert::Ona22() 
{
    GyBl.WorkData.Ys[2]=1;
    if (GyBl.WorkData.Ys[2]==1)
	{
      GyBl.WorkData.Ys[1]=GyBl.WorkData.Ys[3]=0;
	}
    Szzbxt();
}

void CConvert::Ona23() 
{
    GyBl.WorkData.Ys[3]=1;
    if (GyBl.WorkData.Ys[3]==1)
	{
      GyBl.WorkData.Ys[1]=GyBl.WorkData.Ys[2]=0;
	}
    Szzbxt();
}

void CConvert::Ona24() 
{
    GyBl.WorkData.Ys[4]=1;
    if (GyBl.WorkData.Ys[4]==1)  GyBl.WorkData.Ys[5]=0;
    Szzbxt();
}

void CConvert::Ona25() 
{
    GyBl.WorkData.Ys[5]=1;
    if (GyBl.WorkData.Ys[5]==1)  GyBl.WorkData.Ys[4]=0;
    Szzbxt();
}

void CConvert::Ona26() 
{
    GyBl.WorkData.Ys[6]=1;
    if (GyBl.WorkData.Ys[6]==1)  GyBl.WorkData.Ys[7]=0;
    Szzbxt();
}

void CConvert::Ona27() 
{
    GyBl.WorkData.Ys[7]=1;
    if (GyBl.WorkData.Ys[7]==1)  GyBl.WorkData.Ys[6]=0;
    Szzbxt();
}

CConvert::SzzbxtName()
{
 	int i;
    i=0;  
    GyBl.Zbxt_work= GyBl.Zbxt_head;
	while (GyBl.Zbxt_work!=NULL)
	{ i++;
      if (strcmp(GyBl.Zbxt_work->XtName,GyBl.WorkData.Zbxt.XtName)==0) break;
      GyBl.Zbxt_work=GyBl.Zbxt_work->next;
	}

    if (GyBl.Zbxt_work==NULL)
	{
     i++;
     GyBl.NewZbxt();
	 strcpy(GyBl.Zbxt_work->XtName,GyBl.WorkData.Zbxt.XtName);
	 strcpy(GyBl.Zbxt_work->Xtmode,GyBl.WorkData.Zbxt.Xtmode);
	 GyBl.Zbxt_work->Ra=GyBl.WorkData.Zbxt.Ra;
	 GyBl.Zbxt_work->Bl=GyBl.WorkData.Zbxt.Bl;
 	 GyBl.Zbxt_work->Bl_num=GyBl.WorkData.Zbxt.Bl_num;
 	 GyBl.Zbxt_work->Zyzwx=GyBl.WorkData.Zbxt.Zyzwx;
 	 GyBl.Zbxt_work->Tyg=GyBl.WorkData.Zbxt.Tyg;
 	 GyBl.Zbxt_work->Xp=GyBl.WorkData.Zbxt.Xp;
 	 GyBl.Zbxt_work->Yp=GyBl.WorkData.Zbxt.Yp;
      m_Zbxt.AddString(GyBl.Zbxt_work->XtName);
	}
     m_Zbxt.SetCurSel(i-1);    

	 strcpy(GyBl.WorkData.Zbxt.Xtmode,GyBl.Zbxt_work->Xtmode);
	 GyBl.WorkData.Zbxt.Ra=GyBl.Zbxt_work->Ra;
	 GyBl.WorkData.Zbxt.Bl=GyBl.Zbxt_work->Bl;
 	 GyBl.WorkData.Zbxt.Bl_num=GyBl.Zbxt_work->Bl_num;
 	 GyBl.WorkData.Zbxt.Zyzwx=GyBl.Zbxt_work->Zyzwx;
 	 GyBl.WorkData.Zbxt.Tyg=GyBl.Zbxt_work->Tyg;
 	 GyBl.WorkData.Zbxt.Xp=GyBl.Zbxt_work->Xp;
 	 GyBl.WorkData.Zbxt.Yp=GyBl.Zbxt_work->Yp;
			
     m_Zyzwx=GyBl.WorkData.Zbxt.Zyzwx;

    i=0;  
    GyBl.Zbxt_work= GyBl.Zbxt_head;
	while (GyBl.Zbxt_work!=NULL)
	{ i++;
      if (strcmp(GyBl.Zbxt_work->XtName,GyBl.WorkData.New_Zbxt.XtName)==0) break;
      GyBl.Zbxt_work=GyBl.Zbxt_work->next;
	}

    if (GyBl.Zbxt_work==NULL)
	{
     i++;
     GyBl.NewZbxt();
	 strcpy(GyBl.Zbxt_work->XtName,GyBl.WorkData.New_Zbxt.XtName);
	 strcpy(GyBl.Zbxt_work->Xtmode,GyBl.WorkData.New_Zbxt.Xtmode);
	 GyBl.Zbxt_work->Ra=GyBl.WorkData.New_Zbxt.Ra;
	 GyBl.Zbxt_work->Bl=GyBl.WorkData.New_Zbxt.Bl;
 	 GyBl.Zbxt_work->Bl_num=GyBl.WorkData.New_Zbxt.Bl_num;
 	 GyBl.Zbxt_work->Zyzwx=GyBl.WorkData.New_Zbxt.Zyzwx;
 	 GyBl.Zbxt_work->Tyg=GyBl.WorkData.New_Zbxt.Tyg;
 	 GyBl.Zbxt_work->Xp=GyBl.WorkData.New_Zbxt.Xp;
 	 GyBl.Zbxt_work->Yp=GyBl.WorkData.New_Zbxt.Yp;
      m_New_Zbxt.AddString(GyBl.Zbxt_work->XtName);
	}
     m_New_Zbxt.SetCurSel(i-1);    

	 strcpy(GyBl.WorkData.New_Zbxt.Xtmode,GyBl.Zbxt_work->Xtmode);
	 GyBl.WorkData.New_Zbxt.Ra=GyBl.Zbxt_work->Ra;
	 GyBl.WorkData.New_Zbxt.Bl=GyBl.Zbxt_work->Bl;
 	 GyBl.WorkData.New_Zbxt.Bl_num=GyBl.Zbxt_work->Bl_num;
 	 GyBl.WorkData.New_Zbxt.Zyzwx=GyBl.Zbxt_work->Zyzwx;
 	 GyBl.WorkData.New_Zbxt.Tyg=GyBl.Zbxt_work->Tyg;
 	 GyBl.WorkData.New_Zbxt.Xp=GyBl.Zbxt_work->Xp;
 	 GyBl.WorkData.New_Zbxt.Yp=GyBl.Zbxt_work->Yp;

     m_New_Zyzwx=GyBl.WorkData.New_Zbxt.Zyzwx;

 	 CWnd::UpdateData(FALSE);
	 Szzbxt();
}

void CConvert::OnSelchangeNewZBXT() 
{
 CString  str;
  m_New_Zbxt.GetLBText(m_New_Zbxt.GetCurSel(),str);
  strcpy(GyBl.WorkData.New_Zbxt.XtName,str);
  SzzbxtName();	
}

void CConvert::OnSelchangeZbxt() 
{
  CString  str;
  m_Zbxt.GetLBText(m_Zbxt.GetCurSel(),str);
  strcpy(GyBl.WorkData.Zbxt.XtName,str);
  SzzbxtName();	
}

CConvert::Szinput()
{
 m_Grid1.ShowWindow(FALSE);
 m_Grid2.ShowWindow(FALSE);
 m_Grid3.ShowWindow(FALSE);
 m_Grid4.ShowWindow(FALSE);
 m_Grid5.ShowWindow(FALSE);
 m_Grid6.ShowWindow(FALSE);
 m_Grid7.ShowWindow(FALSE);
 if (GyBl.WorkData.Mode==1||GyBl.WorkData.Mode==2)
 {
   m_Grid1.ShowWindow(GyBl.WorkData.Ys[1]==1);
   m_Grid2.ShowWindow(GyBl.WorkData.Ys[2]==1);
   m_Grid3.ShowWindow(GyBl.WorkData.Ys[3]==1);
   if(GyBl.WorkData.Ys[1]==1) k_mode=1;
   if(GyBl.WorkData.Ys[2]==1) k_mode=2;
   if(GyBl.WorkData.Ys[3]==1) k_mode=3;
 }

if (GyBl.WorkData.Mode==3)
 {
   m_Grid4.ShowWindow(GyBl.WorkData.Ys[4]==1);
   m_Grid5.ShowWindow(GyBl.WorkData.Ys[5]==1);
   if(GyBl.WorkData.Ys[4]==1) k_mode=4;
   if(GyBl.WorkData.Ys[5]==1) k_mode=5;

 }

if (GyBl.WorkData.Mode==4)
 {
   m_Grid6.ShowWindow(GyBl.WorkData.Ys[6]==1);
   m_Grid7.ShowWindow(GyBl.WorkData.Ys[7]==1);
   if(GyBl.WorkData.Ys[6]==1) k_mode=6;
   if(GyBl.WorkData.Ys[7]==1) k_mode=7;

 }
}

BEGIN_EVENTSINK_MAP(CConvert, CDialog)
    //{{AFX_EVENTSINK_MAP(CConvert)
	ON_EVENT(CConvert, IDC_Grid1, -600 /* Click */, OnClickGrid1, VTS_NONE)
	ON_EVENT(CConvert, IDC_Grid2, -600 /* Click */, OnClickGrid1, VTS_NONE)
	ON_EVENT(CConvert, IDC_Grid3, -600 /* Click */, OnClickGrid1, VTS_NONE)
	ON_EVENT(CConvert, IDC_Grid4, -600 /* Click */, OnClickGrid1, VTS_NONE)
	ON_EVENT(CConvert, IDC_Grid5, -600 /* Click */, OnClickGrid1, VTS_NONE)
	ON_EVENT(CConvert, IDC_Grid1, 71 /* EnterCell */, OnEnterCellGrid1, VTS_NONE)
	ON_EVENT(CConvert, IDC_Grid2, 71 /* EnterCell */, OnEnterCellGrid1, VTS_NONE)
	ON_EVENT(CConvert, IDC_Grid3, 71 /* EnterCell */, OnEnterCellGrid1, VTS_NONE)
	ON_EVENT(CConvert, IDC_Grid4, 71 /* EnterCell */, OnEnterCellGrid1, VTS_NONE)
	ON_EVENT(CConvert, IDC_Grid5, 71 /* EnterCell */, OnEnterCellGrid1, VTS_NONE)
	ON_EVENT(CConvert, IDC_Grid1, -603 /* KeyPress */, OnKeyPressGrid1, VTS_PI2)

⌨️ 快捷键说明

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