使用ScrollView,拖动滚动条,图形重叠的问题?
djhdu 2004-11-22 04:02:36 我使用ScrollView,然后使用双缓存的方式画图,当我拖动滚动条的时候,图形重叠到
一块了,这个问题如何解决呢?
下面是我的代码,请帮帮我!
CTestView::CTestView()
{
// TODO: add construction code here
m_pMemoryDC=new CDC;
m_pBitmap=new CBitmap;
}
/////////////////////////////////////////////////////////////////////////////
// CTestView drawing
void CTestView::OnDraw(CDC* pDC)
{
CSize sizeTotal;
sizeTotal.cx=1000;
sizeTotal.cy=5000;
SetScrollSizes(MM_TEXT, sizeTotal);
CRect rect;
CPoint ScrollPoint=GetScrollPosition();
TRACE("滚动位置:x=%d,y=%d\n",ScrollPoint.x,ScrollPoint.y);
GetClientRect(&rect);
m_pMemoryDC->CreateCompatibleDC(pDC);
m_pBitmap->CreateCompatibleBitmap(pDC,rect.right+1,rect.bottom+1);
CBitmap * pOldbmp=m_pMemoryDC->SelectObject(m_pBitmap);
m_pMemoryDC->SelectStockObject(WHITE_BRUSH);
m_pMemoryDC->Rectangle(0,0,rect.right,rect.bottom);
m_pMemoryDC->SelectStockObject(NULL_BRUSH);
m_pMemoryDC->MoveTo(0,0);
m_pMemoryDC->LineTo(1000,5000);
pDC->BitBlt(ScrollPoint.x,ScrollPoint.y,
ScrollPoint.x+rect.right,
ScrollPoint.y+rect.bottom,
m_pMemoryDC,0,0,SRCCOPY);
m_pMemoryDC->SelectObject(pOldbmp);
m_pBitmap->DeleteObject();
m_pMemoryDC->DeleteDC();
}
BOOL CTestView::OnEraseBkgnd(CDC* pDC)
{
// TODO: Add your message handler code here and/or call default
return CScrollView::OnEraseBkgnd(pDC);
}
void CTestView::OnVScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar)
{
// TODO: Add your message handler code here and/or call default
CScrollView::OnVScroll(nSBCode, nPos, pScrollBar);
}
void CTestView::OnHScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar)
{
// TODO: Add your message handler code here and/or call default
CScrollView::OnHScroll(nSBCode, nPos, pScrollBar);
}