Скачиваний:
21
Добавлен:
01.05.2014
Размер:
3.13 Кб
Скачать
// 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