// TargetDlg.cpp : 实现文件 // #include "stdafx.h" #include "TargetDlg.h" #include "afxdialogex.h" #include "Globe.h" #include "MapElevation.h" MapElevation m_mapElevation1; // CTargetDlg 对话框 IMPLEMENT_DYNAMIC(CTargetDlg, CDialogEx) CTargetDlg::CTargetDlg(CWnd* pParent /*=NULL*/) : CDialogEx(CTargetDlg::IDD, pParent) , m_targetID(1) , m_targetLon(0) , m_targetLat(0) , m_targetAlt(0) { } CTargetDlg::~CTargetDlg() { } void CTargetDlg::DoDataExchange(CDataExchange* pDX) { CDialogEx::DoDataExchange(pDX); DDX_Text(pDX, IDC_EDIT_TARGET_ID, m_targetID); DDV_MinMaxInt(pDX, m_targetID, 1, 255); DDX_Text(pDX, IDC_EDIT_TARGET_LON, m_targetLon); DDV_MinMaxDouble(pDX, m_targetLon, -180.0, 180.0); DDX_Text(pDX, IDC_EDIT_TARGET_LAT, m_targetLat); DDV_MinMaxDouble(pDX, m_targetLat, -90.0, 90.0); DDX_Text(pDX, IDC_EDIT_TARGET_ALT, m_targetAlt); DDV_MinMaxDouble(pDX, m_targetAlt, 0, 9999); } BEGIN_MESSAGE_MAP(CTargetDlg, CDialogEx) ON_BN_CLICKED(IDC_BUTTON_ADD_TARGET, &CTargetDlg::OnBnClickedButtonAddTarget) ON_WM_SHOWWINDOW() ON_BN_CLICKED(IDC_BUTTON_SELECT_TARGET, &CTargetDlg::OnBnClickedButtonSelectTarget) END_MESSAGE_MAP() // CTargetDlg 消息处理程序 BOOL CTargetDlg::OnInitDialog() { CDialogEx::OnInitDialog(); m_targetCount = 0; m_targetID = m_targetCount+1; for (int i = 0;i<255;i++) { m_bExistFlags[i] = false; } return TRUE; } void CTargetDlg::SetTargetCount(int count) { m_targetCount = count; } void CTargetDlg::SetExistFlag(int id,bool b) { if (id>0&&id<255) { m_bExistFlags[id-1] = b; } } void CTargetDlg::GetTargetLLA(int &id,double &lon,double &lat,double &alt) { id = m_targetID; lon = m_targetLon; lat = m_targetLat; alt = m_targetAlt; } //添加目标点 void CTargetDlg::OnBnClickedButtonAddTarget() { UpdateData(TRUE); CString strID; strID.Format("%d",m_targetID); CString strLon = ""; strLon.Format("%.5f",m_targetLon); CString strLat = ""; strLat.Format("%.5f",m_targetLat); CString strAlt = ""; strAlt.Format("%.0f",m_targetAlt); CString fileName = GetSoftwareCurrentDirectory() + "\\target.ini"; WritePrivateProfileString(strID,"lon",strLon.GetBuffer(), fileName); WritePrivateProfileString(strID,"lat",strLat.GetBuffer(), fileName); WritePrivateProfileString(strID,"alt",strAlt.GetBuffer(), fileName); ::SendMessage(g_mapHwnd,WM_DRAW_TARGET,NULL,NULL); m_targetCount++; CDialog::OnCancel(); } void CTargetDlg::OnShowWindow(BOOL bShow, UINT nStatus) { CDialogEx::OnShowWindow(bShow, nStatus); // TODO: 在此处添加消息处理程序代码 for(int i=0;i<255;i++) { if (m_bExistFlags[i] == false) { m_targetID = i+1; break; } } m_targetLon = 0.0; m_targetLat = 0.0; m_targetAlt = 0.0; UpdateData(FALSE); } //在地图上选点 void CTargetDlg::OnBnClickedButtonSelectTarget() { ::SendMessage(g_mapHwnd,WM_SEND_SELECTTARGET,0,0); } //在对话框里显示选择点的坐标和高程 void CTargetDlg::ShowPointPosition(double ptLon, double ptLat) { CString str; str.Format(_T("%.7f"),ptLon); GetDlgItem(IDC_EDIT_TARGET_LON)->SetWindowText(str); str.Format(_T("%.7f"),ptLat); GetDlgItem(IDC_EDIT_TARGET_LAT)->SetWindowText(str); //获取高程 float ptAlt = 0.0f; if(!m_mapElevation1.getElevation(ptAlt, ptLon, ptLat)) { ptAlt = 0.0f; } str.Format(_T("%.1f"),ptAlt); GetDlgItem(IDC_EDIT_TARGET_ALT)->SetWindowText(str); }