下面是我CScrollView重绘背景的代码。
怎么不行啊,
bool CLayout::OnEraseBkgnd(CDC* pDC, CScrollView *pScrView)
{
pScrView->OnPrepareDC(pDC); 

CSize size;  //画背景
CRect invRect, rect;
CBrush brush_write(RGB(255, 255, 255));
CBrush brush_gray(RGB(144,153,174));
pDC->GetClipBox(invRect); size=docSize;
size.cx*=step;
size.cy*=step;
if (size.cy<invRect.top || size.cx<invRect.left)
pDC->FillRect(&invRect, &brush_gray);
else if (size.cy>=invRect.bottom && size.cx>=invRect.right)
pDC->FillRect(&invRect, &brush_write);
else if (size.cy>=invRect.bottom && size.cx>=invRect.left && size.cx<invRect.right)
{
rect=invRect;
rect.right=size.cx;
pDC->FillRect(&rect, &brush_write);
rect=invRect;
rect.left=size.cx;
pDC->FillRect(&rect, &brush_gray);
}
else if (size.cx>=invRect.right && size.cy>=invRect.top && size.cy<invRect.bottom)
{
rect=invRect;
rect.bottom=size.cy;
pDC->FillRect(&rect, &brush_write);
rect=invRect;
rect.top=size.cy;
pDC->FillRect(&rect, &brush_gray);
}
else if (size.cx>=invRect.left && size.cx<invRect.right && size.cy>=invRect.top && size.cy<invRect.bottom)
{
rect=invRect;
rect.right=size.cx;
rect.bottom=size.cy;
pDC->FillRect(&rect, &brush_write);
rect=invRect;
rect.left=size.cx;
pDC->FillRect(&rect, &brush_gray);
rect=invRect;
rect.top=size.cy;
rect.right=size.cx;
pDC->FillRect(&rect, &brush_gray);
}

CPen pen_A4border(PS_DOT, 1, RGB(230,230,255)); //画A4格线
CPen *pOldPen=pDC->SelectObject(&pen_A4border);
for (int x=0; x<=size.cx; x+=a4Size.cx*step)
{
pDC->MoveTo(x, 0);
pDC->LineTo(x, size.cy);
}
for (int y=0; y<=size.cy; y+=a4Size.cy*step)
{
pDC->MoveTo(0, y);
pDC->LineTo(size.cx, y);
}

CPen pen_border(PS_SOLID, 1, RGB(0, 0, 0));
pDC->SelectObject(&pen_border);
pDC->MoveTo(size.cx, 0);
pDC->LineTo(size.cx, size.cy);
pDC->LineTo(0,size.cy); CBrush brush_shade(RGB(108, 114, 130));//画边界阴影
rect.left=size.cx+1;
rect.top=7;
rect.right=size.cx+5;
rect.bottom=size.cy+5;
pDC->FillRect(&rect, &brush_shade);
rect.left=7;
rect.top=size.cy+1;
rect.right=size.cx+1;
rect.bottom=size.cy+5;
pDC->FillRect(&rect, &brush_shade);
return false;