Добавил:
Studfiles2
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:Лабораторная работа 24 / lab22 / GraphDlg
.cpp// 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