#define _SPACEWIDTH 20
#define _REDHIGH 20
#define _RECTX42 800void CMyView::OnDraw(CDC* pDC)
{
CEdgetoolDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
...
int offset=pDC->GetViewportOrg().y;
CRect rect;
this->GetClientRect (&rect);
int nClienthigh=rect.bottom;

//画横线
int nCount=bottom/_REDHIGH+1;
for(i=0;i<nCount;i++)
{
pDC->MoveTo (_SPACEWIDTH,((int)(-top/_REDHIGH+i))*_REDHIGH);
pDC->LineTo (_RECTX42,((int)(-top/_REDHIGH+i))*_REDHIGH);
}
...
}
编译运行成功当使用滚动条,用鼠标拉住滚动块快速向下移动时,出现客户区中间间杂有横线绘不上的情形,不知为何,
请高手解疑,谢谢

解决方案 »

  1.   

    没看出来你这个top哪里来的,不过很可能出现-top/_REDHIGH+i为0的情况。
      

  2.   

    错了
    top=offset;
    bottom=nClienthigh;
      

  3.   

    文档的内容长,不宽,应用滚动条,为了重绘的效率,只绘窗口部分
    在CMyView::public CSrollViewde 的成员函数void OnDraw(CDC *pDC)中有如下代码#define _SPACEWIDTH 20
    #define _REDHIGH 20
    #define _RECTX42 800void CMyView::OnDraw(CDC* pDC)
    {
    CEdgetoolDoc* pDoc = GetDocument();
    ASSERT_VALID(pDoc);
    ...
    int offset=pDC->GetViewportOrg().y;
    CRect rect;
    this->GetClientRect (&rect);
    int nClienthigh=rect.bottom;

    //画横线
    int nCount=nClienthigh/_REDHIGH+1;
    for(i=0;i<nCount;i++)
    {
    pDC->MoveTo (_SPACEWIDTH,((int)(-offset/_REDHIGH+i))*_REDHIGH);
    pDC->LineTo (_RECTX42,((int)(-offset/_REDHIGH+i))*_REDHIGH);
    }
    ...
    }
    编译运行成功当使用滚动条,用鼠标拉住滚动块快速向下移动时,出现客户区中间间杂有横线绘不上的情形,不知为何,
    请高手解疑,谢谢