Hi,
I am trying to animate a car in a graphic scene. It was working but now i have lost that code. When it runs a window starts developing from right bottom of screen and captures my entire background graphics. Kindly solve this problem.
I am using Visual C 6.0 and windows 7.
// AnimationCarView.cpp : implementation of the CAnimationCarView class
//
#include "stdafx.h"
#include "AnimationCar.h"
#include "AnimationCarDoc.h"
#include "AnimationCarView.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CAnimationCarView
IMPLEMENT_DYNCREATE(CAnimationCarView, CView)
BEGIN_MESSAGE_MAP(CAnimationCarView, CView)
//{{AFX_MSG_MAP(CAnimationCarView)
ON_WM_CREATE()
ON_WM_TIMER()
ON_WM_ERASEBKGND()
//}}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()
/////////////////////////////////////////////////////////////////////////////
// CAnimationCarView construction/destruction
CAnimationCarView::CAnimationCarView()
{
// TODO: add construction code here
i=150,j=190,k=145,l=140,m=138,n=195,o=197,p=170,q=148,r=185;
penGrey.CreatePen(PS_SOLID, 5, RGB(128,128,128));//GREY color
penLGrey.CreatePen(PS_SOLID,5, RGB(220,220,220));//LGREY color
penBlack.CreatePen(PS_SOLID, 5, RGB(0,0,0));
pOldPen=NULL;
brGrey.CreateSolidBrush(RGB(128, 128, 128));
brLGrey.CreateSolidBrush(RGB(220,220,220));
brBlack.CreateSolidBrush(RGB(0, 0, 0));
pOldBrush=NULL;
}
CAnimationCarView::~CAnimationCarView()
{
}
BOOL CAnimationCarView::PreCreateWindow(CREATESTRUCT& cs)
{
// TODO: Modify the Window class or styles here by modifying
// the CREATESTRUCT cs
return CView::PreCreateWindow(cs);
}
/////////////////////////////////////////////////////////////////////////////
// CAnimationCarView drawing
void CAnimationCarView::road(CDC* pDC){
CPoint poly6[8]={CPoint(0,400), CPoint(210,400),CPoint(210,440),CPoint(0,440)};
CPen pen(PS_SOLID, 5, RGB(220,220,220));
CPen* pOldPen=NULL;
pOldPen=pDC->SelectObject(&pen);
CBrush br(RGB(220, 220, 220));
CBrush* pOldBrush=NULL;
pOldBrush=pDC->SelectObject(&br);
pDC->Polygon(poly6, 4);
pDC->SelectObject(pOldBrush);
pDC->SelectObject(pOldPen);
}
void CAnimationCarView::mountain(CDC* pDC)
{
//setcolor(BROWN);
CPen penBrown(PS_SOLID, 5, RGB(150,75,0));
CPen* pOldPen=NULL;
pOldPen=pDC->SelectObject(&penBrown);
//line(0,250,700,250);
pDC->MoveTo(0,250);
pDC->LineTo(700,250);
//line(0,250,0,160);
pDC->MoveTo(0,250);
pDC->LineTo(0,160);
//line(0,160,30,200);
pDC->MoveTo(0,160);
pDC->LineTo(30,200);
//line(30,200,80,120);
pDC->MoveTo(30,200);
pDC->LineTo(80,120);
//arc(90,124,30,150,10);
pDC->AngleArc(90,124,10,30,150);
//line(99,119,150,180);
pDC->MoveTo(99,119);
pDC->LineTo(150,180);
//line(150,180,220,100);
pDC->MoveTo(150,180);
pDC->LineTo(220,100);
//arc(234,106,30,150,15);
pDC->AngleArc(234,106,15,30,150);
//line(248,99,320,200);
pDC->MoveTo(248,99);
pDC->LineTo(320,200);
//line(320,200,370,125);
pDC->MoveTo(320,200);
pDC->LineTo(370,125);
//arc(380,129,30,150,10);
pDC->AngleArc(380,129,10,30,150);
//line(389,124,430,180);
pDC->MoveTo(389,124);
pDC->LineTo(430,180);
//line(430,180,505,90);
pDC->MoveTo(430,180);
pDC->LineTo(505,90);
//arc(519,96,30,150,15);
pDC->AngleArc(519,96,15,30,150);
//line(533,89,605,200);
pDC->MoveTo(533,89);
pDC->LineTo(605,200);
//line(605,200,700,110);
pDC->MoveTo(605,200);
pDC->LineTo(700,170);
//line(700,170,700,250);
pDC->MoveTo(700,170);
pDC->LineTo(700,250);
CBrush brBrown(RGB(150, 75, 0));
CBrush* pOldBrush=NULL;
pOldBrush=pDC->SelectObject(&brBrown);
pDC->FloodFill(10,245,RGB(150,75,0));
pDC->SelectObject(pOldBrush);
pDC->SelectObject(pOldPen);
}
void CAnimationCarView::stationary_car(CDC* pDC)
{
//int i=150,j=190,k=145,l=140,m=138,n=195,o=197,p=170,q=148,r=185;
//CPen penGrey(PS_SOLID, 5, RGB(128,128,128));//GREY color
CBitmap XMap,*pOldMap;
CPen* pOldPen=NULL;
pOldPen=pDC->SelectObject(&penGrey);
SIZE Size;
Size.cx = GetSystemMetrics(SM_CXSCREEN);
Size.cy = GetSystemMetrics(SM_CYSCREEN);
XMap.CreateCompatibleBitmap(pDC,Size.cx,Size.cy);
CDC WorkDC;
CDC *MyDC=&WorkDC;
MyDC->CreateCompatibleDC(pDC);
pOldMap=MyDC->SelectObject(&XMap);
//line(i,402,j,402);
MyDC->MoveTo(i,402);
MyDC->LineTo(j,402);
//line(j,415,k,415);
MyDC->MoveTo(j,415);
MyDC->LineTo(k,415);
//line(j,402,j,415);
MyDC->MoveTo(j,402);
MyDC->LineTo(j,415);
//line(k,415,i,402);
MyDC->MoveTo(k,415);
MyDC->LineTo(i,402);
//setfillstyle(SOLID_FILL,6);
//CBrush brGrey(RGB(128, 128, 128));
CBrush* pOldBrush=NULL;
//floodfill(p,408,6);
//NOTE IF FloodFill done after select object, color mixing would occur
pOldBrush=MyDC->SelectObject(&brGrey);
MyDC->FloodFill(p,408,RGB(128,128,128));
//line(n,415,o,428);
MyDC->MoveTo(n,415);
MyDC->LineTo(o,428);
//line(l,415,m,428);
MyDC->MoveTo(l,415);
MyDC->LineTo(m,428);
//line(l,415,n,415);
MyDC->MoveTo(l,415);
MyDC->LineTo(n,415);
//line(o,428,m,428);
MyDC->MoveTo(o,428);
MyDC->LineTo(m,428);
//setfillstyle(SOLID_FILL,6);
//floodfill(p,422,6);
MyDC->FloodFill(p,422,RGB(128,128,128));
MyDC->SelectObject(pOldBrush);
MyDC->SelectObject(pOldPen);
//Drawing wheels
//circle(q,434,5);
CBrush brBlack(RGB(0, 0, 0));
pOldBrush=NULL;
pOldBrush=MyDC->SelectObject(&brBlack);
//CPen penBlack(PS_SOLID, 5, RGB(0,0,0));//Black color
pOldPen=NULL;
pOldPen=MyDC->SelectObject(&penBlack);
MyDC->MoveTo(r,434);
MyDC->AngleArc(q,434,5,0,360);
MyDC->FloodFill(q,434,RGB(0,0,0));
//circle(r,434,5);
MyDC->AngleArc(r,434,5,0,360);
pDC->BitBlt(j,k,Size.cx,Size.cy,MyDC,0,0,SRCCOPY);
MyDC->SelectObject(pOldPen);
MyDC->SelectObject(pOldBrush);
MyDC->SelectObject(pOldMap);
XMap.DeleteObject();
MyDC->DeleteDC();
}
void CAnimationCarView::OnDraw(CDC* pDC)
{
CAnimationCarDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
// TODO: add draw code for native data here
CBitmap XMap,*pOldMap;
CRect rc;
GetClientRect(&rc);
XMap.CreateCompatibleBitmap(pDC,rc.Width(), rc.Height());
CDC WorkDC;
CDC *MyDC=&WorkDC;
MyDC->CreateCompatibleDC(pDC);
pOldMap=MyDC->SelectObject(&XMap);
road(MyDC);
mountain(MyDC);
stationary_car(MyDC);
pDC->BitBlt(0, 0, rc.Width(), rc.Height(), MyDC, 0, 0, SRCCOPY);
MyDC->SelectObject(pOldMap);
XMap.DeleteObject();
MyDC->DeleteDC();
}
/////////////////////////////////////////////////////////////////////////////
// CAnimationCarView printing
BOOL CAnimationCarView::OnPreparePrinting(CPrintInfo* pInfo)
{
// default preparation
return DoPreparePrinting(pInfo);
}
void CAnimationCarView::OnBeginPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)
{
// TODO: add extra initialization before printing
}
void CAnimationCarView::OnEndPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)
{
// TODO: add cleanup after printing
}
/////////////////////////////////////////////////////////////////////////////
// CAnimationCarView diagnostics
#ifdef _DEBUG
void CAnimationCarView::AssertValid() const
{
CView::AssertValid();
}
void CAnimationCarView::Dump(CDumpContext& dc) const
{
CView::Dump(dc);
}
CAnimationCarDoc* CAnimationCarView::GetDocument() // non-debug version is inline
{
ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CAnimationCarDoc)));
return (CAnimationCarDoc*)m_pDocument;
}
#endif //_DEBUG
/////////////////////////////////////////////////////////////////////////////
// CAnimationCarView message handlers
/*void CTestG1View::mountain(CDC* pDC)
{
//setcolor(BROWN);
CPen penBrown(PS_SOLID, 5, RGB(150,75,0));
CPen* pOldPen=NULL;
pOldPen=pDC->SelectObject(&penBrown);
//line(0,250,700,250);
pDC->MoveTo(0,250);
pDC->LineTo(700,250);
//line(0,250,0,160);
pDC->MoveTo(0,250);
pDC->LineTo(0,160);
//line(0,160,30,200);
pDC->MoveTo(0,160);
pDC->LineTo(30,200);
//line(30,200,80,120);
pDC->MoveTo(30,200);
pDC->LineTo(80,120);
//arc(90,124,30,150,10);
pDC->AngleArc(90,124,10,30,150);
//line(99,119,150,180);
pDC->MoveTo(99,119);
pDC->LineTo(150,180);
//line(150,180,220,100);
pDC->MoveTo(150,180);
pDC->LineTo(220,100);
//arc(234,106,30,150,15);
pDC->AngleArc(234,106,15,30,150);
//line(248,99,320,200);
pDC->MoveTo(248,99);
pDC->LineTo(320,200);
//line(320,200,370,125);
pDC->MoveTo(320,200);
pDC->LineTo(370,125);
//arc(380,129,30,150,10);
pDC->AngleArc(380,129,10,30,150);
//line(389,124,430,180);
pDC->MoveTo(389,124);
pDC->LineTo(430,180);
//line(430,180,505,90);
pDC->MoveTo(430,180);
pDC->LineTo(505,90);
//arc(519,96,30,150,15);
pDC->AngleArc(519,96,15,30,150);
//line(533,89,605,200);
pDC->MoveTo(533,89);
pDC->LineTo(605,200);
//line(605,200,700,110);
pDC->MoveTo(605,200);
pDC->LineTo(700,170);
//line(700,170,700,250);
pDC->MoveTo(700,170);
pDC->LineTo(700,250);
CBrush brBrown(RGB(150, 75, 0));
CBrush* pOldBrush=NULL;
pOldBrush=pDC->SelectObject(&brBrown);
pDC->FloodFill(10,245,RGB(150,75,0));
pDC->SelectObject(pOldBrush);
pDC->SelectObject(pOldPen);
}
CTestG1View::CTestG1View()
{
// TODO: add construction code here
i=150,j=190,k=145,l=140,m=138,n=195,o=197,p=170,q=148,r=185;
penGrey.CreatePen(PS_SOLID, 5, RGB(128,128,128));//GREY color
penLGrey.CreatePen(PS_SOLID,5, RGB(220,220,220));//LGREY color
penBlack.CreatePen(PS_SOLID, 5, RGB(0,0,0));
pOldPen=NULL;
brGrey.CreateSolidBrush(RGB(128, 128, 128));
brLGrey.CreateSolidBrush(RGB(220,220,220));
brBlack.CreateSolidBrush(RGB(0, 0, 0));
pOldBrush=NULL;
}
int CTestG1View::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
if (CView::OnCreate(lpCreateStruct) == -1)
return -1;
//void (*p)(UINT);
//p=&CTestG1View::OnTimer;
SetTimer(1,200,NULL);
// TODO: Add your specialized creation code here
return 0;
}
void CTestG1View::OnTimer(UINT nIDEvent){
if(i>0){
i=i-3;
Invalidate();
j=j-3;k=k-3;l=l-3;m=m-3;n=n-3;o=o-3;p=p-3;q=q-3;r=r-3;
}
}
void CTestG1View::road(CDC* pDC){
CPoint poly6[8]={CPoint(0,400), CPoint(210,400),CPoint(210,440),CPoint(0,440)};
CPen pen(PS_SOLID, 5, RGB(220,220,220));
CPen* pOldPen=NULL;
pOldPen=pDC->SelectObject(&pen);
CBrush br(RGB(220, 220, 220));
CBrush* pOldBrush=NULL;
pOldBrush=pDC->SelectObject(&br);
pDC->Polygon(poly6, 4);
pDC->SelectObject(pOldBrush);
pDC->SelectObject(pOldPen);
}
void CTestG1View::stationary_car(CDC* pDC)
{
//int i=150,j=190,k=145,l=140,m=138,n=195,o=197,p=170,q=148,r=185;
//CPen penGrey(PS_SOLID, 5, RGB(128,128,128));//GREY color
CBitmap XMap,*pOldMap;
CPen* pOldPen=NULL;
pOldPen=pDC->SelectObject(&penGrey);
SIZE Size;
Size.cx = GetSystemMetrics(SM_CXSCREEN);
Size.cy = GetSystemMetrics(SM_CYSCREEN);
XMap.CreateCompatibleBitmap(pDC,Size.cx,Size.cy);
CDC WorkDC;
CDC *MyDC=&WorkDC;
MyDC->CreateCompatibleDC(pDC);
pOldMap=MyDC->SelectObject(&XMap);
//line(i,402,j,402);
MyDC->MoveTo(i,402);
MyDC->LineTo(j,402);
//line(j,415,k,415);
MyDC->MoveTo(j,415);
MyDC->LineTo(k,415);
//line(j,402,j,415);
MyDC->MoveTo(j,402);
MyDC->LineTo(j,415);
//line(k,415,i,402);
MyDC->MoveTo(k,415);
MyDC->LineTo(i,402);
//setfillstyle(SOLID_FILL,6);
//CBrush brGrey(RGB(128, 128, 128));
CBrush* pOldBrush=NULL;
//floodfill(p,408,6);
//NOTE IF FloodFill done after select object, color mixing would occur
pOldBrush=MyDC->SelectObject(&brGrey);
MyDC->FloodFill(p,408,RGB(128,128,128));
//line(n,415,o,428);
MyDC->MoveTo(n,415);
MyDC->LineTo(o,428);
//line(l,415,m,428);
MyDC->MoveTo(l,415);
MyDC->LineTo(m,428);
//line(l,415,n,415);
MyDC->MoveTo(l,415);
MyDC->LineTo(n,415);
//line(o,428,m,428);
MyDC->MoveTo(o,428);
MyDC->LineTo(m,428);
//setfillstyle(SOLID_FILL,6);
//floodfill(p,422,6);
MyDC->FloodFill(p,422,RGB(128,128,128));
MyDC->SelectObject(pOldBrush);
MyDC->SelectObject(pOldPen);
//Drawing wheels
//circle(q,434,5);
CBrush brBlack(RGB(0, 0, 0));
pOldBrush=NULL;
pOldBrush=MyDC->SelectObject(&brBlack);
//CPen penBlack(PS_SOLID, 5, RGB(0,0,0));//Black color
pOldPen=NULL;
pOldPen=MyDC->SelectObject(&penBlack);
MyDC->MoveTo(r,434);
MyDC->AngleArc(q,434,5,0,360);
MyDC->FloodFill(q,434,RGB(0,0,0));
//circle(r,434,5);
MyDC->AngleArc(r,434,5,0,360);
pDC->BitBlt(j,k,Size.cx,Size.cy,MyDC,0,0,SRCCOPY);
MyDC->SelectObject(pOldPen);
MyDC->SelectObject(pOldBrush);
MyDC->SelectObject(pOldMap);
XMap.DeleteObject();
MyDC->DeleteDC();
}
void CTestG1View::OnDraw(CDC* pDC)
{
CTestG1Doc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
if (!pDoc)
return;
road(pDC);
mountain(pDC);
stationary_car(pDC);
//moving_car(pDC);
// TODO: add draw code for native data here
}
*/
BOOL CAnimationCarView::Create(LPCTSTR lpszClassName, LPCTSTR lpszWindowName, DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID, CCreateContext* pContext)
{
// TODO: Add your specialized code here and/or call the base class
//SetTimer(1,200,NULL);
return CWnd::Create(lpszClassName, lpszWindowName, dwStyle, rect, pParentWnd, nID, pContext);
}
int CAnimationCarView::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
if (CView::OnCreate(lpCreateStruct) == -1)
return -1;
SetTimer(1,200,NULL);
// TODO: Add your specialized creation code here
return 0;
}
void CAnimationCarView::OnTimer(UINT nIDEvent)
{
// TODO: Add your message handler code here and/or call default
if(i>0){
i=i-3;
Invalidate();
j=j-3;k=k-3;l=l-3;m=m-3;n=n-3;o=o-3;p=p-3;q=q-3;r=r-3;
}
CView::OnTimer(nIDEvent);
}
BOOL CAnimationCarView::OnEraseBkgnd(CDC* pDC)
{
// TODO: Add your message handler code here and/or call default
return TRUE;
return CView::OnEraseBkgnd(pDC);
}
//Header file
// AnimationCarView.h : interface of the CAnimationCarView class
//
/////////////////////////////////////////////////////////////////////////////
#if !defined(AFX_ANIMATIONCARVIEW_H__868E797E_E1BA_48B0_BA06_C84A7591A32B__INCLUDED_)
#define AFX_ANIMATIONCARVIEW_H__868E797E_E1BA_48B0_BA06_C84A7591A32B__INCLUDED_
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
class CAnimationCarView : public CView
{
protected: // create from serialization only
CAnimationCarView();
DECLARE_DYNCREATE(CAnimationCarView)
// Attributes
public:
CAnimationCarDoc* GetDocument();
// Operations
public:
void mountain(CDC*);
void road(CDC* pDC);
void stationary_car(CDC* pDC);
int i,j,k,l,m,n,o,p,q,r;
CPen penGrey, penLGrey, penBlack;
CPen *pOldPen;
CBrush brGrey, brLGrey, brBlack;
CBrush* pOldBrush;
// Overrides
// ClassWizard generated virtual function overrides
//{{AFX_VIRTUAL(CAnimationCarView)
public:
virtual void OnDraw(CDC* pDC); // overridden to draw this view
virtual BOOL PreCreateWindow(CREATESTRUCT& cs);
virtual BOOL Create(LPCTSTR lpszClassName, LPCTSTR lpszWindowName, DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID, CCreateContext* pContext = NULL);
protected:
virtual BOOL OnPreparePrinting(CPrintInfo* pInfo);
virtual void OnBeginPrinting(CDC* pDC, CPrintInfo* pInfo);
virtual void OnEndPrinting(CDC* pDC, CPrintInfo* pInfo);
//}}AFX_VIRTUAL
// Implementation
public:
virtual ~CAnimationCarView();
#ifdef _DEBUG
virtual void AssertValid() const;
virtual void Dump(CDumpContext& dc) const;
#endif
protected:
// Generated message map functions
protected:
//{{AFX_MSG(CAnimationCarView)
afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct);
afx_msg void OnTimer(UINT nIDEvent);
afx_msg BOOL OnEraseBkgnd(CDC* pDC);
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
};
#ifndef _DEBUG // debug version in AnimationCarView.cpp
inline CAnimationCarDoc* CAnimationCarView::GetDocument()
{ return (CAnimationCarDoc*)m_pDocument; }
#endif
/////////////////////////////////////////////////////////////////////////////
//{{AFX_INSERT_LOCATION}}
// Microsoft Visual C++ will insert additional declarations immediately before the previous line.
#endif // !defined(AFX_ANIMATIONCARVIEW_H__868E797E_E1BA_48B0_BA06_C84A7591A32B__INCLUDED_)
Kindly guide me.
Zulfi.