📄 lineeditdlg.cpp
字号:
// LineEditDlg.cpp : implementation file
//
#include "stdafx.h"
#include "mapper.h"
#include "LineEditDlg.h"
#include "pointeditdlg.h"
#include "logfile.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CLineEditDlg dialog
CLineEditDlg::CLineEditDlg(CWnd* pParent /*=NULL*/)
: CDialog(CLineEditDlg::IDD, pParent)
{
//{{AFX_DATA_INIT(CLineEditDlg)
m_nData = -1;
m_sInfo = _T("");
//}}AFX_DATA_INIT
}
void CLineEditDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CLineEditDlg)
DDX_Control(pDX, IDC_DATA, m_oData);
DDX_LBIndex(pDX, IDC_DATA, m_nData);
DDX_Text(pDX, IDC_INFO, m_sInfo);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CLineEditDlg, CDialog)
//{{AFX_MSG_MAP(CLineEditDlg)
ON_LBN_DBLCLK(IDC_DATA, OnDblclkData)
ON_BN_CLICKED(IDC_ADD, OnAdd)
ON_BN_CLICKED(IDC_DELETE, OnDelete)
ON_BN_CLICKED(IDC_INSERT, OnInsert)
ON_BN_CLICKED(IDC_PAN, OnPan)
ON_BN_CLICKED(IDC_EXPORT, OnExport)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CLineEditDlg message handlers
BOOL CLineEditDlg::OnInitDialog()
{
CDialog::OnInitDialog();
long i;
CString s;
for(i=0;i<m_taPoint.GetSize();i++)
{
s.Format("%lf,%lf",m_taPoint[i].x,m_taPoint[i].y);
m_oData.AddString(s);
}
return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}
void CLineEditDlg::OnDblclkData()
{
UpdateData();
CString s;
CPointEditDlg ped;
ped.m_dX=m_taPoint[m_nData].x;
ped.m_dY=m_taPoint[m_nData].y;
if(ped.DoModal()!=IDOK)
return;
m_taPoint[m_nData].x=ped.m_dX;
m_taPoint[m_nData].y=ped.m_dY;
s.Format("%lf,%lf",ped.m_dX,ped.m_dY);
m_oData.DeleteString(m_nData);
m_oData.InsertString(m_nData,s);
UpdateData(FALSE);
}
void CLineEditDlg::OnAdd()
{
CString s;
CPointEditDlg ped;
ped.m_dX=0.0;
ped.m_dY=0.0;
if(ped.DoModal()!=IDOK)
return;
SMapperPoint mp;
mp.x=ped.m_dX;
mp.y=ped.m_dY;
m_taPoint.Add(mp);
s.Format("%lf,%lf",ped.m_dX,ped.m_dY);
m_oData.AddString(s);
}
void CLineEditDlg::OnDelete()
{
UpdateData();
if(m_nData<0)
{
AfxMessageBox("必须在列表中选择一个数据!");
return;
}
m_taPoint.RemoveAt(m_nData);
m_oData.DeleteString(m_nData);
}
void CLineEditDlg::OnInsert()
{
UpdateData();
if(m_nData<0)
{
AfxMessageBox("必须在列表中选择一个数据!\n新数据将插入在选择数据前面!");
return;
}
CString s;
CPointEditDlg ped;
ped.m_dX=0.0;
ped.m_dY=0.0;
if(ped.DoModal()!=IDOK)
return;
SMapperPoint mp;
mp.x=ped.m_dX;
mp.y=ped.m_dY;
m_taPoint.InsertAt(m_nData,mp);
s.Format("%lf,%lf",ped.m_dX,ped.m_dY);
m_oData.InsertString(m_nData,s);
UpdateData(FALSE);
}
void CLineEditDlg::OnPan()
{
CString s;
CPointEditDlg ped;
ped.m_dX=0.0;
ped.m_dY=0.0;
if(ped.DoModal()!=IDOK)
return;
m_oData.ResetContent();
long i;
for(i=0;i<m_taPoint.GetSize();i++)
{
m_taPoint[i].x+=ped.m_dX;
m_taPoint[i].y+=ped.m_dY;
s.Format("%lf,%lf",m_taPoint[i].x,m_taPoint[i].y);
m_oData.AddString(s);
}
}
void CLineEditDlg::OnExport()
{
CFileDialog fd(FALSE,"txt",NULL,OFN_EXPLORER|OFN_HIDEREADONLY|OFN_ALLOWMULTISELECT,"文本文件(*.txt)|*.txt||",this);
if(fd.DoModal()!=IDOK)
return;
CString s;
CLogFile f;
f.SetPathFile(fd.GetPathName());
for(long i=0;i<m_oData.GetCount();i++)
{
m_oData.GetText(i,s);
s.Replace(","," ");
f.OutPutLine(s);
}
AfxMessageBox("输出完成!");
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -