Скачиваний:
10
Добавлен:
01.05.2014
Размер:
3.86 Кб
Скачать
// GraphDlg.cpp : implementation file
//

#include "stdafx.h"
#include "lab22.h"
#include "GraphDlg.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/////////////////////////////////////////////////////////////////////////////
// GraphDlg dialog


GraphDlg::GraphDlg(CWnd* pParent /*=NULL*/)
	: CDialog(GraphDlg::IDD, pParent)
{
	//{{AFX_DATA_INIT(GraphDlg)
	m_cnt = 0;
	m_name = _T("");
	m_nom = 0;
	m_x = 0;
	m_y = 0;
	//}}AFX_DATA_INIT
	index=0;
}


void GraphDlg::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(GraphDlg)
	DDX_Control(pDX, IDC_LIST1, m_ways);
	DDX_Text(pDX, IDC_cnt, m_cnt);
	DDX_Text(pDX, IDC_NAME, m_name);
	DDX_Text(pDX, IDC_nom, m_nom);
	DDX_Text(pDX, IDC_X, m_x);
	DDX_Text(pDX, IDC_Y, m_y);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(GraphDlg, CDialog)
	//{{AFX_MSG_MAP(GraphDlg)
	ON_BN_CLICKED(IDC_BUTTON2, OnButton2)
	ON_BN_CLICKED(IDC_BUTTON3, OnButton3)
	ON_BN_CLICKED(IDC_BUTTON5, OnButton5)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// GraphDlg message handlers

void GraphDlg::OnButton2() 
{
	// TODO: Add your control notification handler code here
	if (index>0)
	{
		index--;
		GrIterator<Shape*> it(graph);

		for (int i=0;i<index;i++)
		{it.goNext();}

		m_nom=index+1;
		m_name=it.currentElement()->getName();
		m_x=it.currentElement()->GetX();
		m_y=it.currentElement()->GetY();

		std::list<int> l=graph.getNextWays(it.currentIndex());
		std::list<int>::iterator lit;
		lit=l.begin();

		int Cnt=m_ways.GetCount();

		while (m_ways.GetCount()>0)
		{
			m_ways.DeleteString(0);
		}

		CString str;
		while (lit!=l.end())
		{
			str.Format("%d",*lit);
			m_ways.AddString(str);
			lit++;
		}

		UpdateData(false);
	}	
}

void GraphDlg::OnButton3() 
{
	// TODO: Add your control notification handler code here
	if (index<m_cnt-1)
	{
		index++;
		GrIterator<Shape*> it(graph);

		for (int i=0;i<index;i++)
		{it.goNext();}

		m_nom=index+1;
		m_name=it.currentElement()->getName();
		m_x=it.currentElement()->GetX();
		m_y=it.currentElement()->GetY();

		std::list<int> l=graph.getNextWays(it.currentIndex());
		std::list<int>::iterator lit;
		lit=l.begin();

		while (m_ways.GetCount()>0)
		{
			m_ways.DeleteString(0);
		}


		CString str;
		while (lit!=l.end())
		{
			str.Format("%d",*lit);
			m_ways.AddString(str);
			lit++;
		}

		UpdateData(false);
	}	
}

BOOL GraphDlg::OnInitDialog() 
{
	CDialog::OnInitDialog();
	
	// TODO: Add extra initialization here
	
		
	GrIterator<Shape*> it(graph);

	std::list<int> l=graph.getNextWays(it.currentIndex());
	std::list<int>::iterator lit;
	lit=l.begin();

	CString str;
	while (lit!=l.end())
	{
		str.Format("%d",*lit);
		m_ways.AddString(str);
		lit++;
	}


	return TRUE;  // return TRUE unless you set the focus to a control
	              // EXCEPTION: OCX Property Pages should return FALSE
}

void GraphDlg::OnButton5() 
{
	// TODO: Add your control notification handler code here
	int nom=m_ways.GetCaretIndex();

	CString str;
	m_ways.GetText(nom,str);
	
	int m_ind=atoi(str);

	m_name=graph.getElement(m_ind)->getName();
	m_x=graph.getElement(m_ind)->GetX();
	m_y=graph.getElement(m_ind)->GetY();
	m_nom=m_ind;

	GrIterator<Shape*> it(graph);

	index=1;
	while (it.currentIndex()!=m_ind)
	{it.goNext();
	 index++;
	}


		while (m_ways.GetCount()>0)
		{
			m_ways.DeleteString(0);
		}

		std::list<int> l=graph.getNextWays(m_ind);
		std::list<int>::iterator lit;
		lit=l.begin();

		while (lit!=l.end())
		{
			str.Format("%d",*lit);
			m_ways.AddString(str);
			lit++;
		}
		

		UpdateData(false);
}
Соседние файлы в папке lab22