SDI 程序,基类为CView,要在视图上显示最少50000行数据,现准备自己创建垂直滚动条,自己驱动滚动条,如何实现。或者有更好的方法也行。有源码或例子更好。如何解决这个问题?

解决方案 »

  1.   

    SetScrollInfoOnVScroll
    OnHScroll何必自己来呢,用CScrollView多好的
      

  2.   

    这是我的代码,在CView 的OnCreate()中建立了滚动条,窗口大小改变时滚动条就没了。我在OnSize函数中也调整了,怎么解决这个问题。
    我的代码:
    int CDNAView::OnCreate(LPCREATESTRUCT lpCreateStruct) 
    {
          if (CView::OnCreate(lpCreateStruct) == -1)
        return -1;
        
        // TODO: Add your specialized creation code here
          CRect crect;
        GetClientRect(&crect);   VERIFY(m_scrollBar.Create(
           SBS_VERT | SBS_RIGHTALIGN |  WS_CHILD , CRect(0,0,756,429),this,10));    m_scrollBar.ShowScrollBar();        return 0;
    }
    void CDNAView::OnSize(UINT nType, int cx, int cy) 
    {
        CView::OnSize(nType, cx, cy);
        
        // TODO: Add your message handler code here
        int lt,tp,rt,btm;
         CRect rect;
         GetClientRect(&rect);      lt = rect.left;
           tp = rect.top;
          rt = rect.right;
          btm = rect.bottom;
         m_scrollBar.MoveWindow(rt,tp,5,btm);//这句注释掉,滚动条在窗口刚创建时能显示,加上后滚动条就没有了    
    }
    如何解决这个问题?有例子吗?
      

  3.   

    to:cpio(希望我的回复能带给您一点点帮助) :
    要显示至少50000行数据,CScrollView 视图区右下角y坐标超过32767就画不出来了。
    你说用CScrollView 怎么结决?
      

  4.   

    to : ouyh12345() 
    子类化滚动条。
    在两端加几个按钮之类的东西来控制快进,多翻几页等能给点代码吗?我写了点代码,窗口大小改变时就不能显示了。
      

  5.   

    void CDNAView::OnSize(UINT nType, int cx, int cy) 
    {
        CView::OnSize(nType, cx, cy);
        
        // TODO: Add your message handler code here
        if (m_scrollBar.GetSafeHwnd())
          m_scrollBar.MoveWindow(cx - 5, 0, cx, cy);你的坐标计算错误。