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.

590 lines
12 KiB
C++

2 years ago
// CFlyLineDesign.cpp: ʵ<><CAB5><EFBFBD>ļ<EFBFBD>
//
#include "stdafx.h"
#include "FlyLineDesign.h"
#include "SetSaveLineID.h"
#include "Globe.h"
#include "LineDesign.h"
// CFlyLineDesign <20>Ի<EFBFBD><D4BB><EFBFBD>
CFlyLineDesign::CFlyLineDesign(CWnd* pParent /*=NULL*/)
: CDialog(CFlyLineDesign::IDD, pParent)
{
InitiazeAllMembers();
//<2F>ܵĺ<DCB5><C4BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
m_totalPtNums = 255;
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݼ<EFBFBD><DDBC><EFBFBD>
m_pLinePts = new PtStruct[m_totalPtNums];
memset(m_pLinePts, 0, sizeof(PtStruct)*m_totalPtNums);
//<2F><><EFBFBD><EFBFBD>ģʽΪ<CABD><CEAA><EFBFBD>õ㡱
g_ptModeInLineDesign = 0;
}
CFlyLineDesign::~CFlyLineDesign()
{
if (m_pLinePts != NULL)
{
delete []m_pLinePts;
m_pLinePts = NULL;
}
}
void CFlyLineDesign::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
DDX_Text(pDX, IDC_EDIT_ALT, m_ptAlt);
DDV_MinMaxDouble(pDX, m_ptAlt, 0, 5000);
DDX_Text(pDX, IDC_EDIT_LAT, m_ptLat);
DDV_MinMaxDouble(pDX, m_ptLat, -90.0, 90.0);
DDX_Text(pDX, IDC_EDIT_LON, m_ptLon);
DDV_MinMaxDouble(pDX, m_ptLon, -180.0, 180.0);
DDX_Text(pDX, IDC_EDIT_STAY_TIME, m_flySpeed);
DDX_Control(pDX, IDC_COMBO_PT, m_comboPt);
}
BEGIN_MESSAGE_MAP(CFlyLineDesign, CDialog)
ON_BN_CLICKED(IDC_BTN_ADD_POINT, OnAddFlyLinePoint)
ON_BN_CLICKED(IDC_BTN_EDIT_POINT, OnEditFlyLinePoint)
ON_BN_CLICKED(IDC_BTN_DELETE_POINT, OnDeleteFlyLinePoint)
ON_BN_CLICKED(IDC_BTN_SAVE_LINE, OnSaveFlyLine)
ON_CBN_SELCHANGE(IDC_COMBO_PT, OnCbnSelchangeComboPt)
ON_BN_CLICKED(IDCANCEL, OnBnClickedCancel)
END_MESSAGE_MAP()
//<2F><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD>еı<D0B5><C4B1><EFBFBD>
void CFlyLineDesign::InitiazeAllMembers()
{
m_ptAlt = 0.0;
m_ptLat = 0.0;
m_ptLon = 0.0;
//<2F><><EFBFBD>պ<EFBFBD><D5BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݼ<EFBFBD><DDBC><EFBFBD>
m_linePtNums = 0;
//<2F><><EFBFBD>յ<EFBFBD>ǰ<EFBFBD>ĺ<EFBFBD><C4BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
memset(&m_curPoint, 0, sizeof(PtStruct));
m_linePtNums = 0;
//<2F>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>µĺ<C2B5><C4BA><EFBFBD>
m_bAddNewPoint = true;
}
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>еĺ<D0B5><C4BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݣ<EFBFBD><DDA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
void CFlyLineDesign::ClearCurrentData()
{
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>еı<D0B5><C4B1><EFBFBD>
InitiazeAllMembers();
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ͽ<EFBFBD><CFBF><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݼ<EFBFBD><DDBC><EFBFBD>
if (m_comboPt.GetCount() > 0)
{
m_comboPt.ResetContent();
}
GetDlgItem(IDC_BTN_ADD_POINT)->EnableWindow(TRUE);
GetDlgItem(IDC_BTN_EDIT_POINT)->EnableWindow(FALSE);
GetDlgItem(IDC_BTN_DELETE_POINT)->EnableWindow(FALSE);
GetDlgItem(IDC_BTN_SAVE_LINE)->EnableWindow(FALSE);
//ˢ<><CBA2><EFBFBD><EFBFBD>ʾ
UpdateData(FALSE);
}
//<2F><><EFBFBD>ܣ<EFBFBD><DCA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>µĺ<C2B5><C4BA><EFBFBD>
//<2F><><EFBFBD><EFBFBD><EBA3BA><EFBFBD><EFBFBD>lon,γ<><CEB3>lat
void CFlyLineDesign::AddPoint(const double lon, const double lat)
{
m_curPoint.dX = lon;
m_curPoint.dY = lat;
//<2F><><EFBFBD>õ<EFBFBD>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
SetWindowMembersValue(m_curPoint);
UpdateData(FALSE);
}
//<2F><><EFBFBD>ܣ<EFBFBD><DCA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>µĺ<C2B5><C4BA><EFBFBD>
//<2F><><EFBFBD><EFBFBD><EBA3BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ptStruct
void CFlyLineDesign::AddPoint(const PtStruct ptStruct)
{
//<2F><><EFBFBD>õ㡱<C3B5><E3A1B1>ť<EFBFBD><C5A5>ѡ
GetDlgItem(IDC_BTN_ADD_POINT)->EnableWindow(TRUE);
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
m_curPoint.nPt = ptStruct.nPt;
//<2F><><EFBFBD><EFBFBD>
m_curPoint.dX = ptStruct.dX;
//γ<><CEB3>
m_curPoint.dY = ptStruct.dY;
//<2F><><EFBFBD><EFBFBD><EBBABD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
InsertComboBox(ptStruct.nPt);
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>б<EFBFBD><D0B1><EFBFBD><EFBFBD>Ľ<EFBFBD><C4BD><EFBFBD>
m_comboPt.SetCurSel(ptStruct.nPt-1);
//<2F><><EFBFBD>õ<EFBFBD>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
SetWindowMembersValue(ptStruct);
UpdateData(FALSE);
}
//<2F><><EFBFBD>ܣ<EFBFBD><DCA3>Ի<EFBFBD><D4BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>µĺ<C2B5><C4BA><EFBFBD>
void CFlyLineDesign::OnAddFlyLinePoint()
{
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
GetWindowMembersValue(m_curPoint);
//<2F><><EFBFBD><EFBFBD>߼<EFBFBD><DFBC><EFBFBD><EFBFBD><EFBFBD>
m_pLinePts[m_linePtNums] = m_curPoint;
m_linePtNums ++;
m_bAddNewPoint = true;
if (m_linePtNums > 0)
{
GetDlgItem(IDC_BTN_SAVE_LINE)->EnableWindow(TRUE);
}
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>򣬽<EFBFBD><F2A3ACBD>б<EFBFBD><D0B1><EFBFBD>
if (g_mapHwnd != NULL)
{
::SendMessage(g_mapHwnd, WM_ADD_LINE_POINT, 0, 0);
}
//<2F><><EFBFBD>õ㡱<C3B5><E3A1B1>ť<EFBFBD><C5A5>ѡ
GetDlgItem(IDC_BTN_ADD_POINT)->EnableWindow(FALSE);
}
//<2F><><EFBFBD>ܣ<EFBFBD><DCA3>Ի<EFBFBD><D4BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>޸ĺ<DEB8><C4BA><EFBFBD>
void CFlyLineDesign::OnEditFlyLinePoint()
{
//<2F><>ʼ<EFBFBD><CABC>
memset(&m_curPoint, 0, sizeof(PtStruct));
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
GetWindowMembersValue(m_curPoint);
//<2F>༭λ<E0BCAD><CEBB>
int editPos = m_comboPt.GetCurSel();
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
m_curPoint.nPt = editPos +1;
//<2F><><EFBFBD>º<EFBFBD><C2BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
m_pLinePts[editPos] = m_curPoint;
GetDlgItem(IDC_BTN_ADD_POINT)->EnableWindow(TRUE);
GetDlgItem(IDC_BTN_EDIT_POINT)->EnableWindow(FALSE);
GetDlgItem(IDC_BTN_DELETE_POINT)->EnableWindow(FALSE);
g_ptModeInLineDesign = 0;
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͺ<EFBFBD><CDBA><EFBFBD>ɾ<EFBFBD><C9BE><EFBFBD><EFBFBD>Ϣ
if (g_mapHwnd != NULL)
{
::SendMessage(g_mapHwnd, WM_EDIT_LINE_POINT, (WPARAM)(&m_curPoint), 0);
}
}
//<2F><><EFBFBD>ܣ<EFBFBD><DCA3>Ի<EFBFBD><D4BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɾ<EFBFBD><C9BE><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
void CFlyLineDesign::OnDeleteFlyLinePoint()
{
UpdateData(TRUE);
//ɾ<><C9BE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ĺ<EFBFBD><C4BA><EFBFBD><EFBFBD><EFBFBD>
int pointID = m_comboPt.GetCurSel();
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͺ<EFBFBD><CDBA><EFBFBD>ɾ<EFBFBD><C9BE><EFBFBD><EFBFBD>Ϣ
if (g_mapHwnd != NULL)
{
::SendMessage(g_mapHwnd, WM_DELETE_LINE_POINT, (WPARAM)pointID, 0);
}
//ɾ<><C9BE>ѡ<EFBFBD><D1A1><EFBFBD><EFBFBD>ĵ<EFBFBD><C4B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ĵ<EFBFBD><C4B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǰ<EFBFBD>ƶ<EFBFBD>һλ
for (int i=pointID; i<m_linePtNums-1; i++)
{
m_pLinePts[i] = m_pLinePts[i+1];
m_pLinePts[i].nPt --;
}
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>1
m_linePtNums --;
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ͽ<EFBFBD><CFBF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
if (m_comboPt.GetCount()>0)
{
m_comboPt.ResetContent();
for (int i=0; i<m_linePtNums; i++)
{
InsertComboBox(i+1);
}
}
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>0
if (m_linePtNums > 0)
{
m_curPoint = m_pLinePts[m_linePtNums-1];
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>б<EFBFBD><D0B1><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD>һ<EFBFBD><D2BB>Ԫ<EFBFBD><D4AA>
m_comboPt.SetCurSel(m_linePtNums-1);
}
else
{
memset(&m_curPoint, 0, sizeof(PtStruct));
}
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
SetWindowMembersValue(m_curPoint);
UpdateData(FALSE);
GetDlgItem(IDC_BTN_ADD_POINT)->EnableWindow(TRUE);
GetDlgItem(IDC_BTN_EDIT_POINT)->EnableWindow(FALSE);
GetDlgItem(IDC_BTN_DELETE_POINT)->EnableWindow(FALSE);
g_ptModeInLineDesign = 0;
}
//<2F><><EFBFBD>ܣ<EFBFBD><DCA3>Ի<EFBFBD><D4BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E6BABD>
void CFlyLineDesign::OnSaveFlyLine()
{
int Char_tmp;
Char_tmp = ((CComboBox*)GetDlgItem(IDC_COMBO_CHAR))->GetCurSel();
switch (Char_tmp)
{
case 0:
m_ptCarctr = 1;
break;
case 1:
m_ptCarctr = 3;
break;
case 2:
m_ptCarctr = 5;
break;
case 3:
m_ptCarctr = 7;
break;
case 4:
m_ptCarctr = 11;
break;
}
g_ptModeInLineDesign = 0;
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD>գ<EFBFBD><D5A3><EFBFBD><EFBFBD><EFBFBD>
if (m_linePtNums <= 0)
{
CDialog::OnOK();
}
//<2F><><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>·<EFBFBD><C2B7>
CString strFlyLineName = _T("");
//<2F><><EFBFBD>߱<EFBFBD><DFB1><EFBFBD>
int designLineID = 0;
//<2F><>·<EFBFBD><C2B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
int lineProperty = 0;
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѡ<EFBFBD><D1A1><EFBFBD>Ի<EFBFBD><D4BB><EFBFBD>
CSetSaveLineID dlg;
if (dlg.DoModal() == IDOK)
{
//<2F><>·<EFBFBD>ļ<EFBFBD><C4BC><EFBFBD>
strFlyLineName = dlg.m_strFlyLineName;
//<2F><><EFBFBD>߱<EFBFBD><DFB1><EFBFBD>
designLineID = dlg.m_designLineID;
//<2F><>·<EFBFBD><C2B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
lineProperty = dlg.m_lineProperty;
}
else
{
return ;
}
//ѡ<>񺽵<EFBFBD><F1BABDB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
m_ptCarctr=((CComboBox*)GetDlgItem(IDC_COMBO_CHAR))->GetCurSel() ;
//д<><D0B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
FILE *fp = fopen(strFlyLineName, "w" );
if ( fp == NULL )
{
CDialog::OnOK();
}
else
{
PtStruct pt;
memset(&pt, 0, sizeof(PtStruct));
//ԭ<><D4AD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>д<EFBFBD><D0B4>
fprintf(fp, "%d, %d, %.7f, %.7f, %.2lf, %d, %02X, %02X\n", designLineID, 0, g_gcsLon, g_gcsLat, 0.0, 0, 0, 2);
2 years ago
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E3BCAF><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
for ( int i = 0; i < m_linePtNums; i++ )
{
pt = m_pLinePts[i];
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>д<EFBFBD><D0B4><EFBFBD>ļ<EFBFBD>
if ( i < (m_linePtNums-1))
{
fprintf(fp, "%d, %d, %.7f, %.7f, %.2lf, %d, %02X, %02X\n", designLineID, pt.nPt, pt.dX, pt.dY, pt.nH, pt.nV, pt.ch1, pt.ch2);
2 years ago
}
else//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD>ĺ<EFBFBD><C4BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>д<EFBFBD><D0B4><EFBFBD>ļ<EFBFBD>
{
fprintf(fp, "%d, %d, %.7f, %.7f, %.2lf, %d, %02X, %02X\n", designLineID, pt.nPt, pt.dX, pt.dY, pt.nH, pt.nV, pt.ch1, lineProperty);
2 years ago
}
}
fclose( fp );
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɹ<EFBFBD><C9B9>Ի<EFBFBD><D4BB><EFBFBD>
AfxMessageBox(_T("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɹ<EFBFBD><EFBFBD><EFBFBD>"));
//<2F><><EFBFBD>ͶԻ<CDB6><D4BB><EFBFBD><EFBFBD>ر<EFBFBD><D8B1><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
if (g_mapHwnd != NULL)
{
::SendMessage(g_mapHwnd, WM_CLOSE_LINEDESIGN_DIALOG, 0, 0);
//<2F>رնԻ<D5B6><D4BB><EFBFBD>
CDialog::OnCancel();
}
}
}
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݸ<EFBFBD>ֵ
//<2F><><EFBFBD><EFBFBD><EBA3BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>pt
void CFlyLineDesign::SetWindowMembersValue(const PtStruct pt)
{
//<2F><><EFBFBD><EFBFBD>
m_ptLon = pt.dX;
//γ<><CEB3>
m_ptLat = pt.dY;
//<2F>߶<EFBFBD>
m_ptAlt = pt.nH;
//<2F><><EFBFBD><EFBFBD><EFBFBD>ٶ<EFBFBD>
m_flySpeed = pt.nV;
}
//<2F><><EFBFBD>ܣ<EFBFBD><DCA3><EFBFBD><EFBFBD>ý<EFBFBD><C3BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//<2F><><EFBFBD><EFBFBD><EBA3BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>pt
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>pt
void CFlyLineDesign::GetWindowMembersValue(PtStruct &pt)
{
UpdateData(TRUE);
//<2F><><EFBFBD><EFBFBD>
pt.dX = m_ptLon;
//γ<><CEB3>
pt.dY = m_ptLat;
//<2F>߶<EFBFBD>
pt.nH = m_ptAlt;
//<2F><><EFBFBD><EFBFBD><EFBFBD>ٶ<EFBFBD>
pt.nV = m_flySpeed;
//<2F><>·<EFBFBD><C2B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
pt.ch2 = 0X02;
}
BOOL CFlyLineDesign::OnInitDialog()
{
CDialog::OnInitDialog();
// SetWindowPos( &CWnd::wndTop, m_rcLineDesignArea.left, m_rcLineDesignArea.top, 0, 0, SWP_NOSIZE | SWP_NOACTIVATE);
( ( CComboBox * ) GetDlgItem( IDC_COMBO_CHAR ) )->InsertString(0, _T("<EFBFBD><EFBFBD><EFBFBD>ɺ<EFBFBD><EFBFBD><EFBFBD>") );
( ( CComboBox * ) GetDlgItem( IDC_COMBO_CHAR ) )->InsertString(1, _T("<EFBFBD><EFBFBD><EFBFBD>к<EFBFBD><EFBFBD><EFBFBD>") );
( ( CComboBox * ) GetDlgItem( IDC_COMBO_CHAR ) )->InsertString(2, _T("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>") );
( ( CComboBox * ) GetDlgItem( IDC_COMBO_CHAR ) )->InsertString(3, _T("<EFBFBD><EFBFBD>½<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>") );
( ( CComboBox * ) GetDlgItem( IDC_COMBO_CHAR ) )->InsertString(4, _T("<EFBFBD>ӵص<EFBFBD>") );
( ( CComboBox * ) GetDlgItem( IDC_COMBO_CHAR ) )->SetCurSel(0);
GetDlgItem(IDC_BTN_ADD_POINT)->EnableWindow(TRUE);
GetDlgItem(IDC_BTN_EDIT_POINT)->EnableWindow(FALSE);
GetDlgItem(IDC_BTN_DELETE_POINT)->EnableWindow(FALSE);
GetDlgItem(IDC_BTN_SAVE_LINE)->EnableWindow(FALSE);
// MoveWindow(m_rcLineDesignArea.left, m_rcLineDesignArea.top, 0, 0, TRUE);
//<2F>ƶ<EFBFBD><C6B6><EFBFBD><EFBFBD>̶<EFBFBD><CCB6><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD>
// SetWindowPos( &CWnd::wndTop, m_rcLineDesignArea.left, m_rcLineDesignArea.top, 0, 0, SWP_NOSIZE | SWP_NOACTIVATE | SWP_HIDEWINDOW );
SetWindowPos( &CWnd::wndTop, m_rcLineDesignArea.left, m_rcLineDesignArea.top, 0, 0, SWP_NOSIZE | SWP_NOACTIVATE | SWP_HIDEWINDOW );
// ShowWindow(SW_HIDE);
return TRUE; // return TRUE unless you set the focus to a control
// <20>쳣: OCX <20><><EFBFBD><EFBFBD>ҳӦ<D2B3><D3A6><EFBFBD><EFBFBD> FALSE
}
//<2F><><EFBFBD>ܣ<EFBFBD><DCA3>ƶ<EFBFBD><C6B6>Ի<EFBFBD><D4BB>򵽸<EFBFBD><F2B5BDB8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD>
void CFlyLineDesign::MoveToGivenArea(const CRect rcArea)
{
m_rcLineDesignArea = rcArea;
m_rcLineDesignArea.top += 20;
}
//<2F><><EFBFBD>ܣ<EFBFBD><DCA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>б<EFBFBD><D0B1>򺽵<EFBFBD><F2BABDB5><EFBFBD><EFBFBD>Ÿ<EFBFBD><C5B8><EFBFBD>
void CFlyLineDesign::OnCbnSelchangeComboPt()
{
UpdateData(TRUE);
//û<>к<EFBFBD><D0BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
if (m_linePtNums <= 0)
{
GetDlgItem(IDC_BTN_ADD_POINT)->EnableWindow(TRUE);
GetDlgItem(IDC_BTN_EDIT_POINT)->EnableWindow(FALSE);
GetDlgItem(IDC_BTN_DELETE_POINT)->EnableWindow(FALSE);
g_ptModeInLineDesign = 0;
return;
}
//<2F><><EFBFBD><EFBFBD><EFBFBD>б<EFBFBD><D0B1><EFBFBD><EFBFBD>ĺ<EFBFBD><C4BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ų<EFBFBD><C5B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ں<EFBFBD><DABA>߼<EFBFBD><DFBC><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
if (m_comboPt.GetCurSel()+1 > m_linePtNums)
{
GetDlgItem(IDC_BTN_ADD_POINT)->EnableWindow(TRUE);
GetDlgItem(IDC_BTN_EDIT_POINT)->EnableWindow(FALSE);
GetDlgItem(IDC_BTN_DELETE_POINT)->EnableWindow(FALSE);
g_ptModeInLineDesign = 0;
return;
}
else
{
//ѡ<>еĺ<D0B5><C4BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
int selectID = m_comboPt.GetCurSel();
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
m_curPoint = m_pLinePts[m_comboPt.GetCurSel()];
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
SetWindowMembersValue(m_curPoint);
UpdateData(FALSE);
GetDlgItem(IDC_BTN_ADD_POINT)->EnableWindow(FALSE);
GetDlgItem(IDC_BTN_EDIT_POINT)->EnableWindow(TRUE);
GetDlgItem(IDC_BTN_DELETE_POINT)->EnableWindow(TRUE);
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD><CDB4><EFBFBD>ĺ<EFBFBD><C4BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
if (g_mapHwnd != NULL)
{
::SendMessage(g_mapHwnd, WM_EDIT_LINE_POINT, (WPARAM)(&m_curPoint), 1);
}
g_ptModeInLineDesign = 1;
}
}
void CFlyLineDesign::OnBnClickedCancel()
{
//<2F><><EFBFBD>ͶԻ<CDB6><D4BB><EFBFBD><EFBFBD>ر<EFBFBD><D8B1><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
if (g_mapHwnd != NULL)
{
::SendMessage(g_mapHwnd, WM_CLOSE_LINEDESIGN_DIALOG, 0, 0);
}
g_ptModeInLineDesign = 0;
CDialog::OnCancel();
}
//<2F><><EFBFBD>ܣ<EFBFBD><DCA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>б<EFBFBD><D0B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//<2F><><EFBFBD><EFBFBD><EBA3BA><EFBFBD><EFBFBD>pointID
void CFlyLineDesign::InsertComboBox(const int pointID)
{
//<2F>ж<EFBFBD><D0B6>¸<EFBFBD><C2B8><EFBFBD>Ŀ<EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD>ڣ<EFBFBD><DAA3><EFBFBD><EFBFBD>ڣ<EFBFBD><DAA3><EFBFBD><EFBFBD>½<EFBFBD>
if (m_comboPt.GetCount() >= pointID)
{
return;
}
CString str = _T("");
str.Format(_T("%d"), pointID);
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ͽ<EFBFBD><CFBF><EFBFBD>
m_comboPt.InsertString(pointID-1, str);
}
//<2F><><EFBFBD>ܣ<EFBFBD><DCA3><EFBFBD><E0BCAD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//<2F><><EFBFBD><EFBFBD><EBA3BA><EFBFBD><EFBFBD>lon,γ<><CEB3>lat
void CFlyLineDesign::EditPoint(const double lon, const double lat)
{
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
m_curPoint.dX = lon;
m_curPoint.dY = lat;
//<2F><><EFBFBD>º<EFBFBD><C2BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
m_pLinePts[m_curPoint.nPt-1] = m_curPoint;
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
SetWindowMembersValue(m_curPoint);
UpdateData(FALSE);
GetDlgItem(IDC_BTN_ADD_POINT)->EnableWindow(FALSE);
GetDlgItem(IDC_BTN_EDIT_POINT)->EnableWindow(TRUE);
GetDlgItem(IDC_BTN_DELETE_POINT)->EnableWindow(FALSE);
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͺ<EFBFBD><CDBA><EFBFBD><EFBFBD><EFBFBD><E0BCAD>Ϣ
if (g_mapHwnd != NULL)
{
::SendMessage(g_mapHwnd, WM_EDIT_LINE_POINT, (WPARAM)(&m_curPoint), 1);
}
}