AutoCAD 3DMAX C语言 Pro/E UG JAVA编程 PHP编程 Maya动画 Matlab应用 Android
Photoshop Word Excel flash VB编程 VC编程 Coreldraw SolidWorks A Designer Unity3D
 首页 > C++

怎样实现动画背景旗帜

51自学网 http://www.wanshiok.com

 

m_sizeClient.cx = cx;
m_sizeClient.cy = cy;

RedrawWindow(NULL, NULL,
RDW_INVALIDATE|RDW_ERASE|RDW_ERASENOW|RDW_ALLCHILDREN);

return ;
}

void CMdiMainClient::OnTimer(UINT nIDEvent)
{
DisplayNextLogoFrame();
CWnd::OnTimer(nIDEvent);
}


void CMdiMainClient::DisplayNextLogoFrame()
{
CRect rect;
GetClientRect(&rect) ;

BITMAP bm2 ;
CDC dcMem2;

CDC *pDC = GetDC();

if (!StopRotation)
{
// Select next logo frame to be displayed
switch (BmpLoaded)
{
case 1: if(m_bmpBackGround2.GetSafeHandle())
m_bmpBackGround2.DeleteObject();
VERIFY (m_bmpBackGround2.LoadBitmap(IDB_BITMAP1));
ASSERT (m_bmpBackGround2.GetSafeHandle());
break;
case 2: if(m_bmpBackGround2.GetSafeHandle())
m_bmpBackGround2.DeleteObject();
VERIFY (m_bmpBackGround2.LoadBitmap(IDB_BITMAP2));
ASSERT (m_bmpBackGround2.GetSafeHandle());
break;
case 3: if(m_bmpBackGround2.GetSafeHandle())
m_bmpBackGround2.DeleteObject();
VERIFY (m_bmpBackGround2.LoadBitmap(IDB_BITMAP3));
ASSERT (m_bmpBackGround2.GetSafeHandle());
break;
case 4: if(m_bmpBackGround2.GetSafeHandle())
m_bmpBackGround2.DeleteObject();
VERIFY (m_bmpBackGround2.LoadBitmap(IDB_BITMAP4));
ASSERT (m_bmpBackGround2.GetSafeHandle());
break;
case 5: if(m_bmpBackGround2.GetSafeHandle())
m_bmpBackGround2.DeleteObject();
VERIFY (m_bmpBackGround2.LoadBitmap(IDB_BITMAP5));
ASSERT (m_bmpBackGround2.GetSafeHandle());
break;
case 6: if(m_bmpBackGround2.GetSafeHandle())
m_bmpBackGround2.DeleteObject();
VERIFY (m_bmpBackGround2.LoadBitmap(IDB_BITMAP6));
ASSERT (m_bmpBackGround2.GetSafeHandle());
break;
case 7: if(m_bmpBackGround2.GetSafeHandle())
m_bmpBackGround2.DeleteObject();
VERIFY (m_bmpBackGround2.LoadBitmap(IDB_BITMAP7));
ASSERT (m_bmpBackGround2.GetSafeHandle());
break;
case 8: if(m_bmpBackGround2.GetSafeHandle())
m_bmpBackGround2.DeleteObject();
VERIFY (m_bmpBackGround2.LoadBitmap(IDB_BITMAP8));
ASSERT (m_bmpBackGround2.GetSafeHandle());
break;
case 9: if(m_bmpBackGround2.GetSafeHandle())
m_bmpBackGround2.DeleteObject();
VERIFY (m_bmpBackGround2.LoadBitmap(IDB_BITMAP9));
ASSERT (m_bmpBackGround2.GetSafeHandle());
break;
}
// Change Bitmap index
if (BmpLoaded == 9)
BmpLoaded = 0;
else
BmpLoaded++;
}

VERIFY(m_bmpBackGround2.GetObject(sizeof(bm2), (LPVOID)&bm2));
dcMem2.CreateCompatibleDC(NULL);
dcMem2.SelectObject(&m_bmpBackGround2);
pDC->StretchBlt(200,100,400, 200, &dcMem2, 0,0, bm2.bmWidth, bm2.bmHeight,
SRCCOPY);

ReleaseDC(pDC);
}

void CMdiMainClient::OnRButtonDown(UINT nFlags, CPoint point)
{
if (StopRotation)
StopRotation = FALSE;
else
StopRotation = TRUE;

CWnd::OnRButtonDown(nFlags, point);
}

void CMdiMainClient::OnLButtonDown(UINT nFlags, CPoint point)
{
m_Hide_Logo = TRUE;
KillTimer(0);

// Display Application
((CBannerApp*)AfxGetApp())->pDocTemplate->OpenDocumentFile(NULL);

CWnd::OnLButtonDown(nFlags, point);
}

// MdiMainClient.h : header file
//

/////////////////////////////////////////////////////////////////////////////
// CMdiMainClient window

extern BOOL m_Hide_Logo;

class CMdiMainClient : public CWnd
{
// Construction
public:
CMdiMainClient();

// Attributes
protected:
CBitmap m_bmpBackGround2;
CBitmap m_bmpBackGround;

int BmpLoaded;
public:
BOOL StopRotation;
CSize m_sizeClient;

// Overrides
// ClassWizard generated virtual function overrides
//{{AFX_VIRTUAL(CMdiMainClient)
//}}AFX_VIRTUAL

// Implementation
public:
void Display_Blank_Bitmap();
void DisplayNextLogoFrame();
virtual ~CMdiMainClient();
// Generated message map functions
protected:
//{{AFX_MSG(CMdiMainClient)
// NOTE - the ClassWizard will add and remove member functions here.
afx_msg BOOL OnEraseBkgnd(CDC* pDC);
afx_msg void OnSize(UINT nType, int cx, int cy);
afx_msg void OnTimer(UINT nIDEvent);
afx_msg void OnRButtonDown(UINT nFlags, CPoint point);
afx_msg void OnLButtonDown(UINT nFlags, CPoint point);
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
};

 
 

上一篇:C++箴言:在资源管理类中准备访问裸资源  下一篇:C++箴言:谨慎考虑资源管理类的拷贝行为