答案:首先将你上面的代码用如下代码替换
CDC dc;
CBitmap bmp;
CRect rc;
GetClientRect(&rc);
dc.CreateCompatibleDC(pDC);
bmp.CreateCompatibleBitmap(pDC, rc.Width(), rc.Height());
dc.SelectObject(&bmp);
{
CBrush brush(RGB(128, 128, 128));
FillOutsideRect(&dc, &brush);
//填充滚动区域
CSize sztotal = GetTotalSize(); //获取滚动区域的大小
CRect scrollRC(0, 0, sztotal.cx, sztotal.cy); //从左上角开始填充
CBrush brush2(RGB(239, 243, 255));
dc.FillRect(scrollRC, &brush2);
}
pDC->BitBlt(0, 0, rc.Width(), rc.Height(), &dc, 0, 0, SRCCOPY);
另外,还有重要的一步,响应WM_ERASEBKGND消息,并直接返回TRUE,例如
BOOL CTestView::OnEraseBkgnd(CDC* pDC)
{
return TRUE;// CScrollView::OnEraseBkgnd(pDC);
}
其他:rg sf 先画到内存DC,后输出到屏幕DC 使用双缓冲绘图,在内存DC中绘图,再用BitBlt拷到屏幕DC中
上一个:VC中的用户界面线程,工作者线程都是什么意思
下一个:hip_client