电子白板浏览文档需要把滚动条往下拉,才能看到完整的内容。于是我建立了一个基于CScrollView的CWBView类,利用OnVScroll方法得到滚动条的位置参数,并发送出去,现在问题是接收到这个参数后怎么控制CScrollBar的位置?是这样写吗?
void CWBView::OnScrollPosView()
{
int npos = m_pViewParam->npos;//接收参数值
//以下不知怎么写,乱写了两行,
CScrollBar* pBar = GetScrollBarCtrl(SB_VERT);
pBar->SetScrollPos(npos);
}
请教高手。谢谢!!

解决方案 »

  1.   

    我这样写,滚动条会动了:
    int npos = m_pViewParam->npos;
    SetScrollPos(SB_VERT,npos, TRUE);
    但又出现另一个问题,滚动条会自动回滚,还有视图里面的内容不会动。
      

  2.   

    //See my "ScrollBitmap.rar",
    //CScrollBar m_vBar;
    //ScrollBar m_vBar in dialog
    void CScrollBitmapDlg::OnVScroll(UINT nSBCode,UINT nPos,CScrollBar *pScrollBar) 
    {// TODO: Add your message handler code here and/or call default
    // for focus not jumpping
    GetDlgItem(IDOK)->SetFocus();
    // scrolling
    switch (nSBCode)
    {
    case SB_LINEUP:
    case SB_PAGEUP:
    if(m_Sourcey >=10) m_Sourcey -= 10;
    else  m_Sourcey  = 0;
    break;
    case SB_LINEDOWN:
    case SB_PAGEDOWN:
    if((m_Sourcey+m_rcPicture.Height()+10)<m_bmInfo.bmHeight)
    m_Sourcey += 10;
    else
    m_Sourcey  = m_bmInfo.bmHeight -m_rcPicture.Height();
    break;
    case SB_TOP:
    m_Sourcey = 0;
    break;
    case SB_BOTTOM:
    m_Sourcey = INT_MAX;
    break;
    case SB_THUMBTRACK:
    m_Sourcey = nPos;
    break;
    }
    m_vBar.SetScrollPos(m_Sourcey);
    InvalidateRect(&m_rcPicture,FALSE);
    CDialog::OnVScroll(nSBCode, nPos, pScrollBar);
    }
      

  3.   

    我最近也要做电子白板,还要向你多多请教~ [email protected]