讓人物在地圖上動起來

露水上的青蛙發表於2013-07-31

其實很簡單,在原來新增地圖的基礎上,新增一個定時器,每間隔一定時間載入一個行動的圖片

HBITMAP bit; 
HDC  MemDC; 
int  w,h;
CString dir;
CString cc;

int  p;
char appdir[256];

int m0; //用於初始化人物為0
int m1;//圖片數量的最大值

BOOL getpic(CString cc,int p);
BOOL loadbmp(CString cc);

載入不同圖片

BOOL getpic(CString cc,int p)
{
 cc.Format("%s\\圖片\\人\\c%05d.bmp",dir,p);
 loadbmp(cc);
 return TRUE;
}

新增定時器

void ClearnDlg::OnTimer(UINT nIDEvent)
{
 //新增一個定時器其實用處很簡單 不定的載入不同的圖片在同一個地方
 CClientDC dc(this);
 if(getpic("人",p)==FALSE)
  AfxMessageBox(cc+"沒找到!");
 SelectObject(MemDC,bit);
 BitBlt(dc.m_hDC,200,160,w,h,MemDC,0,0,SRCCOPY);
 p++;
 if(p>m1) p=m0;
 CDialog::OnTimer(nIDEvent);
}

void ClearnDlg::OnBnClickedOk()
{
 CClientDC dc(this);
 p=400;
 m0=400;
 m1=799;

 MemDC = CreateCompatibleDC(0);//暫存裝置場景

 GetCurrentDirectory(256,appdir);
 dir=appdir;

 //載入地圖
    cc=dir+"\\圖片\\地面.bmp";
 if(loadbmp(cc)==FALSE)
   AfxMessageBox(cc+"沒找到!");
 SelectObject(MemDC,bit);
 SetBkMode(MemDC,TRANSPARENT);
 BitBlt(dc.m_hDC,0,0,400,300,MemDC,0,0,SRCCOPY);

 SetTimer(1,150,NULL);
}

void ClearnDlg::OnBnClickedCancel()
{
 // TODO: 在此新增控制元件通知處理程式程式碼
 DeleteDC(MemDC);
 DeleteObject(bit);
 OnCancel();
}

問題來了,原來載入的圖片是否在記憶體中消失????????????????????????????

相關文章