程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> 怎樣實現動畫背景旗幟

怎樣實現動畫背景旗幟

編輯:關於C語言

 

 

    以下代碼是關於用類CmdiMainClient來顯示動畫背景旗幟的一個例子。原理是很簡單的,我們只需要一系列連續的位圖,並且讓它連續顯示。在這個例子中你可以用鼠標的右鍵來開始/停止這個動畫,如果點左鍵的話,就可以顯示一個子窗口,來保持動畫是繼續。為了你的方便,你可以把代碼直接從浏覽器中拷貝下去,並且插到你的代碼中就行了。以下是代碼:

 

 

#include "stdafx.h"

#include "banner.h"

#include "mainfrm.h"

 

#include "resource.h"

 

#ifdef _DEBUG

#undef THIS_FILE

static char BASED_CODE THIS_FILE[] = __FILE__;

#endif

 

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

// CMdiMainClient

 

CMdiMainClient::CMdiMainClient()

    :    m_sizeClient(0, 0)

       

{

    VERIFY (m_bmpBackGround.LoadBitmap(IDB_BCKGRD));

    ASSERT (m_bmpBackGround.GetSafeHandle());

 

    VERIFY (m_bmpBackGround2.LoadBitmap(IDB_BITMAP0));

    ASSERT (m_bmpBackGround2.GetSafeHandle());

 

    BmpLoaded = 1;

    StopRotation = FALSE;

}

 

CMdiMainClient::~CMdiMainClient()

{

    if(m_bmpBackGround.GetSafeHandle())

        m_bmpBackGround.DeleteObject();

 

    if(m_bmpBackGround2.GetSafeHandle())

        m_bmpBackGround2.DeleteObject();

}

 

 

BEGIN_MESSAGE_MAP(CMdiMainClient, CWnd)

    //{{AFX_MSG_MAP(CMdiMainClient)

        // NOTE - the ClassWizard will add and remove mapping macros here.

    ON_WM_TIMER()

    ON_WM_ERASEBKGND()

    ON_WM_RBUTTONDOWN()

    ON_WM_LBUTTONDOWN()

    ON_WM_SIZE()

    //}}AFX_MSG_MAP

END_MESSAGE_MAP()

 

 

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

// CMdiMainClient message handlers

BOOL CMdiMainClient::OnEraseBkgnd(CDC* pDC)

{

    // Erase only the area needed

    CRect rect;

    GetClientRect(&rect) ;

  

    SetTimer(0,300,NULL);

                                      

    // Place the bitmap

    BITMAP bm ;

    CDC dcMem ;

 

 &nb

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved