📄 mapmarikdlg.cpp
字号:
// MapMarikdlg.cpp : implementation file
//
#include "stdafx.h"
#include "CalSurBase.h"
#include "MapMarikdlg.h"
#include "Survey.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CMapMarikdlg dialog
CMapMarikdlg::CMapMarikdlg(CWnd* pParent /*=NULL*/)
: CDialog(CMapMarikdlg::IDD, pParent)
{
//{{AFX_DATA_INIT(CMapMarikdlg)
m_checkdh = FALSE;
m_blc = _T("");
m_map = _T("");
m_meri = _T("");
m_newmap = _T("");
m_oldmap = _T("");
m_dudai = -1;
m_geo = -1;
m_zbx = -1;
//}}AFX_DATA_INIT
}
void CMapMarikdlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CMapMarikdlg)
DDX_Check(pDX, IDC_CHECK_DH, m_checkdh);
DDX_Text(pDX, IDC_EDITBLC, m_blc);
DDX_Text(pDX, IDC_EDITMAP, m_map);
DDX_Text(pDX, IDC_EDITMERI, m_meri);
DDX_Text(pDX, IDC_EDITNEWMAP, m_newmap);
DDX_Text(pDX, IDC_EDITOLDMAP, m_oldmap);
DDX_Control(pDX, IDC_MSFLEXGRID_SHOW, m_show);
DDX_Radio(pDX, IDC_RADIO_DUDAIA, m_dudai);
DDX_Radio(pDX, IDC_RADIO_GEOA, m_geo);
DDX_Radio(pDX, IDC_RADIO_ZB54, m_zbx);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CMapMarikdlg, CDialog)
//{{AFX_MSG_MAP(CMapMarikdlg)
ON_BN_CLICKED(IDC_BUTTONPOLT, OnButtonpolt)
ON_BN_CLICKED(IDC_RADIO_GEOA, OnRadioGeoa)
ON_BN_CLICKED(IDC_RADIO_GEOB, OnRadioGeob)
ON_BN_CLICKED(IDC_RADIO_ZB54, OnRadioZb54)
ON_BN_CLICKED(IDC_RADIO_ZB80, OnRadioZb80)
ON_BN_CLICKED(IDC_CHECK_DH, OnCheckDh)
ON_BN_CLICKED(IDC_RADIO_DUDAIA, OnRadioDudaia)
ON_BN_CLICKED(IDC_RADIO_DUDAIB, OnRadioDudaib)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CMapMarikdlg message handlers
void CMapMarikdlg::OnOK()
{
CSurvey survey;
double Sb=0,Wl=0;
double Nb=0,El=0;
CString strport;
UpdateData(true);
if(m_map.IsEmpty()) {return;}
long lhf=m_map.Find("-");
m_map.MakeUpper();
if(lhf>0)
{
if(m_map.GetLength()>=3)
{
m_newmap=survey.GetNewtfFormOldtf(m_map);
m_oldmap=m_map;
survey.SetNewTfCalLL(m_newmap,&Sb,&Wl,&Nb,&El);
}
}
else
{
if(m_map.GetLength()==10)
{
m_oldmap=survey.GetOldThFormNewTh(m_map);
m_newmap=m_map;
survey.SetNewTfCalLL(m_map,&Sb,&Wl,&Nb,&El);
}
}
//设置参数
survey.GetSysDat(m_zbx+1);
double zya=0,dh=0;
long lblc;
lblc=atol(survey.SetBLC);
/*if(lblc>10000)
{ survey.dudai = 6; }
else
{ survey.dudai = 3; }
*/
if(m_dudai==0)
{ survey.dudai = 3; }
else
{ survey.dudai = 6; }
survey.BCalMeri(Nb,Sb,survey.dudai,&zya,&dh);
m_meri.Format("%.4f",zya);
survey.dmeil_last=(int)zya;
survey.fdh_last =(int)dh;
if(m_geo==1)
{
WriteGridDate(Sb,El,1);
WriteGridDate(Nb,El,2);
WriteGridDate(Nb,Wl,3);
WriteGridDate(Sb,Wl,4);
}
else
{
survey.dgetbl_b =El; survey.dgetbl_l =Sb;
survey.BlToXy();
if(m_checkdh)
{ survey.dgety=survey.dgety+dh*1000000;}
WriteGridDatexy(survey.dgety,survey.dgetx,1);
survey.dgetbl_b =El; survey.dgetbl_l =Nb;
survey.BlToXy();
if(m_checkdh)
{ survey.dgety=survey.dgety+dh*1000000;}
WriteGridDatexy(survey.dgety,survey.dgetx,2);
survey.dgetbl_b =Wl; survey.dgetbl_l =Nb;
survey.BlToXy();
if(m_checkdh)
{ survey.dgety=survey.dgety+dh*1000000;}
WriteGridDatexy(survey.dgety,survey.dgetx,3);
survey.dgetbl_b =Wl; survey.dgetbl_l =Sb;
survey.BlToXy();
if(m_checkdh)
{ survey.dgety=survey.dgety+dh*1000000;}
WriteGridDatexy(survey.dgety,survey.dgetx,4);
}
m_blc=survey.SetBLC;
UpdateData(false);
}
void CMapMarikdlg::OnButtonpolt()
{
CString strfilename;
CFileDialog gldOpenFile(true,"*.*",NULL,OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,"文本文件(*.txt)|*.txt|所有文件(*.*)|*.*|",NULL);
gldOpenFile.DoModal();
strfilename=gldOpenFile.GetPathName();
CStdioFile n_File;
CFileException e;
if(!n_File.Open(strfilename,CFile::modeNoTruncate | CFile::modeWrite,&e)) //modeNoTruncate在原文件上添加
{
if(!n_File.Open(strfilename,CFile::modeCreate | CFile::modeWrite,&e))
{ return; }
}
n_File.SeekToEnd();
CString strport;
if(m_zbx==0)
{ strport=m_newmap+"("+m_oldmap+") 54坐标系\n";}
else
{ strport=m_newmap+"("+m_oldmap+") 80坐标系\n";}
n_File.WriteString(strport);
strport="比例尺为1:"+m_blc+" 中央经线为:" + m_meri + "\n";
n_File.WriteString(strport);
for(int j=1;j<=4;j++)
{
m_show.SetRow(j);
m_show.SetCol(0);
strport=m_show.GetText();
m_show.SetCol(1);
strport=strport+" "+m_show.GetText();
m_show.SetCol(2);
strport=strport+" "+m_show.GetText();
strport+="\n";
n_File.WriteString(strport);
}
strport="-----------------------------------------------\n";
n_File.WriteString(strport);
strport="-----------------------------------------------\n";
n_File.WriteString(strport);
strport="\n";
n_File.WriteString(strport);
strport="\n";
n_File.WriteString(strport);
n_File.Close();
ShellExecute(::GetDesktopWindow(), _T("open"), strfilename, NULL, NULL, SW_NORMAL);
}
void CMapMarikdlg::OnRadioGeoa()
{
UpdateData(true);
CString StrTxt;
if(m_geo==0)
{
StrTxt = "<点号>|< 坐标X >|< 坐标Y >";
m_show.SetCol(0);
m_show.SetRow(0);
m_show.SetFormatString(StrTxt);
m_show.Refresh();
}
OnOK();
}
void CMapMarikdlg::OnRadioGeob()
{
UpdateData(true);
CString StrTxt;
if(m_geo==1)
{
//StrTxt = "< 点号 >|< 坐标X >|< 坐标Y >";
StrTxt = "< 点号>|< 东坐标(经度) >|< 北坐标(纬度) >";
m_show.SetCol(0);
m_show.SetRow(0);
m_show.SetFormatString(StrTxt);
m_show.Refresh();
}
OnOK();
}
void CMapMarikdlg::OnRadioZb54()
{
OnOK();
}
void CMapMarikdlg::OnRadioZb80()
{
OnOK();
}
void CMapMarikdlg::OnCheckDh()
{
OnOK();
}
void CMapMarikdlg::OnRadioDudaia()
{
OnOK();
}
void CMapMarikdlg::OnRadioDudaib()
{
OnOK();
}
void CMapMarikdlg::WriteGridDate(double jd,double wd,long gridrow) //写数据
{
CString strport;
m_show.SetCol(0); m_show.SetRow(gridrow);
strport.Format("%i",gridrow);
m_show.SetText(strport);
strport.Format("%.6f",jd);
m_show.SetCol(1); m_show.SetText(strport);
strport.Format("%.6f",wd);
m_show.SetCol(2); m_show.SetText(strport);
m_show.Refresh();
}
void CMapMarikdlg::WriteGridDatexy(double jd,double wd,long gridrow) //写数据
{
CString strport;
m_show.SetCol(0); m_show.SetRow(gridrow);
strport.Format("%i",gridrow);
m_show.SetText(strport);
strport.Format("%.4f",jd);
m_show.SetCol(1); m_show.SetText(strport);
strport.Format("%.4f",wd);
m_show.SetCol(2); m_show.SetText(strport);
m_show.Refresh();
}
BOOL CMapMarikdlg::OnInitDialog()
{
CDialog::OnInitDialog();
CString StrTxt;
m_show.SetCol(0);
m_show.SetRow(0);
StrTxt = "<点号>|< 坐标X >|< 坐标Y >";
m_show.SetFormatString(StrTxt);
m_show.Refresh();
m_zbx=0;
m_geo=0;
m_dudai=0;
UpdateData(false);
return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -