为什么我的双缓存还会闪烁?

duqiang2050 2002-12-29 12:42:54
我在一个背景上,用键盘移动一个图片:
View的成员变量:
CDC* pMemDC;
CDC *bmp0,*bmp1,*bmp2;
int x,y;
实现:
void CNanrenView::OnDraw(CDC* pDC)
{
CNanrenDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
pDC->BitBlt(0,0,634,436,pMemDC,0,0,SRCCOPY);
}

LRESULT CNanrenView::DefWindowProc(UINT message, WPARAM wParam, LPARAM lParam)
{
if (message==WM_KEYDOWN)
{
switch( wParam )
{
case 0x26:
y--;
break;
case 0x28 :
y++;
break;
case 0x25:
x--;
break;
case 0x27:
x++;
break;
}
pMemDC->BitBlt(90+x*10,90+y*10,52,52,bmp0,90+x*10,90+y*10,SRCCOPY);
pMemDC->BitBlt(100+x*10,100+y*10,32,32,bmp1,0,0,SRCCOPY);
InvalidateRect(CRect(90+x*10,90+y*10,90+x*10+52,90+y*10+52));
}
return CView::DefWindowProc(message, wParam, lParam);
}

图片再CRect(90+x*10,90+y*10,90+x*10+52,90+y*10+52)范围内还是闪烁,怎么回事?
...全文
29 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
hnyyy 2002-12-29
  • 打赏
  • 举报
回复
由于没有了背景,应先画上白色。

CRect rect;
GetClientRect(rect);
pMemDC->FillSolidRect(rect, RGB(255, 255, 255));
hnyyy 2002-12-29
  • 打赏
  • 举报
回复
BOOL CNanrenView::OnEraseBkgnd(CDC* pDC)
{
return FALSE;//不能少
}

15,979

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧