我在基于CScrollView的CMyView1的OnDraw()中画线,运行能显示,但是滚动滑动条就出现显示不完整的花屏,会有很长的尾巴如何解决????  

解决方案 »

  1.   

    void CDHX04View::OnDraw(CDC* pDC)
    {
    CDHX04Doc* pDoc = GetDocument();
    ASSERT_VALID(pDoc);
    // TODO: add draw code for native data here
    pDC->LineTo(1000+m_nPos,800);
    }
    void CDHX04View::OnInitialUpdate()
    {
    CScrollView::OnInitialUpdate(); CSize sizeTotal;
    // TODO: calculate the total size of this view
    sizeTotal.cx = 900;
    sizeTotal.cy = 900;
    SetScrollSizes(MM_TEXT, sizeTotal);
    }
    void CDHX04View::OnPrepareDC(CDC* pDC, CPrintInfo* pInfo) 
    {
    // TODO: Add your specialized code here and/or call the base class
    CScrollView::OnPrepareDC(pDC, pInfo);
    pDC->SetViewportOrg(0,300);
    }
    void CDHX04View::OnHScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar) 
    {
    // TODO: Add your message handler code here and/or call default
    m_nPos = nPos;
    CScrollView::OnHScroll(nSBCode, nPos, pScrollBar);
    }
      

  2.   

    你加个MoveTo,否则算从哪里画起呢?
      

  3.   

    为什么我点击滚动条输出文字就看得到,不点击滚动条文字显示不出来?各位高手请帮忙!
    void CDHX04View::OnDraw(CDC* pDC)
    {
    CDHX04Doc* pDoc = GetDocument();
    ASSERT_VALID(pDoc);
    // TODO: add draw code for native data here
    // pDC->LineTo(900,0);
    OnPrepareDC(pDC);
    pDC->TextOut(800-m_nPos,0-m_nPo,"nihao");
    pDC->TextOut(0-m_nPos,800-m_nPo,"nihao");
    }void CDHX04View::OnInitialUpdate()
    {
    CScrollView::OnInitialUpdate(); CSize sizeTotal;
    // TODO: calculate the total size of this view
    sizeTotal.cx = 900;
    sizeTotal.cy = 900;
    SetScrollSizes(MM_TEXT, sizeTotal);
    }/////////////////////////////////////////////////////////////////////////////
    // CDHX04View printingBOOL CDHX04View::OnPreparePrinting(CPrintInfo* pInfo)
    {
    // default preparation
    return DoPreparePrinting(pInfo);
    }void CDHX04View::OnBeginPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)
    {
    // TODO: add extra initialization before printing
    }void CDHX04View::OnEndPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)
    {
    // TODO: add cleanup after printing
    }/////////////////////////////////////////////////////////////////////////////
    // CDHX04View diagnostics#ifdef _DEBUG
    void CDHX04View::AssertValid() const
    {
    CScrollView::AssertValid();
    }void CDHX04View::Dump(CDumpContext& dc) const
    {
    CScrollView::Dump(dc);
    }CDHX04Doc* CDHX04View::GetDocument() // non-debug version is inline
    {
    ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CDHX04Doc)));
    return (CDHX04Doc*)m_pDocument;
    }
    #endif //_DEBUG/////////////////////////////////////////////////////////////////////////////
    // CDHX04View message handlersvoid CDHX04View::OnLog() 
    {
    // TODO: Add your command handler code here
    CLogDialog dlg;
    dlg.DoModal();
    }void CDHX04View::OnPrepareDC(CDC* pDC, CPrintInfo* pInfo) 
    {
    // TODO: Add your specialized code here and/or call the base class
    CScrollView::OnPrepareDC(pDC, pInfo);
    pDC->SetViewportOrg(0-m_nPos,300-m_nPo);
    }void CDHX04View::OnVScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar) 
    {
    // TODO: Add your message handler code here and/or call default
    CScrollView::OnVScroll(nSBCode, nPos, pScrollBar);
    m_nPo = nPos;
    Invalidate();
    }void CDHX04View::OnHScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar) 
    {
    // TODO: Add your message handler code here and/or call default
    CScrollView::OnHScroll(nSBCode, nPos, pScrollBar);
    m_nPos = nPos;
    Invalidate();
    }
      

  4.   

    不加moveto应该是从默认的原点画起吧!
      

  5.   

    默认原点是哪里呢?反正我不知道。
    就像这个,m_nPos有没有初始化呢?
    pDC->TextOut(800-m_nPos,0-m_nPo,"nihao");