|
|
|
|
// DlgMarker.cpp : ʵ<><CAB5><EFBFBD>ļ<EFBFBD>
|
|
|
|
|
//
|
|
|
|
|
|
|
|
|
|
#include "stdafx.h"
|
|
|
|
|
#include "DlgMarker.h"
|
|
|
|
|
#include "afxdialogex.h"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// CDlgMarker <20>Ի<EFBFBD><D4BB><EFBFBD>
|
|
|
|
|
|
|
|
|
|
IMPLEMENT_DYNAMIC(CDlgMarker, CBCGPDialog)
|
|
|
|
|
|
|
|
|
|
CDlgMarker::CDlgMarker(CWnd* pParent /*=NULL*/)
|
|
|
|
|
: CBCGPDialog(CDlgMarker::IDD, pParent)
|
|
|
|
|
{
|
|
|
|
|
EnableVisualManagerStyle(TRUE, TRUE);
|
|
|
|
|
|
|
|
|
|
m_iSelectedIndex = -1;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
CDlgMarker::~CDlgMarker()
|
|
|
|
|
{
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void CDlgMarker::DoDataExchange(CDataExchange* pDX)
|
|
|
|
|
{
|
|
|
|
|
CBCGPDialog::DoDataExchange(pDX);
|
|
|
|
|
DDX_Control(pDX, IDC_TREE_MARKERS, m_treeMarkers);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
BEGIN_MESSAGE_MAP(CDlgMarker, CBCGPDialog)
|
|
|
|
|
ON_BN_CLICKED(IDC_BUTTON_SELECTMARKER, &CDlgMarker::OnBnClickedButtonSelectMarker)
|
|
|
|
|
ON_BN_CLICKED(IDC_BUTTON_ADDMARKER, &CDlgMarker::OnBnClickedButtonAddMarker)
|
|
|
|
|
ON_BN_CLICKED(IDC_BUTTON_DELETEMARKER, &CDlgMarker::OnBnClickedButtonDeleteMarker)
|
|
|
|
|
ON_NOTIFY(NM_CLICK, IDC_TREE_MARKERS, &CDlgMarker::OnNMClickTreeMarkers)
|
|
|
|
|
END_MESSAGE_MAP()
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// CDlgMarker <20><>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
BOOL CDlgMarker::OnInitDialog()
|
|
|
|
|
{
|
|
|
|
|
CBCGPDialog::OnInitDialog();
|
|
|
|
|
|
|
|
|
|
m_strMarkerConfig = GetSoftwareCurrentDirectory() + _T("\\Markers.ini");
|
|
|
|
|
|
|
|
|
|
m_treeMarkers.SetBkColor(RGB(53,53,57)); //<2F><><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD>Ի<EFBFBD><D4BB><EFBFBD><F2B1B3BE><EFBFBD>ɫһ<C9AB><D2BB>
|
|
|
|
|
m_treeMarkers.SetTextColor(RGB(255,255,255)); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ؼ<EFBFBD><D8BC>ı<EFBFBD><C4B1><EFBFBD>ɫ
|
|
|
|
|
|
|
|
|
|
//<2F><>ȡ<EFBFBD><C8A1><EFBFBD>ǵ<EFBFBD><C7B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD>ɾȥ<C9BE><C8A5><EFBFBD><EFBFBD>Ϊ<EFBFBD>յı<D5B5><C4B1>ǵ㣩<C7B5><E3A3A9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ؼ<EFBFBD>
|
|
|
|
|
RewriteMarkerConfig();
|
|
|
|
|
|
|
|
|
|
return TRUE;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//չ<><D5B9><EFBFBD><EFBFBD><EFBFBD>е<EFBFBD><D0B5>Ӹ<EFBFBD><D3B8>ڵ<EFBFBD>
|
|
|
|
|
void CDlgMarker::MyExpandTree(HTREEITEM hTreeItem)
|
|
|
|
|
{
|
|
|
|
|
HTREEITEM hNextItem = m_treeMarkers.GetNextItem(hTreeItem, TVGN_NEXT);
|
|
|
|
|
|
|
|
|
|
while (hNextItem != NULL)
|
|
|
|
|
{
|
|
|
|
|
MyExpandTree(hNextItem);
|
|
|
|
|
hNextItem = m_treeMarkers.GetNextItem(hNextItem, TVGN_NEXT);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
m_treeMarkers.Expand(hTreeItem,TVE_EXPAND);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD>ܣ<EFBFBD><DCA3>ƶ<EFBFBD><C6B6>Ի<EFBFBD><D4BB><EFBFBD><F2B5BDB8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD>
|
|
|
|
|
void CDlgMarker::MoveToGivenArea(const CRect rcArea)
|
|
|
|
|
{
|
|
|
|
|
CRect m_rcDlgArea;
|
|
|
|
|
|
|
|
|
|
m_rcDlgArea = rcArea;
|
|
|
|
|
m_rcDlgArea.top += 90;
|
|
|
|
|
|
|
|
|
|
SetWindowPos( &CWnd::wndTop, m_rcDlgArea.left, m_rcDlgArea.top, 0, 0, SWP_NOSIZE | SWP_NOACTIVATE/* | SWP_HIDEWINDOW*/ );
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//<2F>ڵ<EFBFBD>ͼ<EFBFBD><CDBC>ѡ<EFBFBD><D1A1><EFBFBD><EFBFBD><EFBFBD>ǵ<EFBFBD>
|
|
|
|
|
void CDlgMarker::OnBnClickedButtonSelectMarker()
|
|
|
|
|
{
|
|
|
|
|
g_bSelectMarker = true;
|
|
|
|
|
::PostMessage(g_mapHwnd, WM_SEND_MAPCURSORMODE, 4, 0); //<2F><><EFBFBD><EFBFBD>Map CurModeΪNone
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//<2F><>ʾ<EFBFBD><CABE><EFBFBD>ǵ<EFBFBD><C7B5><EFBFBD><EFBFBD>굽<EFBFBD>༭<EFBFBD><E0BCAD>
|
|
|
|
|
void CDlgMarker::ShowMarkerCoordinate(double& markerLon, double& markerLat)
|
|
|
|
|
{
|
|
|
|
|
CString str;
|
|
|
|
|
|
|
|
|
|
str.Format(_T("Marker%d"), g_iHaveMarkedPts+1);
|
|
|
|
|
GetDlgItem(IDC_EDIT_MARKER_NAME)->SetWindowText(str);
|
|
|
|
|
|
|
|
|
|
str.Format(_T("%.7f"), markerLon);
|
|
|
|
|
GetDlgItem(IDC_EDIT_MARKER_LON)->SetWindowText(str);
|
|
|
|
|
|
|
|
|
|
str.Format(_T("%.7f"), markerLat);
|
|
|
|
|
GetDlgItem(IDC_EDIT_MARKER_LAT)->SetWindowText(str);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD>ӱ<EFBFBD><D3B1>ǵ<EFBFBD>
|
|
|
|
|
void CDlgMarker::OnBnClickedButtonAddMarker()
|
|
|
|
|
{
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD>֧<EFBFBD><D6A7>20<32><30><EFBFBD><EFBFBD><EFBFBD>ǵ<EFBFBD>
|
|
|
|
|
if (g_iHaveMarkedPts >= 20)
|
|
|
|
|
{
|
|
|
|
|
BCGPMessageBoxEx(NULL,_T("<EFBFBD><EFBFBD><EFBFBD><EFBFBD>֧<EFBFBD><EFBFBD>20<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǵ<EFBFBD>!"),_T("Tip"),MB_OK,MAKELANGID(LANG_ENGLISH,SUBLANG_ENGLISH_US));
|
|
|
|
|
|
|
|
|
|
return ;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
g_iHaveMarkedPts++;
|
|
|
|
|
|
|
|
|
|
CString str;
|
|
|
|
|
|
|
|
|
|
GetDlgItem(IDC_EDIT_MARKER_NAME)->GetWindowText(str);
|
|
|
|
|
g_iMarkerName[g_iHaveMarkedPts-1] = str;
|
|
|
|
|
|
|
|
|
|
GetDlgItem(IDC_EDIT_MARKER_LON)->GetWindowText(str);
|
|
|
|
|
g_iMarkerLon[g_iHaveMarkedPts-1] = atof(str);
|
|
|
|
|
|
|
|
|
|
GetDlgItem(IDC_EDIT_MARKER_LAT)->GetWindowText(str);
|
|
|
|
|
g_iMarkerLat[g_iHaveMarkedPts-1] = atof(str);
|
|
|
|
|
|
|
|
|
|
//<2F>ڵ<EFBFBD>ͼ<EFBFBD><CDBC><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD>ǵ<EFBFBD>
|
|
|
|
|
::PostMessage(g_mapHwnd, WM_SEND_DRAWMARKER, g_iHaveMarkedPts-1, 0);
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD>ǵ<EFBFBD>д<EFBFBD><D0B4><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>
|
|
|
|
|
CString strTitle;
|
|
|
|
|
strTitle.Format(_T("Marker%d"),g_iHaveMarkedPts);
|
|
|
|
|
|
|
|
|
|
str.Format(_T("%s"), g_iMarkerName[g_iHaveMarkedPts-1]);
|
|
|
|
|
WritePrivateProfileString(strTitle,_T("Name"),str,m_strMarkerConfig);
|
|
|
|
|
|
|
|
|
|
str.Format(_T("%.7f"), g_iMarkerLon[g_iHaveMarkedPts-1]);
|
|
|
|
|
WritePrivateProfileString(strTitle,_T("Lon"),str,m_strMarkerConfig);
|
|
|
|
|
|
|
|
|
|
str.Format(_T("%.7f"), g_iMarkerLat[g_iHaveMarkedPts-1]);
|
|
|
|
|
WritePrivateProfileString(strTitle,_T("Lat"),str,m_strMarkerConfig);
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD>ڵ<EFBFBD>
|
|
|
|
|
HTREEITEM hItem;
|
|
|
|
|
hItem = m_treeMarkers.InsertItem(strTitle, 1, 1, m_treeMarkers.GetRootItem(), TVI_LAST);
|
|
|
|
|
m_treeMarkers.SetItemData(hItem, g_iHaveMarkedPts);
|
|
|
|
|
|
|
|
|
|
//ѡ<>нڵ<D0BD>
|
|
|
|
|
m_treeMarkers.SetCheck(hItem, TRUE);
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD>Ƶ<EFBFBD><C6B5>ڵ<EFBFBD><DAB5><EFBFBD>
|
|
|
|
|
m_treeMarkers.SelectItem(hItem);
|
|
|
|
|
m_treeMarkers.SetFocus();
|
|
|
|
|
|
|
|
|
|
//<2F><>ȡѡ<C8A1>нڵ<D0BD><DAB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
m_iSelectedIndex = m_treeMarkers.GetItemData(hItem);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//<2F><>ȡ<EFBFBD><C8A1><EFBFBD>ǵ<EFBFBD><C7B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD>ɾȥ<C9BE><C8A5><EFBFBD><EFBFBD>Ϊ<EFBFBD>յı<D5B5><C4B1>ǵ㣩<C7B5><E3A3A9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ؼ<EFBFBD>
|
|
|
|
|
void CDlgMarker::RewriteMarkerConfig()
|
|
|
|
|
{
|
|
|
|
|
g_iHaveMarkedPts = 0;
|
|
|
|
|
|
|
|
|
|
CString str, strTitle;
|
|
|
|
|
|
|
|
|
|
//<2F><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC>е<EFBFBD><D0B5><EFBFBD><EFBFBD>б<EFBFBD><D0B1>ǵ<EFBFBD><C7B5><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD>յij<D5B5><C4B3>⣩
|
|
|
|
|
for (int i=0;i<g_iMarkerPtNum;i++)
|
|
|
|
|
{
|
|
|
|
|
g_lMarkerLayerID[i] = -1;
|
|
|
|
|
|
|
|
|
|
strTitle.Format(_T("Marker%d"),i+1);
|
|
|
|
|
|
|
|
|
|
TCHAR inBuf[30];
|
|
|
|
|
|
|
|
|
|
CString sLon, sLat;
|
|
|
|
|
GetPrivateProfileString(strTitle,_T("Lon"),0,inBuf,20,m_strMarkerConfig);
|
|
|
|
|
sLon.Format(_T("%s"), inBuf);
|
|
|
|
|
GetPrivateProfileString(strTitle,_T("Lat"),0,inBuf,20,m_strMarkerConfig);
|
|
|
|
|
sLat.Format(_T("%s"), inBuf);
|
|
|
|
|
|
|
|
|
|
if ((sLon != _T("")) && (sLat != _T("")))
|
|
|
|
|
{
|
|
|
|
|
g_iHaveMarkedPts++;
|
|
|
|
|
|
|
|
|
|
GetPrivateProfileString(strTitle,_T("Name"),0,inBuf,20,m_strMarkerConfig);
|
|
|
|
|
g_iMarkerName[g_iHaveMarkedPts-1].Format(_T("%s"), inBuf);
|
|
|
|
|
|
|
|
|
|
GetPrivateProfileString(strTitle,_T("Lon"),0,inBuf,20,m_strMarkerConfig);
|
|
|
|
|
g_iMarkerLon[g_iHaveMarkedPts-1] = atof(inBuf);
|
|
|
|
|
|
|
|
|
|
GetPrivateProfileString(strTitle,_T("Lat"),0,inBuf,20,m_strMarkerConfig);
|
|
|
|
|
g_iMarkerLat[g_iHaveMarkedPts-1] = atof(inBuf);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD>ȡ<EFBFBD>ı<EFBFBD><C4B1><EFBFBD><EFBFBD><EFBFBD>Ϣд<CFA2><D0B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD>Ŀ<EFBFBD><C4BF><EFBFBD><EFBFBD>ɸȥ<C9B8>յı<D5B5><C4B1>ǵ㣩
|
|
|
|
|
for (int i=0;i<g_iHaveMarkedPts;i++)
|
|
|
|
|
{
|
|
|
|
|
strTitle.Format(_T("Marker%d"),i+1);
|
|
|
|
|
|
|
|
|
|
str.Format(_T("%s"), g_iMarkerName[i]);
|
|
|
|
|
WritePrivateProfileString(strTitle,_T("Name"),str,m_strMarkerConfig);
|
|
|
|
|
|
|
|
|
|
str.Format(_T("%.7f"), g_iMarkerLon[i]);
|
|
|
|
|
WritePrivateProfileString(strTitle,_T("Lon"),str,m_strMarkerConfig);
|
|
|
|
|
|
|
|
|
|
str.Format(_T("%.7f"), g_iMarkerLat[i]);
|
|
|
|
|
WritePrivateProfileString(strTitle,_T("Lat"),str,m_strMarkerConfig);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//ʣ<><CAA3><EFBFBD>ı<EFBFBD><C4B1>ǵ<EFBFBD><C7B5><EFBFBD>Ϣ<EFBFBD>ÿ<EFBFBD>
|
|
|
|
|
for (int i=g_iHaveMarkedPts;i<g_iMarkerPtNum;i++)
|
|
|
|
|
{
|
|
|
|
|
strTitle.Format(_T("Marker%d"),i+1);
|
|
|
|
|
|
|
|
|
|
WritePrivateProfileString(strTitle,_T("Name"),_T(""),m_strMarkerConfig);
|
|
|
|
|
|
|
|
|
|
WritePrivateProfileString(strTitle,_T("Lon"),_T(""),m_strMarkerConfig);
|
|
|
|
|
|
|
|
|
|
WritePrivateProfileString(strTitle,_T("Lat"),_T(""),m_strMarkerConfig);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD>ؼ<EFBFBD>ɾ<EFBFBD><C9BE><EFBFBD><EFBFBD><EFBFBD>нڵ<D0BD>
|
|
|
|
|
m_treeMarkers.DeleteAllItems();
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڵ<EFBFBD>
|
|
|
|
|
HTREEITEM hRoot;
|
|
|
|
|
hRoot = m_treeMarkers.InsertItem(_T("<EFBFBD><EFBFBD><EFBFBD>ǵ<EFBFBD>"), 0, 0);
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD>ø<EFBFBD><C3B8>ڵ<EFBFBD><DAB5><EFBFBD><EFBFBD>ݣ<EFBFBD><DDA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڵ<EFBFBD><DAB5><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
m_treeMarkers.SetItemData(hRoot, 0);
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD>ӽڵ㣨<DAB5><E3A3A8><EFBFBD>ǵ<EFBFBD><C7B5><EFBFBD><EFBFBD>ƣ<EFBFBD>
|
|
|
|
|
for (int i=0;i<g_iHaveMarkedPts;i++)
|
|
|
|
|
{
|
|
|
|
|
str.Format(_T("Marker%d"),i+1);
|
|
|
|
|
|
|
|
|
|
HTREEITEM hChild;
|
|
|
|
|
hChild = m_treeMarkers.InsertItem(str, 1, 1, hRoot, TVI_LAST);
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD>ӽڵ<D3BD><DAB5><EFBFBD><EFBFBD>ݣ<EFBFBD><DDA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڵ<EFBFBD><DAB5><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
m_treeMarkers.SetItemData(hChild, i+1);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//չ<><D5B9><EFBFBD><EFBFBD><EFBFBD>и<EFBFBD><D0B8>ڵ<EFBFBD>
|
|
|
|
|
MyExpandTree(m_treeMarkers.GetRootItem());
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//ɾ<><C9BE>ѡ<EFBFBD>еı<D0B5><C4B1>ǵ<EFBFBD>
|
|
|
|
|
void CDlgMarker::OnBnClickedButtonDeleteMarker()
|
|
|
|
|
{
|
|
|
|
|
if (m_iSelectedIndex == 0) //ɾ<><C9BE><EFBFBD><EFBFBD><EFBFBD>б<EFBFBD><D0B1>ǵ<EFBFBD>
|
|
|
|
|
{
|
|
|
|
|
//ȷ<><C8B7><EFBFBD>Ƿ<EFBFBD>ɾ<EFBFBD><C9BE><EFBFBD><EFBFBD><EFBFBD>б<EFBFBD><D0B1>ǵ<EFBFBD>
|
|
|
|
|
if (IDYES != BCGPMessageBoxEx(NULL, _T("ȷ<EFBFBD><EFBFBD>ɾ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>б<EFBFBD><EFBFBD>ǵ<EFBFBD>?"), _T("Tip"), MB_YESNO,MAKELANGID(LANG_ENGLISH,SUBLANG_ENGLISH_US)))
|
|
|
|
|
{
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
HTREEITEM item = m_treeMarkers.GetChildItem(m_treeMarkers.GetRootItem());
|
|
|
|
|
|
|
|
|
|
while (item)
|
|
|
|
|
{
|
|
|
|
|
m_iSelectedIndex = m_treeMarkers.GetItemData(item);
|
|
|
|
|
|
|
|
|
|
g_iMarkerName[m_iSelectedIndex-1] = _T("");
|
|
|
|
|
g_iMarkerLon[m_iSelectedIndex-1] = 0;
|
|
|
|
|
g_iMarkerLat[m_iSelectedIndex-1] = 0;
|
|
|
|
|
|
|
|
|
|
CString strTitle;
|
|
|
|
|
strTitle.Format(_T("Marker%d"),m_iSelectedIndex);
|
|
|
|
|
|
|
|
|
|
WritePrivateProfileString(strTitle,_T("Name"),_T(""),m_strMarkerConfig);
|
|
|
|
|
WritePrivateProfileString(strTitle,_T("Lon"),_T(""),m_strMarkerConfig);
|
|
|
|
|
WritePrivateProfileString(strTitle,_T("Lat"),_T(""),m_strMarkerConfig);
|
|
|
|
|
|
|
|
|
|
::PostMessage(g_mapHwnd, WM_SEND_DRAWMARKER, m_iSelectedIndex-1, 1);
|
|
|
|
|
|
|
|
|
|
HTREEITEM childItem = m_treeMarkers.GetNextItem(item, TVGN_NEXT);
|
|
|
|
|
|
|
|
|
|
m_treeMarkers.DeleteItem(item);
|
|
|
|
|
|
|
|
|
|
item = childItem;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
g_iHaveMarkedPts = 0;
|
|
|
|
|
}
|
|
|
|
|
else if (m_iSelectedIndex > 0) //ɾ<><C9BE>ѡ<EFBFBD>еı<D0B5><C4B1>ǵ<EFBFBD>
|
|
|
|
|
{
|
|
|
|
|
CString strTitle, str;
|
|
|
|
|
|
|
|
|
|
for (int i=m_iSelectedIndex;i<g_iHaveMarkedPts;i++)
|
|
|
|
|
{
|
|
|
|
|
//g_iMarkerName[i-1] = g_iMarkerName[i];
|
|
|
|
|
g_iMarkerLon[i-1] = g_iMarkerLon[i];
|
|
|
|
|
g_iMarkerLat[i-1] = g_iMarkerLat[i];
|
|
|
|
|
g_bMarkerPlot[i-1] = g_bMarkerPlot[i];
|
|
|
|
|
|
|
|
|
|
if (g_bMarkerPlot[i-1])
|
|
|
|
|
{
|
|
|
|
|
::PostMessage(g_mapHwnd, WM_SEND_DRAWMARKER, i-1, 0);
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
::PostMessage(g_mapHwnd, WM_SEND_DRAWMARKER, i-1, 1);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
strTitle.Format(_T("Marker%d"),i);
|
|
|
|
|
|
|
|
|
|
str.Format(_T("%s"), g_iMarkerName[i-1]);
|
|
|
|
|
WritePrivateProfileString(strTitle,_T("Name"),str,m_strMarkerConfig);
|
|
|
|
|
|
|
|
|
|
str.Format(_T("%.7f"), g_iMarkerLon[i-1]);
|
|
|
|
|
WritePrivateProfileString(strTitle,_T("Lon"),str,m_strMarkerConfig);
|
|
|
|
|
|
|
|
|
|
str.Format(_T("%.7f"), g_iMarkerLat[i-1]);
|
|
|
|
|
WritePrivateProfileString(strTitle,_T("Lat"),str,m_strMarkerConfig);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
g_iMarkerName[g_iHaveMarkedPts-1] = _T("");
|
|
|
|
|
g_iMarkerLon[g_iHaveMarkedPts-1] = 0;
|
|
|
|
|
g_iMarkerLat[g_iHaveMarkedPts-1] = 0;
|
|
|
|
|
g_bMarkerPlot[g_iHaveMarkedPts-1] = false;
|
|
|
|
|
|
|
|
|
|
::PostMessage(g_mapHwnd, WM_SEND_DRAWMARKER, g_iHaveMarkedPts-1, 1);
|
|
|
|
|
|
|
|
|
|
strTitle.Format(_T("Marker%d"),g_iHaveMarkedPts);
|
|
|
|
|
|
|
|
|
|
WritePrivateProfileString(strTitle,_T("Name"),_T(""),m_strMarkerConfig);
|
|
|
|
|
WritePrivateProfileString(strTitle,_T("Lon"),_T(""),m_strMarkerConfig);
|
|
|
|
|
WritePrivateProfileString(strTitle,_T("Lat"),_T(""),m_strMarkerConfig);
|
|
|
|
|
|
|
|
|
|
m_treeMarkers.DeleteItem(m_treeMarkers.GetSelectedItem());
|
|
|
|
|
|
|
|
|
|
g_iHaveMarkedPts--;
|
|
|
|
|
|
|
|
|
|
{
|
|
|
|
|
HTREEITEM item = m_treeMarkers.GetChildItem(m_treeMarkers.GetRootItem());
|
|
|
|
|
int _iIndex = 0;
|
|
|
|
|
|
|
|
|
|
while (item)
|
|
|
|
|
{
|
|
|
|
|
_iIndex++;
|
|
|
|
|
|
|
|
|
|
m_treeMarkers.SetItemData(item, _iIndex);
|
|
|
|
|
|
|
|
|
|
str.Format(_T("Marker%d"), _iIndex);
|
|
|
|
|
|
|
|
|
|
m_treeMarkers.SetItemText(item, str);
|
|
|
|
|
|
|
|
|
|
item = m_treeMarkers.GetNextItem(item, TVGN_NEXT);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
GetDlgItem(IDC_EDIT_MARKER_NAME)->SetWindowText(_T(""));
|
|
|
|
|
GetDlgItem(IDC_EDIT_MARKER_LON)->SetWindowText(_T(""));
|
|
|
|
|
GetDlgItem(IDC_EDIT_MARKER_LAT)->SetWindowText(_T(""));
|
|
|
|
|
|
|
|
|
|
m_iSelectedIndex = -1;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ؼ<EFBFBD><D8BC><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD>¼<EFBFBD><C2BC><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
void CDlgMarker::OnNMClickTreeMarkers(NMHDR *pNMHDR, LRESULT *pResult)
|
|
|
|
|
{
|
|
|
|
|
//<2F><>ȡ<EFBFBD><C8A1>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
CPoint pt = GetCurrentMessage()->pt;
|
|
|
|
|
|
|
|
|
|
//ת<><D7AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ؼ<EFBFBD><D8BC>Ŀͻ<C4BF><CDBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
m_treeMarkers.ScreenToClient(&pt);
|
|
|
|
|
|
|
|
|
|
UINT uFlags = 0;
|
|
|
|
|
|
|
|
|
|
//<2F><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>괦<EFBFBD>Ľڵ<C4BD>
|
|
|
|
|
HTREEITEM hItem = m_treeMarkers.HitTest(pt, &uFlags);
|
|
|
|
|
|
|
|
|
|
if ((hItem != nullptr) && (TVHT_ONITEMSTATEICON & uFlags)) //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڵ㸴ѡ<E3B8B4><D1A1>
|
|
|
|
|
{
|
|
|
|
|
//ѡ<>иýڵ<C3BD>
|
|
|
|
|
m_treeMarkers.SelectItem(hItem);
|
|
|
|
|
|
|
|
|
|
//<2F><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>ǰ<EFBFBD>ڵ<EFBFBD><DAB5><EFBFBD>ѡ<EFBFBD><D1A1>״̬
|
|
|
|
|
BOOL bCheck = m_treeMarkers.GetCheck(hItem);
|
|
|
|
|
|
|
|
|
|
SetChildCheck(hItem, !bCheck);
|
|
|
|
|
SetParentCheck(hItem, !bCheck);
|
|
|
|
|
|
|
|
|
|
//<2F><>ȡѡ<C8A1>нڵ<D0BD><DAB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
m_iSelectedIndex = m_treeMarkers.GetItemData(hItem);
|
|
|
|
|
|
|
|
|
|
if (m_iSelectedIndex > 0)
|
|
|
|
|
{
|
|
|
|
|
CString str;
|
|
|
|
|
|
|
|
|
|
str.Format(_T("%s"), g_iMarkerName[m_iSelectedIndex-1]);
|
|
|
|
|
GetDlgItem(IDC_EDIT_MARKER_NAME)->SetWindowText(str);
|
|
|
|
|
|
|
|
|
|
str.Format(_T("%.7f"), g_iMarkerLon[m_iSelectedIndex-1]);
|
|
|
|
|
GetDlgItem(IDC_EDIT_MARKER_LON)->SetWindowText(str);
|
|
|
|
|
|
|
|
|
|
str.Format(_T("%.7f"), g_iMarkerLat[m_iSelectedIndex-1]);
|
|
|
|
|
GetDlgItem(IDC_EDIT_MARKER_LAT)->SetWindowText(str);
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD>ѡ<EFBFBD><D1A1>״̬<D7B4><CCAC>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD>ر<EFBFBD><D8B1>ǵ<EFBFBD>
|
|
|
|
|
if (!bCheck)
|
|
|
|
|
{
|
|
|
|
|
::PostMessage(g_mapHwnd, WM_SEND_DRAWMARKER, m_iSelectedIndex-1, 0);
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
::PostMessage(g_mapHwnd, WM_SEND_DRAWMARKER, m_iSelectedIndex-1, 1);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
else if (m_iSelectedIndex == 0)
|
|
|
|
|
{
|
|
|
|
|
for (int i=0;i<g_iHaveMarkedPts;i++)
|
|
|
|
|
{
|
|
|
|
|
//if (g_iMarkerName[i] != _T(""))
|
|
|
|
|
{
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD>ѡ<EFBFBD><D1A1>״̬<D7B4><CCAC>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD>ر<EFBFBD><D8B1>ǵ<EFBFBD>
|
|
|
|
|
if (!bCheck)
|
|
|
|
|
{
|
|
|
|
|
::PostMessage(g_mapHwnd, WM_SEND_DRAWMARKER, i, 0);
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
::PostMessage(g_mapHwnd, WM_SEND_DRAWMARKER, i, 1);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
GetDlgItem(IDC_EDIT_MARKER_NAME)->SetWindowText(_T(""));
|
|
|
|
|
GetDlgItem(IDC_EDIT_MARKER_LON)->SetWindowText(_T(""));
|
|
|
|
|
GetDlgItem(IDC_EDIT_MARKER_LAT)->SetWindowText(_T(""));
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
else if ((hItem != nullptr) && (TVHT_ONITEMLABEL & uFlags)) //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڵ<EFBFBD><DAB5><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
{
|
|
|
|
|
//ѡ<>иýڵ<C3BD>
|
|
|
|
|
m_treeMarkers.SelectItem(hItem);
|
|
|
|
|
|
|
|
|
|
//<2F><>ȡѡ<C8A1>нڵ<D0BD><DAB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
m_iSelectedIndex = m_treeMarkers.GetItemData(hItem);
|
|
|
|
|
|
|
|
|
|
if (m_iSelectedIndex > 0)
|
|
|
|
|
{
|
|
|
|
|
CString str;
|
|
|
|
|
|
|
|
|
|
str.Format(_T("%s"), g_iMarkerName[m_iSelectedIndex-1]);
|
|
|
|
|
GetDlgItem(IDC_EDIT_MARKER_NAME)->SetWindowText(str);
|
|
|
|
|
|
|
|
|
|
str.Format(_T("%.7f"), g_iMarkerLon[m_iSelectedIndex-1]);
|
|
|
|
|
GetDlgItem(IDC_EDIT_MARKER_LON)->SetWindowText(str);
|
|
|
|
|
|
|
|
|
|
str.Format(_T("%.7f"), g_iMarkerLat[m_iSelectedIndex-1]);
|
|
|
|
|
GetDlgItem(IDC_EDIT_MARKER_LAT)->SetWindowText(str);
|
|
|
|
|
|
|
|
|
|
//<2F><>ǰ<EFBFBD>ڵ<EFBFBD><DAB5><EFBFBD>Ϊѡ<CEAA><D1A1>״̬
|
|
|
|
|
m_treeMarkers.SetCheck(hItem, TRUE);
|
|
|
|
|
|
|
|
|
|
SetChildCheck(hItem, TRUE);
|
|
|
|
|
SetParentCheck(hItem, TRUE);
|
|
|
|
|
|
|
|
|
|
//<2F><>ʾ<EFBFBD><CABE>ǰѡ<C7B0>б<EFBFBD><D0B1>ǵ<EFBFBD>
|
|
|
|
|
::PostMessage(g_mapHwnd, WM_SEND_DRAWMARKER, m_iSelectedIndex-1, 0);
|
|
|
|
|
}
|
|
|
|
|
else if (m_iSelectedIndex == 0)
|
|
|
|
|
{
|
|
|
|
|
GetDlgItem(IDC_EDIT_MARKER_NAME)->SetWindowText(_T(""));
|
|
|
|
|
GetDlgItem(IDC_EDIT_MARKER_LON)->SetWindowText(_T(""));
|
|
|
|
|
GetDlgItem(IDC_EDIT_MARKER_LAT)->SetWindowText(_T(""));
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
*pResult = 0;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD>ij<EFBFBD>ڵ<EFBFBD><DAB5><EFBFBD><EFBFBD>ӽڵ<D3BD><DAB5><EFBFBD>ѡ<EFBFBD><D1A1>״̬
|
|
|
|
|
void CDlgMarker::SetChildCheck(HTREEITEM item, BOOL bCheck)
|
|
|
|
|
{
|
|
|
|
|
HTREEITEM childItem = m_treeMarkers.GetChildItem(item);
|
|
|
|
|
|
|
|
|
|
while (childItem)
|
|
|
|
|
{
|
|
|
|
|
m_treeMarkers.SetCheck(childItem, bCheck);
|
|
|
|
|
SetChildCheck(childItem, bCheck);
|
|
|
|
|
childItem = m_treeMarkers.GetNextItem(childItem, TVGN_NEXT);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD>ij<EFBFBD>ڵ<EFBFBD><DAB5>ĸ<EFBFBD><C4B8>ڵ<EFBFBD><DAB5><EFBFBD>ѡ<EFBFBD><D1A1>״̬
|
|
|
|
|
void CDlgMarker::SetParentCheck(HTREEITEM item, BOOL bCheck)
|
|
|
|
|
{
|
|
|
|
|
HTREEITEM parent = m_treeMarkers.GetParentItem(item);
|
|
|
|
|
|
|
|
|
|
if (parent == NULL)
|
|
|
|
|
{
|
|
|
|
|
return ;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (bCheck)
|
|
|
|
|
{
|
|
|
|
|
m_treeMarkers.SetCheck(parent, bCheck);
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
HTREEITEM bro = m_treeMarkers.GetNextItem(item, TVGN_NEXT);
|
|
|
|
|
|
|
|
|
|
bool bFlag = false;
|
|
|
|
|
|
|
|
|
|
while (bro)
|
|
|
|
|
{
|
|
|
|
|
if (m_treeMarkers.GetCheck(bro))
|
|
|
|
|
{
|
|
|
|
|
bFlag = true;
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
bro = m_treeMarkers.GetNextItem(bro, TVGN_NEXT);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (!bFlag)
|
|
|
|
|
{
|
|
|
|
|
bro = m_treeMarkers.GetNextItem(item, TVGN_PREVIOUS);
|
|
|
|
|
|
|
|
|
|
while (bro)
|
|
|
|
|
{
|
|
|
|
|
if (m_treeMarkers.GetCheck(bro))
|
|
|
|
|
{
|
|
|
|
|
bFlag = true;
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
bro = m_treeMarkers.GetNextItem(bro, TVGN_PREVIOUS);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (!bFlag)
|
|
|
|
|
{
|
|
|
|
|
m_treeMarkers.SetCheck(parent, false);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
SetParentCheck(parent, m_treeMarkers.GetCheck(parent));
|
|
|
|
|
}
|
|
|
|
|
|