类型:转载 责任编辑:asp.net 日期:2007/05/23
热门软件下载:
void CGameApp2View::OnSingletimer()
{
// TODO: Add your command handler code here
CDC* mdc=new CDC;
CPaintDC dc(this);
mdc->CreateCompatibleDC(&dc);
char ch[3];
CBitmap **bitmap = new CBitmap*[3];
for(int i=0;i<3;i++)
{
sprintf(ch,"D:\\GameApp2\\res\\motive\\b%d.bmp",i);//读取位图命名字符串
bitmap[i]->m_hObject=(HBITMAP)::LoadImage(NULL,
ch,
IMAGE_BITMAP,
640,
160,
LR_LOADFROMFILE
); //加载位图文件
}
mdc->SelectObject(bitmap[0]);
}
为什么执行起来出现Debug assertion错误,
我要加载的三张位图都存在啊
网友回答:
char ch[3];
-----这里是3个字符啊,请注意不是char* ch[3]!且如果是char* 也要初始化的.
sprintf(ch,"D:\\GameApp2\\res\\motive\\b%d.bmp",i)
-----这里是将要放进去多少个字符啊?
早就越界了.
void CGameApp2View::OnSingletimer()
{
// TODO: Add your command handler code here
CDC* mdc=new CDC;
CPaintDC dc(this);
mdc->CreateCompatibleDC(&dc);
char ch[MAX_PATH];
CBitmap* bitmap[3] = { NULL };
for(int i=0;i<3;i++)
{
sprintf(ch,"D:\\GameApp2\\res\\motive\\b%d.bmp",i);//读取位图命名字符串
bitmap[i] = CBitmap::FromHandle((HBITMAP)::LoadImage(NULL,
ch,
IMAGE_BITMAP,
640,
160,
LR_LOADFROMFILE
)); //加载位图文件
}
CBitmap* pOldBitmap = mdc->SelectObject(&bitmap[0]);
...........
mdc->SelectObject(pOldBitmap);
}