Мегаобучалка Главная | О нас | Обратная связь


Файл KursovikMinView.cpp



2019-12-29 146 Обсуждений (0)
Файл KursovikMinView.cpp 0.00 из 5.00 0 оценок




// KursovikMinView.cpp : implementation of the CKursovikMinView class

//

#include "stdafx.h"

#include "KursovikMin.h"

 

#include "KursovikMinDoc.h"

#include "KursovikMinView.h"

#include "GraphSettinngs.h"

#include <math.h>

 

#ifdef _DEBUG

#define new DEBUG_NEW

#undef THIS_FILE

static char THIS_FILE[] = __FILE__;

#endif

 

/////////////////////////////////////////////////////////////////////////////

// CKursovikMinView

 

IMPLEMENT_DYNCREATE(CKursovikMinView, CScrollView)

 

BEGIN_MESSAGE_MAP(CKursovikMinView, CScrollView)

    //{{AFX_MSG_MAP(CKursovikMinView)

    ON_WM_LBUTTONUP()

    ON_COMMAND(ID_FILE_SAVE, OnFileSave)

    ON_COMMAND(ID_FILE_OPEN, OnFileOpen)

    ON_WM_MOUSEMOVE()

    ON_WM_RBUTTONUP()

    ON_WM_KEYUP()

    ON_COMMAND(ID_EDIT_DIALOG, OnEditDialog)

    ON_COMMAND(ID_EDIT_MAKEFULLGRAPH, OnEditMakefullgraph)

    ON_COMMAND(ID_EDIT_TEST_ON_FULL, OnEditTestOnFull)

    ON_COMMAND(ID_FILE_NEW, OnFileNew)

    ON_COMMAND(ID_SHOW_GRAPH, OnShowGraph)

    ON_COMMAND(ID_SHOW_GRAPHS, OnShowGraphs)

    ON_COMMAND(ID_SHOW_NGRAPH, OnShowNgraph)

    //}}AFX_MSG_MAP

    // Standard printing commands

    ON_COMMAND(ID_FILE_PRINT, CScrollView::OnFilePrint)

    ON_COMMAND(ID_FILE_PRINT_DIRECT, CScrollView::OnFilePrint)

    ON_COMMAND(ID_FILE_PRINT_PREVIEW, CScrollView::OnFilePrintPreview)

END_MESSAGE_MAP()

 

/////////////////////////////////////////////////////////////////////////////

// CKursovikMinView construction/destruction

 

CKursovikMinView::CKursovikMinView()

{

    // TODO: add construction code here

    const int COUNT = 8;

    mode = 0;

    const CString fname = "Graph.dat";

    CString str;

    CFile f;

 

    if(f.Open(fname,CFile::modeRead))

    {

              f.Close();

              m_graph.Load(fname);

    }

    else{

              MessageBox("Ôàéë "+fname+" íå íàéäåí\nÃðàô áóäåò ñîçäàí ñëó÷àéíûì îáðàçîì","Íåò ôàéëà",MB_OK);

              m_graph.Create(COUNT);

              m_graph.SetRand(30,150,25,0.5);

    }

    /*

    srand(time(NULL));

    for(int i=0;i<COUNT;i++ )

    {

              str.Format("Point-%i",i);

              m_graph.SetV(i,CPoint(20+rand()%100,20+rand()%100),str);

    }

    for(i=0;i<COUNT*COUNT;i++)

              if(rand() % 5 == 0) m_graph.SetE(i / COUNT, i % COUNT, 5.0+(1.0+rand())/RAND_MAX);

    */

}

 

CKursovikMinView::~CKursovikMinView()

{

}

 

BOOL CKursovikMinView::PreCreateWindow(CREATESTRUCT& cs)

{

    // TODO: Modify the Window class or styles here by modifying

    // the CREATESTRUCT cs

 

    return CScrollView::PreCreateWindow(cs);

}

 

/////////////////////////////////////////////////////////////////////////////

// CKursovikMinView drawing

 

void CKursovikMinView::OnDraw(CDC* pDC)

{

    CKursovikMinDoc* pDoc = GetDocument();

    ASSERT_VALID(pDoc);

    switch(mode){

              case 0 :m_graph.Show(pDC,RGB(0,0,0)); break;

              case 1 :m_Ngraph.Show(pDC,RGB(0,255,0)); break;

              case 2 :m_graph.Show(pDC,RGB(0,0,0)); break;

              default : m_graph.Show(pDC); break;

    }

    // TODO: add draw code for native data here

}

 

void CKursovikMinView::OnInitialUpdate()

{

    CScrollView::OnInitialUpdate();

 

    CSize sizeTotal;

    // TODO: calculate the total size of this view

    sizeTotal.cx = sizeTotal.cy = 100;

    SetScrollSizes(MM_TEXT, sizeTotal);

}

 

/////////////////////////////////////////////////////////////////////////////

// CKursovikMinView printing

 

BOOL CKursovikMinView::OnPreparePrinting(CPrintInfo* pInfo)

{

    // default preparation

    return DoPreparePrinting(pInfo);

}

 

void CKursovikMinView::OnBeginPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)

{

    // TODO: add extra initialization before printing

}

 

void CKursovikMinView::OnEndPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)

{

    // TODO: add cleanup after printing

}

 

/////////////////////////////////////////////////////////////////////////////

// CKursovikMinView diagnostics

 

#ifdef _DEBUG

void CKursovikMinView::AssertValid() const

{

    CScrollView::AssertValid();

}

 

void CKursovikMinView::Dump(CDumpContext& dc) const

{

    CScrollView::Dump(dc);

}

 

CKursovikMinDoc* CKursovikMinView::GetDocument() // non-debug version is inline

{

    ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CKursovikMinDoc)));

    return (CKursovikMinDoc*)m_pDocument;

}

#endif //_DEBUG

 

/////////////////////////////////////////////////////////////////////////////

// CKursovikMinView message handlers

 

void CKursovikMinView::OnFileSave()

{

    // TODO: Add your command handler code here

    CString fname;

    CFileDialog dlg(FALSE,"dat","*.dat");

    if(dlg.DoModal()==IDOK)

              m_graph.Save(dlg.GetFileName());

}

 

void CKursovikMinView::OnFileOpen()

{

    // TODO: Add your command handler code here

    CString fname;

    CFileDialog dlg(TRUE,"dat","*.dat");

    if(dlg.DoModal()==IDOK)

              m_graph.Load(dlg.GetFileName());

    Invalidate();

}

void CKursovikMinView::OnLButtonUp(UINT nFlags, CPoint point)

{

    // TODO: Add your message handler code here and/or call default

    //m_graph.SetRand(30,250,25,0.8);

    CScrollView::OnLButtonUp(nFlags, point);

}

 

void CKursovikMinView::OnMouseMove(UINT nFlags, CPoint point)

{

    // TODO: Add your message handler code here and/or call default

    if(nFlags & MK_RBUTTON) {

              m_graph.MoveV(point.x,point.y);

              Invalidate();

    }

    CScrollView::OnMouseMove(nFlags, point);

}

 

void CKursovikMinView::OnRButtonUp(UINT nFlags, CPoint point)

{

    // TODO: Add your message handler code here and/or call default

    mode = 0;

    m_graph.SetCurV(0);

    m_Ngraph.Destroy();

    for(int i=0;i<m_graph.V_count;i++)

              if((fabs(m_graph.V[i].pt.x-point.x) < 10) && (fabs(m_graph.V[i].pt.y-point.y) < 10))

              { m_graph.SetCurV(i); break; }

    Invalidate();

    CScrollView::OnRButtonUp(nFlags, point);

}

void CKursovikMinView::OnKeyUp(UINT nChar, UINT nRepCnt, UINT nFlags)

{

    // TODO: Add your message handler code here and/or call default

    switch(nChar)

    {

              case '0':

                       m_graph.SetRand(30,250,25,0.8);

                       Invalidate();

              break;

              //default: MessageBox("key = "+nChar); break;

    }

    CScrollView::OnKeyUp(nChar, nRepCnt, nFlags);

}

 

void CKursovikMinView::OnEditDialog()

{

    // TODO: Add your command handler code here

    CGraphSettinngs dlg;

    dlg.Init(&m_graph);

    dlg.DoModal();

    Invalidate();

}

 

void CKursovikMinView::OnEditMakefullgraph()

{

    // TODO: Add your command handler code here

    int i=0,j=0,Vs = m_graph.V_count*m_graph.V_count;

    BOOL IsFull = FALSE;

    for(i=0;i<Vs;i++)

              m_graph.E[i].state = TRUE;

    Invalidate();

}

 

void CKursovikMinView::OnEditTestOnFull()

{

    int i=0,j=0,Vs = m_graph.V_count;

    BOOL IsFull = FALSE;

    CString str;

 

    for(i=0;i<Vs;i++)

    {

              for(j=0;j<Vs-i;j++)

                       if(i != j && (!m_graph.E[i*Vs+j].state || !m_graph.E[j*Vs+i].state)) {IsFull = TRUE; break;}

              if(IsFull) break;

    }

    if(!IsFull) MessageBox("Äàííûé ãðàô - ïîëíûé","Test results",MB_OK);

    else{

              str.Format("Äàííûé ãðàô - íå ÿâëÿåòñÿ ïîëíûì\nÍåò ñîåäèíåíèÿ âåðøèí (%i,%i)",i,j);

              MessageBox(str,"Test results",MB_OK);

    }

}

 

void CKursovikMinView::OnFileNew()

{

    // TODO: Add your command handler code here

    m_graph.SetRand(30,250,25,0.8);

    Invalidate();

}

void CKursovikMinView::OnShowGraph()

{

    // TODO: Add your command handler code here

    mode = 0;

    Invalidate();

}

 

void CKursovikMinView::OnShowGraphs()

{

    // TODO: Add your command handler code here

    mode = 0;

        

    /*

    m_Ngraph.Destroy();

    m_Ngraph = m_graph;

    !m_Ngraph;

    */

    m_graph.MakeFull();

    Invalidate();

}

 

void CKursovikMinView::OnShowNgraph()

{

    // TODO: Add your command handler code here

    mode = 1;

    m_Ngraph = m_graph;

    !m_Ngraph;

    Invalidate();

}



2019-12-29 146 Обсуждений (0)
Файл KursovikMinView.cpp 0.00 из 5.00 0 оценок









Обсуждение в статье: Файл KursovikMinView.cpp

Обсуждений еще не было, будьте первым... ↓↓↓

Отправить сообщение

Популярное:
Как вы ведете себя при стрессе?: Вы можете самостоятельно управлять стрессом! Каждый из нас имеет право и возможность уменьшить его воздействие на нас...
Как выбрать специалиста по управлению гостиницей: Понятно, что управление гостиницей невозможно без специальных знаний. Соответственно, важна квалификация...
Как распознать напряжение: Говоря о мышечном напряжении, мы в первую очередь имеем в виду мускулы, прикрепленные к костям ...



©2015-2024 megaobuchalka.ru Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. (146)

Почему 1285321 студент выбрали МегаОбучалку...

Система поиска информации

Мобильная версия сайта

Удобная навигация

Нет шокирующей рекламы



(0.005 сек.)