关于在Dialog里使用滚动条的问题。

5880527   2007-4-10 15:30 楼主
用EVC4+WINCE.NET
使用如下代码来滚动滚动条:
void C2MSetting::OnVScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar)
{
        int nDelta;
        int nMaxPos = m_rcOriginalRect.Height() - m_nCurHeight;

        switch (nSBCode)
        {
        case SB_LINEDOWN:
                if (m_nScrollPos >= nMaxPos)
                        return;

                nDelta = min(max(nMaxPos/20,5),nMaxPos-m_nScrollPos);
                break;

        case SB_LINEUP:
                if (m_nScrollPos <= 0)
                        return;
                nDelta = -min(max(nMaxPos/20,5),m_nScrollPos);
                break;
        case SB_PAGEDOWN:
                if (m_nScrollPos >= nMaxPos)
                        return;
                nDelta = min(max(nMaxPos/10,5),nMaxPos-m_nScrollPos);
                break;
        case SB_THUMBTRACK:
        case SB_THUMBPOSITION:
                nDelta = (int)nPos - m_nScrollPos;
                break;

        case SB_PAGEUP:
                if (m_nScrollPos <= 0)
                        return;
                nDelta = -min(max(nMaxPos/10,5),m_nScrollPos);
                break;
       
         default:
                return;
        }
        m_nScrollPos += nDelta;
        SetScrollPos(SB_VERT,m_nScrollPos,TRUE);
        ScrollWindow(0,-nDelta);
        CDialog::OnVScroll(nSBCode, nPos, pScrollBar);
}
运行时滚动条能滚动到指定位置,但是界面不滚动,即不能滚动到指定的界面部分,为什么呀,在VC6.0运行良好。

回复评论 (3)

偶没有看代码,楼主的界面滚动是在哪里控制的,调试一下看看不就知道了!
点赞  2007-4-10 17:26
把ScrollWindow这个函数改为ScrollWindowEx这个函数
是不是可以了?
点赞  2007-4-10 20:31
http://m2.tech.topzj.com/thread-10026-1-1.html
点赞  2007-4-13 19:41
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复