Добавил:
Studfiles2
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:Алгоритм Киркпатрика-Зайделя / Source / Random
.cpp// Random.cpp : implementation file
//
#include "stdafx.h"
#include "CH_KS.h"
#include "Random.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// Random dialog
Random::Random(CWnd* pParent /*=NULL*/)
: CDialog(Random::IDD, pParent)
{
//{{AFX_DATA_INIT(Random)
m_amount = 500;
m_sizex = SIZEX-1;
m_sizey = SIZEY-1;
m_left = 0;
m_upper = 0;
m_all_workspace = 0;
m_string_amount = _T("500");
m_string_sizex = _T("");
m_string_sizey = _T("");
m_string_left = _T("0");
m_string_upper = _T("0");
//}}AFX_DATA_INIT
}
void Random::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(Random)
DDX_Control(pDX, IDC_Y_UPPER_SPIN, m_y_upper_spin);
DDX_Control(pDX, IDC_X_LEFT_SPIN, m_x_left_spin);
DDX_Control(pDX, IDC_SIZEY_SPIN, m_sizey_spin);
DDX_Control(pDX, IDC_SIZEX_SPIN, m_sizex_spin);
DDX_Control(pDX, IDC_AMOUNT_SPIN, m_amount_spin);
DDX_Radio(pDX, IDC_ALL_WORKSPACE, m_all_workspace);
DDX_Text(pDX, IDC_AMOUNT, m_string_amount);
DDX_Text(pDX, IDC_SIZEX, m_string_sizex);
DDX_Text(pDX, IDC_SIZEY, m_string_sizey);
DDX_Text(pDX, IDC_X_LEFT, m_string_left);
DDX_Text(pDX, IDC_Y_UPPER, m_string_upper);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(Random, CDialog)
//{{AFX_MSG_MAP(Random)
ON_BN_CLICKED(IDC_ALL_WORKSPACE, OnAllWorkspace)
ON_BN_CLICKED(IDC_BOUNDS, OnBounds)
ON_EN_CHANGE(IDC_X_LEFT, OnChangeXLeft)
ON_EN_CHANGE(IDC_Y_UPPER, OnChangeYUpper)
ON_EN_CHANGE(IDC_SIZEX, OnChangeSizex)
ON_EN_CHANGE(IDC_SIZEY, OnChangeSizey)
ON_EN_CHANGE(IDC_AMOUNT, OnChangeAmount)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// Random message handlers
BOOL Random::OnInitDialog()
{
CDialog::OnInitDialog();
m_amount_spin.SetBuddy(GetDlgItem(IDC_AMOUNT));
m_amount_spin.SetRange(1, MAXPT - m_n);
if (MAXPT - m_n < 500) {
m_string_amount.Format("%d", MAXPT - m_n);
m_amount = MAXPT - m_n;
}
m_x_left_spin.SetBuddy(GetDlgItem(IDC_X_LEFT));
m_x_left_spin.SetRange(0, SIZEX-1);
m_left = 0;
m_y_upper_spin.SetBuddy(GetDlgItem(IDC_Y_UPPER));
m_y_upper_spin.SetRange(0, SIZEY-1);
m_upper = 0;
m_sizex_spin.SetBuddy(GetDlgItem(IDC_SIZEX));
m_sizex_spin.SetRange(1, SIZEX-1);
m_string_sizex.Format("%d", SIZEX-1);
m_sizex = SIZEX-1;
m_sizey_spin.SetBuddy(GetDlgItem(IDC_SIZEY));
m_sizey_spin.SetRange(1, SIZEY-1);
m_string_sizey.Format("%d", SIZEY-1);
m_sizey = SIZEY-1;
OnAllWorkspace();
UpdateData(FALSE);
GotoDlgCtrl(GetDlgItem(IDC_AMOUNT));
return FALSE;
}
void Random::OnAllWorkspace()
{
m_all_workspace = 0;
GetDlgItem(IDC_X_LEFT)->EnableWindow(SW_HIDE);
m_x_left_spin.EnableWindow(SW_HIDE);
GetDlgItem(IDC_Y_UPPER)->EnableWindow(SW_HIDE);
m_y_upper_spin.EnableWindow(SW_HIDE);
GetDlgItem(IDC_SIZEX)->EnableWindow(SW_HIDE);
m_sizex_spin.EnableWindow(SW_HIDE);
GetDlgItem(IDC_SIZEY)->EnableWindow(SW_HIDE);
m_sizey_spin.EnableWindow(SW_HIDE);
UpdateData(FALSE);
}
void Random::OnBounds()
{
m_all_workspace = 1;
GetDlgItem(IDC_X_LEFT)->EnableWindow(SW_SHOW);
m_x_left_spin.EnableWindow(SW_SHOW);
GetDlgItem(IDC_Y_UPPER)->EnableWindow(SW_SHOW);
m_y_upper_spin.EnableWindow(SW_SHOW);
GetDlgItem(IDC_SIZEX)->EnableWindow(SW_SHOW);
m_sizex_spin.EnableWindow(SW_SHOW);
GetDlgItem(IDC_SIZEY)->EnableWindow(SW_SHOW);
m_sizey_spin.EnableWindow(SW_SHOW);
UpdateData(FALSE);
}
void Random::OnChangeXLeft()
{
UpdateData(TRUE);
m_string_left.Remove(0xA0);
m_left = atoi(m_string_left);
m_string_sizex.Remove(0xA0);
m_sizex = atoi(m_string_sizex);
if (m_left + m_sizex > SIZEX-1) {
m_sizex = (SIZEX-1) - m_left;
if (m_sizex < 1) {
m_sizex = 1;
m_left = (SIZEX-1) - m_sizex;
}
}
m_string_left.Format("%d", m_left);
m_string_sizex.Format("%d", m_sizex);
UpdateData(FALSE);
}
void Random::OnChangeYUpper()
{
UpdateData(TRUE);
m_string_upper.Remove(0xA0);
m_upper = atoi(m_string_upper);
m_string_sizey.Remove(0xA0);
m_sizey = atoi(m_string_sizey);
if (m_upper + m_sizey > SIZEY-1) {
m_sizey = (SIZEY-1) - m_upper;
if (m_sizey < 1) {
m_sizey = 1;
m_upper = (SIZEY-1) - m_sizey;
}
}
m_string_upper.Format("%d", m_upper);
m_string_sizey.Format("%d", m_sizey);
UpdateData(FALSE);
}
void Random::OnChangeSizex()
{
UpdateData(TRUE);
m_string_left.Remove(0xA0);
m_left = atoi(m_string_left);
m_string_sizex.Remove(0xA0);
m_sizex = atoi(m_string_sizex);
if (m_left + m_sizex > SIZEX-1) {
m_left = (SIZEX-1) - m_sizex;
if (m_left < 0) {
m_left = 0;
m_sizex = (SIZEX-1) - m_left;
}
}
m_string_left.Format("%d", m_left);
m_string_sizex.Format("%d", m_sizex);
UpdateData(FALSE);
}
void Random::OnChangeSizey()
{
UpdateData(TRUE);
m_string_upper.Remove(0xA0);
m_upper = atoi(m_string_upper);
m_string_sizey.Remove(0xA0);
m_sizey = atoi(m_string_sizey);
if (m_upper + m_sizey > SIZEY-1) {
m_upper = (SIZEY-1) - m_sizey;
if (m_upper < 0) {
m_upper = 0;
m_sizey = (SIZEY-1) - m_upper;
}
}
m_string_upper.Format("%d", m_upper);
m_string_sizey.Format("%d", m_sizey);
UpdateData(FALSE);
}
void Random::OnChangeAmount()
{
UpdateData(TRUE);
m_string_amount.Remove(0xA0);
m_amount = atoi(m_string_amount);
if (m_amount < 1)
m_amount = 1;
if (m_amount > MAXPT - m_n)
m_amount = MAXPT - m_n;
m_string_amount.Format("%d", m_amount);
UpdateData(FALSE);
}
Соседние файлы в папке Source