其實很簡單,在原來新增地圖的基礎上,新增一個定時器,每間隔一定時間載入一個行動的圖片
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();
}
問題來了,原來載入的圖片是否在記憶體中消失????????????????????????????