Добавил:
Studfiles2
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:Алгоритм Киркпатрика-Зайделя / Source / Edit
.cpp// Edit.cpp : implementation file
//
#include "stdafx.h"
#include "CH_KS.h"
#include "Edit.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// Edit dialog
Edit::Edit(CWnd* pParent /*=NULL*/)
: CDialog(Edit::IDD, pParent)
{
//{{AFX_DATA_INIT(Edit)
m_i = 1;
m_string = _T("1");
m_string_x = _T("0");
m_string_y = _T("0");
//}}AFX_DATA_INIT
}
void Edit::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(Edit)
DDX_Control(pDX, IDC_Y_SPIN, m_y_spin);
DDX_Control(pDX, IDC_X_SPIN, m_x_spin);
DDX_Control(pDX, IDC_N_SPIN, m_n_spin);
DDX_Text(pDX, IDC_N, m_string);
DDX_Text(pDX, IDC_X, m_string_x);
DDX_Text(pDX, IDC_Y, m_string_y);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(Edit, CDialog)
//{{AFX_MSG_MAP(Edit)
ON_EN_CHANGE(IDC_N, OnChangeN)
ON_BN_CLICKED(IDUPDATE, OnUpdate)
ON_EN_CHANGE(IDC_X, OnChangeX)
ON_EN_CHANGE(IDC_Y, OnChangeY)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// Edit message handlers
void Edit::OnChangeN()
{
UpdateData(TRUE);
m_string.Remove(0xA0);
m_i = atoi(m_string);
if (m_i > p->N()) {
m_i = p->N();
m_string.Format("%d", m_i);
}
else if (m_i < 1)
{
m_i = 1;
m_string.Format("%d", m_i);
}
m_x = p->X(m_i-1);
m_y = p->Y(m_i-1);
m_string_x.Format("%d", m_x);
m_string_y.Format("%d", m_y);
UpdateData(FALSE);
}
void Edit::OnCancel()
{
EndDialog(IDCANCEL);
}
void Edit::OnUpdate()
{
if (!p->Check(TMyPoint(m_x, m_y)) || ((abs(p->X(m_i-1) - m_x) < 5) && (abs(p->Y(m_i-1) - m_y) < 5))) {
p->X(m_i-1, m_x);
p->Y(m_i-1, m_y);
}
EndDialog(IDUPDATE);
}
BOOL Edit::OnInitDialog()
{
CDialog::OnInitDialog();
UpdateData(TRUE);
m_n_spin.SetBuddy(GetDlgItem(IDC_N));
m_n_spin.SetRange(1, p->N());
m_x_spin.SetBuddy(GetDlgItem(IDC_X));
m_x_spin.SetRange(1, SIZEX-1);
m_y_spin.SetBuddy(GetDlgItem(IDC_Y));
m_y_spin.SetRange(1, SIZEY-1);
m_x = p->X(m_i-1);
m_y = p->Y(m_i-1);
m_string_x.Format("%d", m_x);
m_string_y.Format("%d", m_y);
UpdateData(FALSE);
GotoDlgCtrl(GetDlgItem(IDC_N));
return FALSE;
}
void Edit::OnChangeX()
{
UpdateData(TRUE);
m_string_x.Remove(0xA0);
m_x = atoi(m_string_x);
if (m_x > SIZEX-1) {
m_x = SIZEX-1;
m_string_x.Format("%d", m_x);
}
else if (m_x < 0)
{
m_x = 0;
m_string_x.Format("%d", m_x);
}
UpdateData(FALSE);
}
void Edit::OnChangeY()
{
UpdateData(TRUE);
m_string_y.Remove(0xA0);
m_y = atoi(m_string_y);
if (m_y > SIZEY-1) {
m_y = SIZEY-1;
m_string_y.Format("%d", m_y);
}
else if (m_y < 0)
{
m_y = 0;
m_string_y.Format("%d", m_y);
}
UpdateData(FALSE);
}
Соседние файлы в папке Source