Implement_dyncreate(cLab3Doc, cDocument)
BEGIN_MESSAGE_MAP(CLab3Doc, CDocument)
//{{AFX_MSG_MAP(CLab3Doc)
ON_COMMAND(ID_DEL_LAST, OnDelLast)
ON_UPDATE_COMMAND_UI(ID_DEL_LAST, OnUpdateDelLast)
//}}AFX_MSG_MAP
ON_COMMAND(ID_DEL_FIRST, &CLab3Doc::OnDelFirst)
ON_UPDATE_COMMAND_UI(ID_DEL_FIRST, &CLab3Doc::OnUpdateDelFirst)
ON_COMMAND(ID_DEL_ALL, &CLab3Doc::OnDelAll)
ON_UPDATE_COMMAND_UI(ID_DEL_ALL, &CLab3Doc::OnUpdateDelAll)
ON_COMMAND(ID_INC1, &CLab3Doc::OnInc1)
ON_UPDATE_COMMAND_UI(ID_INC1, &CLab3Doc::OnUpdateInc1)
ON_COMMAND(ID_SORT, &CLab3Doc::OnSort)
ON_UPDATE_COMMAND_UI(ID_SORT, &CLab3Doc::OnUpdateSort)
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CLab3Doc construction/destruction
CLab3Doc::CLab3Doc()
{
// TODO: add one-time construction code here
}
CLab3Doc::~CLab3Doc()
{
}
BOOL CLab3Doc::OnNewDocument()
{
if (!CDocument::OnNewDocument())
return FALSE;
Stud s;
while (! v.empty()){
v.pop_back();
SetModifiedFlag(TRUE);
UpdateAllViews(0);}
s.f="Архипенко";
s.n="Николай";
s.pr=10;
s.sb=85;
v.push_back(s);
s.f="Безносов";
s.n="Антон";
s.pr=26;
s.sb=79;
v.push_back(s);
s.f="Буток";
s.n="Олег";
s.pr=0;
s.sb=82;
v.push_back(s);
s.f="Ваганов";
s.n="Александр";
s.pr=2;
s.sb=95;
v.push_back(s);
s.f="Туренок";
s.n="Алексей";
s.pr=22;
s.sb=91;
v.push_back(s);
s.f="Фомин";
s.n="Сергей";
s.pr=35;
s.sb=55;
v.push_back(s);
s.f="Волобуев";
s.n="Санек";
s.pr=17;
s.sb=43;
v.push_back(s);
s.f="Сильчев";
s.n="Женя";
s.pr=3;
s.sb=43;
v.push_back(s);
s.f="Равбель";
s.n="Никита";
s.pr=10;
s.sb=85;
v.push_back(s);
return TRUE;
}
/////////////////////////////////////////////////////////////////////////////
// CLab3Doc commands
void CLab3Doc::SetTitle(LPCTSTR lpszTitle)
{
CString s(lpszTitle);
CString sn;
sn.Format(TEXT("ПОС-09а %i"), kol_vo_stud);
CDocument::SetTitle(sn);
}
void CLab3Doc::OnDelLast()
{
v.pop_back();
SetModifiedFlag(TRUE);
UpdateAllViews(0);
}
void CLab3Doc::OnUpdateDelLast(CCmdUI* pCmdUI)
{
pCmdUI->Enable(! v.empty());
}
void CLab3Doc::OnDelFirst()
{
v.erase(v.begin());
SetModifiedFlag(TRUE);
UpdateAllViews(0);
// TODO: добавьте свой код обработчика команд
}
void CLab3Doc::OnUpdateDelFirst(CCmdUI *pCmdUI)
{
pCmdUI->Enable(! v.empty());
// TODO: добавьте свой код обработчика ИП обновления команд
}
void CLab3Doc::OnDelAll()
{ while (! v.empty()){
v.pop_back();
SetModifiedFlag(TRUE);
UpdateAllViews(0);}
// TODO: добавьте свой код обработчика команд
}
void CLab3Doc::OnUpdateDelAll(CCmdUI *pCmdUI)
{
pCmdUI->Enable(! v.empty());
// TODO: добавьте свой код обработчика ИП обновления команд
}
void CLab3Doc::OnInc1()
{
int n=v.size();
if (v[n-1].sb!=0)
{
v[n-1].sb --;
SetModifiedFlag(TRUE);
UpdateAllViews(0);
}
}
void CLab3Doc::OnUpdateInc1(CCmdUI *pCmdUI)
{ pCmdUI->Enable(! v.empty());
// TODO: добавьте свой код обработчика ИП обновления команд
}
bool func(const Stud& l,const Stud& r)
{
return (l.f<r.f);
}
void CLab3Doc::OnSort()
{ sort(v.begin(),v.end(),func);
// TODO: добавьте свой код обработчика команд
}
void CLab3Doc::OnUpdateSort(CCmdUI *pCmdUI)
{
pCmdUI->Enable(! v.empty());
// TODO: добавьте свой код обработчика ИП обновления команд
}
// DiagView.cpp : implementation file
//
#include "stdafx.h"
#include "lab3.h"
#include "DiagView.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CDiagView
IMPLEMENT_DYNCREATE(CDiagView, CScrollView)
CDiagView::CDiagView()
{
}
CDiagView::~CDiagView()
{
}
BEGIN_MESSAGE_MAP(CDiagView, CScrollView)
//{{AFX_MSG_MAP(CDiagView)
// NOTE - the ClassWizard will add and remove mapping macros here.
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CDiagView drawing
void CDiagView::OnInitialUpdate()
{
CScrollView::OnInitialUpdate();
CSize sizeTotal;
// TODO: calculate the total size of this view
sizeTotal.cx = sizeTotal.cy = 100;
SetScrollSizes(MM_TEXT, sizeTotal);
}
/*void CDiagView::OnDraw(CDC* pDC)
{
CLab3Doc* pDoc = (CLab3Doc*)GetDocument();
int n = pDoc->v.size();
for (int i=0; i<n; i++)
{
pDC->LineTo(10, 10*i+10);
pDC->LineTo(100+5*pDoc->v[i].sb, 10*i+10)
}
}
*/
void CDiagView::OnDraw(CDC* pDC)
{
CLab3Doc* pDoc = (CLab3Doc*)GetDocument();
int n = pDoc->v.size();
for (int i=0; i<n; i++)
{
//pDC->Rectangle(10*i+100, 100+2*pDoc->v[i].sb, 10*i,pDoc->v[i].sb);
// pDC->Rectangle(10*i+10, 10*i+10,10,10);
pDC->LineTo((1+i)*2, pDoc->v[i].sb);
}
pDC->LineTo((pDoc->v.size()+1)*2,0);
}
/////////////////////////////////////////////////////////////////////////////
// CDiagView diagnostics
#ifdef _DEBUG
void CDiagView::AssertValid() const
{
CScrollView::AssertValid();
}
void CDiagView::Dump(CDumpContext& dc) const
{
CScrollView::Dump(dc);
}
#endif //_DEBUG
/////////////////////////////////////////////////////////////////////////////
// CDiagView message handlers
// lab3Doc.h : interface of the CLab3Doc class
//
/////////////////////////////////////////////////////////////////////////////
#if !defined(AFX_LAB3DOC_H__E1076274_2346_4D65_9829_3A3EC66D3309__INCLUDED_)
#define AFX_LAB3DOC_H__E1076274_2346_4D65_9829_3A3EC66D3309__INCLUDED_
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
struct Stud
{
public:
CString f;
CString n;
int pr;
int sb;
};
class CLab3Doc : public CDocument
{
protected: // create from serialization only
CLab3Doc();
DECLARE_DYNCREATE(CLab3Doc)
// Attributes
public:
// Operations
public:
// Overrides
// ClassWizard generated virtual function overrides
//{{AFX_VIRTUAL(CLab3Doc)
public:
virtual BOOL OnNewDocument();
virtual void Serialize(CArchive& ar);
virtual void SetTitle(LPCTSTR lpszTitle);
//}}AFX_VIRTUAL
// Implementation
public:
std::vector<Stud> v;
virtual ~CLab3Doc();
#ifdef _DEBUG
virtual void AssertValid() const;
virtual void Dump(CDumpContext& dc) const;
#endif
protected:
// Generated message map functions
protected:
//{{AFX_MSG(CLab3Doc)
afx_msg void OnDelLast();
afx_msg void OnUpdateDelLast(CCmdUI* pCmdUI);
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
public:
afx_msg void OnDelFirst();
afx_msg void OnUpdateDelFirst(CCmdUI *pCmdUI);
afx_msg void OnDelAll();
afx_msg void OnUpdateDelAll(CCmdUI *pCmdUI);
afx_msg void OnInc1();
afx_msg void OnUpdateInc1(CCmdUI *pCmdUI);
afx_msg void OnSort();
afx_msg void OnUpdateSort(CCmdUI *pCmdUI);
};
/////////////////////////////////////////////////////////////////////////////
//{{AFX_INSERT_LOCATION}}
// Microsoft Visual C++ will insert additional declarations immediately before the previous line.
#endif // !defined(AFX_LAB3DOC_H__E1076274_2346_4D65_9829_3A3EC66D3309__INCLUDED_)