You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
GCS-GISControlDlg-for-981A-.../ShowHZDistanceDlg.cpp

150 lines
2.8 KiB
C++

2 years ago
// ShowHZDistanceDlg.cpp : ʵ<><CAB5><EFBFBD>ļ<EFBFBD>
//
#include "stdafx.h"
#include "ShowHZDistanceDlg.h"
//#include "afxdialogex.h"
#include "Globe.h"
#include <math.h>
// CShowHZDistanceDlg <20>Ի<EFBFBD><D4BB><EFBFBD>
//
IMPLEMENT_DYNAMIC(CShowHZDistanceDlg, CDialog)
CShowHZDistanceDlg::CShowHZDistanceDlg(CWnd* pParent /*=NULL*/)
: CDialog(CShowHZDistanceDlg::IDD, pParent)
{
ResetCoordinateData();
}
CShowHZDistanceDlg::~CShowHZDistanceDlg()
{
}
void CShowHZDistanceDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
DDX_Text(pDX, IDC_PT1_LAT, m_pt1Lat);
DDX_Text(pDX, IDC_PT2_LAT, m_pt2Lat);
DDX_Text(pDX, IDC_PT1_LON, m_pt1Lon);
DDX_Text(pDX, IDC_PT2_LON, m_pt2Lon);
DDX_Text(pDX, IDC_HZ_DISTANCE, m_strHZDistance);
DDX_Text(pDX, IDC_AZ_ANGLE, m_strAZAngle);
}
BEGIN_MESSAGE_MAP(CShowHZDistanceDlg, CDialog)
END_MESSAGE_MAP()
// CShowHZDistanceDlg <20><>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
void CShowHZDistanceDlg::OnCancel()
{
ResetCoordinateData();
// TODO: <20>ڴ<EFBFBD><DAB4><EFBFBD><EFBFBD><EFBFBD>ר<EFBFBD>ô<EFBFBD><C3B4><EFBFBD><EFBFBD><EFBFBD>/<2F><><EFBFBD><EFBFBD><EFBFBD>û<EFBFBD><C3BB><EFBFBD>
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>򣬱<EFBFBD>ʶ<EFBFBD>Ѿ<EFBFBD><D1BE>ر<EFBFBD>
if (g_mapHwnd != NULL)
{
::PostMessage(g_mapHwnd, WM_CLOSE_DISTANCE_DIALOG, 0, 0);
}
CDialog::OnCancel();
}
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//<2F><><EFBFBD><EFBFBD><EBA3BA><EFBFBD><EFBFBD>lon(<28>Զ<EFBFBD>Ϊ<EFBFBD><CEAA>λ)<29><>γ<EFBFBD><CEB3>lat(<28>Զ<EFBFBD>Ϊ<EFBFBD><CEAA>λ)
void CShowHZDistanceDlg::SetPtCoordinate(const double lon, const double lat)
{
if (!m_bHaveOnePoint)
{
m_bHaveOnePoint = true;
m_pt1Lon = lon;
m_pt1Lat = lat;
m_pt2Lon = 0.0;
m_pt2Lat = 0.0;
m_strHZDistance = _T("");
m_strAZAngle = _T("");
}
else
{
m_bHaveOnePoint = false;
m_pt2Lon = lon;
m_pt2Lat = lat;
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>֮<EFBFBD><D6AE><EFBFBD><EFBFBD>ˮƽ<CBAE><C6BD><EFBFBD><EFBFBD>
Cal2PtsDisAZ();
}
UpdateData(FALSE);
}
//<2F><><EFBFBD>ܣ<EFBFBD><DCA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>֮<EFBFBD><D6AE><EFBFBD><EFBFBD>ˮƽ<CBAE><C6BD><EFBFBD><EFBFBD>
void CShowHZDistanceDlg::Cal2PtsDisAZ()
{
double distance = 0;
double azValue = 0;
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>֮<EFBFBD><D6AE><EFBFBD>ľ<EFBFBD><C4BE><EFBFBD><EFBFBD>ͷ<EFBFBD>λ<EFBFBD><CEBB>
CalculateTwoPtsDistanceAzimuth(distance, azValue, m_pt1Lon, m_pt1Lat, m_pt2Lon, m_pt2Lat, 3);
m_strHZDistance.Format("%.4fkm", distance*0.001);
m_strAZAngle.Format("%.1f", azValue);
}
//<2F><><EFBFBD>ܣ<EFBFBD><DCA3><EFBFBD>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
void CShowHZDistanceDlg::ResetCoordinateData()
{
m_hzDistance = 0.0;
m_pt1Lat = 0.0;
m_pt2Lat = 0.0;
m_pt1Lon = 0.0;
m_pt2Lon = 0.0;
m_bHaveOnePoint = false;
m_strHZDistance = _T("");
//<2F><>λ<EFBFBD><CEBB>
m_strAZAngle = _T("");
}
//<2F><><EFBFBD>ܣ<EFBFBD><DCA3>ƶ<EFBFBD><C6B6>Ի<EFBFBD><D4BB>򵽸<EFBFBD><F2B5BDB8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD>
//<2F><><EFBFBD><EFBFBD><EBA3BA>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD>rcArea
void CShowHZDistanceDlg::MoveToGivenArea(const CRect rcArea)
{
m_rcHZDistanceDlg = rcArea;
m_rcHZDistanceDlg.top += 20;
}
BOOL CShowHZDistanceDlg::OnInitDialog()
{
CDialog::OnInitDialog();
//<2F>ƶ<EFBFBD><C6B6><EFBFBD><EFBFBD>̶<EFBFBD><CCB6><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD>
SetWindowPos( &CWnd::wndTop, m_rcHZDistanceDlg.left, m_rcHZDistanceDlg.top, 0, 0, SWP_NOSIZE | SWP_NOACTIVATE | SWP_HIDEWINDOW );
return TRUE; // return TRUE unless you set the focus to a control
// <20>쳣: OCX <20><><EFBFBD><EFBFBD>ҳӦ<D2B3><D3A6><EFBFBD><EFBFBD> FALSE
}