我的程序已经显示语法正确,就是运行时报错。我建了个基本的单文档程序,然后在资源类中添加位图资源,插入了13张位图。
然后在View类中创建一个Public类的计数变量m_num,并赋给他初值0,然后为View类添加OnCreate和OnTimer消息响应函数int CMyView::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
if (CView::OnCreate(lpCreateStruct) == -1)
return -1;
// TODO: Add your specialized creation code here
SetTimer(1,100,NULL); //添加定时器
return 0;
}void CMyView::OnTimer(UINT nIDEvent)
{
// TODO: Add your message handler code here and/or call default
CClientDC dc(this);
BITMAP BM;
CDC MemDC;
CRect rect;
CBitmap bitmap;
bitmap.LoadBitmap(IDB_BITMAP1 + m_num);
m_num++;
if(m_num == 14)
{
m_num = 0; // 从0开始重新计数
}
GetClientRect(&rect);
ScreenToClient(&rect);
MemDC.CreateCompatibleDC(NULL);
MemDC.SelectObject(&bitmap);
bitmap.GetObject(sizeof(BM),&BM);
dc.BitBlt(20, 20, 150, 150, &MemDC, 0, 0, SRCCOPY);
CView::OnTimer(nIDEvent);
}
希望好心人帮忙解决下。
然后在View类中创建一个Public类的计数变量m_num,并赋给他初值0,然后为View类添加OnCreate和OnTimer消息响应函数int CMyView::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
if (CView::OnCreate(lpCreateStruct) == -1)
return -1;
// TODO: Add your specialized creation code here
SetTimer(1,100,NULL); //添加定时器
return 0;
}void CMyView::OnTimer(UINT nIDEvent)
{
// TODO: Add your message handler code here and/or call default
CClientDC dc(this);
BITMAP BM;
CDC MemDC;
CRect rect;
CBitmap bitmap;
bitmap.LoadBitmap(IDB_BITMAP1 + m_num);
m_num++;
if(m_num == 14)
{
m_num = 0; // 从0开始重新计数
}
GetClientRect(&rect);
ScreenToClient(&rect);
MemDC.CreateCompatibleDC(NULL);
MemDC.SelectObject(&bitmap);
bitmap.GetObject(sizeof(BM),&BM);
dc.BitBlt(20, 20, 150, 150, &MemDC, 0, 0, SRCCOPY);
CView::OnTimer(nIDEvent);
}
希望好心人帮忙解决下。
也就是第三次执行dc.BitBlt(20, 20, 150, 150, &MemDC, 0, 0, SRCCOPY); 这句话时出错了。
至于楼上您所说的那两句不多余,是用来获知位图大小的。