其实很简单,在原来添加地图的基础上,添加一个定时器,每间隔一定时间加载一个行动的图片
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();
}
问题来了,原来加载的图片是否在内存中消失????????????????????????????