📄 trafficlightview.cpp
字号:
// TrafficlightView.cpp : implementation of the CTrafficlightView class
//
#include "stdafx.h"
#include "Trafficlight.h"
#include "Car.h"
#include "TrafficlightDoc.h"
#include "TrafficlightView.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CTrafficlightView
IMPLEMENT_DYNCREATE(CTrafficlightView, CView)
BEGIN_MESSAGE_MAP(CTrafficlightView, CView)
//{{AFX_MSG_MAP(CTrafficlightView)
ON_WM_TIMER()
ON_COMMAND(ID_BEGIN, OnBegin)
ON_COMMAND(ID_END, OnEnd)
//}}AFX_MSG_MAP
// Standard printing commands
ON_COMMAND(ID_FILE_PRINT, CView::OnFilePrint)
ON_COMMAND(ID_FILE_PRINT_DIRECT, CView::OnFilePrint)
ON_COMMAND(ID_FILE_PRINT_PREVIEW, CView::OnFilePrintPreview)
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CTrafficlightView construction/destruction
CTrafficlightView::CTrafficlightView()
{
// TODO: add construction code here
// car1.m_pointCar.x=600;
// car1.m_pointCar.y=400;
// car2.m_pointCar.x=500;
// car2.m_pointCar.y=400;
m_nDelaytime=0;
m_nRecordcount=0;
}
CTrafficlightView::~CTrafficlightView()
{
}
BOOL CTrafficlightView::PreCreateWindow(CREATESTRUCT& cs)
{
// TODO: Modify the Window class or styles here by modifying
// the CREATESTRUCT cs
return CView::PreCreateWindow(cs);
}
/////////////////////////////////////////////////////////////////////////////
// CTrafficlightView drawing
void CTrafficlightView::OnDraw(CDC* pDC)
{
CTrafficlightDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
// TODO: add draw code for native data here
pDC->SetTextColor(RGB(0,0,255));
pDC->TextOut(180,180,"交通灯");
CBrush SolidBrush1(RGB(0,255,0));
CBrush SolidBrush2(RGB(255,0,0));
CBrush SolidBrush3(RGB(0,0,0));
if(m_nDelaytime==0)
{
CBrush *pOldBrush=pDC->SelectObject(&SolidBrush1);
pDC->Ellipse(200,212,220,232);
pDC->SelectObject(&SolidBrush3); pDC->Ellipse(180,212,200,232);
pDC->SelectObject(pOldBrush);
}
else
{pDC->SelectObject(&SolidBrush3);
pDC->Ellipse(200,212,220,232);
pDC->SelectObject(&SolidBrush2); pDC->Ellipse(180,212,200,232);
}
pDC->MoveTo(200,232);
pDC->LineTo(200,400);
pDC->TextOut(500,200,"汽车流量");
CString c;
c.Format("%d",m_nRecordcount);
pDC->TextOut(600,200,c);
CDC MemDC;
MemDC.CreateCompatibleDC(0);
car1.ShowCar(pDC,&MemDC);
car2.ShowCar(pDC,&MemDC);
}
/////////////////////////////////////////////////////////////////////////////
// CTrafficlightView printing
BOOL CTrafficlightView::OnPreparePrinting(CPrintInfo* pInfo)
{
// default preparation
return DoPreparePrinting(pInfo);
}
void CTrafficlightView::OnBeginPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)
{
// TODO: add extra initialization before printing
}
void CTrafficlightView::OnEndPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)
{
// TODO: add cleanup after printing
}
/////////////////////////////////////////////////////////////////////////////
// CTrafficlightView diagnostics
#ifdef _DEBUG
void CTrafficlightView::AssertValid() const
{
CView::AssertValid();
}
void CTrafficlightView::Dump(CDumpContext& dc) const
{
CView::Dump(dc);
}
CTrafficlightDoc* CTrafficlightView::GetDocument() // non-debug version is inline
{
ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CTrafficlightDoc)));
return (CTrafficlightDoc*)m_pDocument;
}
#endif //_DEBUG
/////////////////////////////////////////////////////////////////////////////
// CTrafficlightView message handlers
void CTrafficlightView::OnTimer(UINT nIDEvent)
{
// TODO: Add your message handler code here and/or call default
if(car1.GetCar().left>180&&car1.GetCar().left<220&&m_nDelaytime!=0)
{
InvalidateRect(car1.GetCar());
}
else
{InvalidateRect(car1.GetCar());car1.ChangePos(0);}
if(car2.GetCar().left>180&&car2.GetCar().left<220&&m_nDelaytime!=0)
{
InvalidateRect(car2.GetCar());
}
else
{InvalidateRect(car2.GetCar());car2.ChangePos(1);}
if(nIDEvent==2)
{
m_nDelaytime+=1;
m_nDelaytime=m_nDelaytime%2;
InvalidateRect(CRect(175,200,255,405));
}
if(car1.GetCar().left<-80||car2.GetCar().left<-80)
{
m_nRecordcount+=1;
InvalidateRect(CRect(495,195,650,230));
}
CView::OnTimer(nIDEvent);
}
void CTrafficlightView::OnBegin()
{
// TODO: Add your command handler code here
car1.ResetPos(0);
car2.ResetPos(1);
Invalidate();
SetTimer(1,60,NULL);
SetTimer(2,10000,NULL);
m_nDelaytime=0;
m_nRecordcount=0;
}
void CTrafficlightView::OnEnd()
{
// TODO: Add your command handler code here
KillTimer(1);
KillTimer(2);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -