SCROLLINFO si = {0}; 
si.cbSize = sizeof(SCROLLINFO); 
si.fMask = SIF_RANGE | SIF_PAGE | SIF_POS;if (sipf_on)
{
        // 设置滚动条
si.nMin = 0; 
si.nMax = 90;
si.nPage = 10;
si.nPos = m_nVScrollPos;
SetScrollInfo(SB_VERT, &si);
}
else
{
        // 取消滚动条
        si.nMin = 0; 
si.nMax = 0;
si.nPage = 0;
si.nPos = 0;
SetScrollInfo(SB_VERT, &si);
}程序运行在windows mobile系统上,需要根据情况“显示/取消”滚动条。
现在有一个问题,当用户把滚动条滚到下面时,这时由于某种情况而调用了上面的“取消滚动条”的代码。
这时窗口就没有恢复到最初始时的显示,而是上半部分是一些控件,下半部分是空白(由于之前有滚动)。
而我想恢复到最初没有滚动之前的显示。请教大家这个问题怎么才能解决。谢谢大家-_-

解决方案 »

  1.   

    我不太会用mfc控件,我尝试添加如下代码:
    PostMessage(WM_VSCROLL, SB_TOP);还是没有将显示窗口滚动到顶部。
      

  2.   

    自己搞定了。在else前面加上:
    ::GetScrollInfo (m_hWnd, SB_VERT, &si);
    ::ScrollWindowEx(m_hWnd, 0, si.nPos, NULL, NULL, NULL, NULL, SW_ERASE| SW_INVALIDATE | SW_SCROLLCHILDREN);大家接分,或者说说更好的方法,或者说说这种方法的弊端。
      

  3.   

    可以用ShowScrollBar来隐藏,参数也很简单MSDN链接
      

  4.   

    接分的人都没有啊。-_-
    用MFC的人真的越来越少了吗?
      

  5.   

    嗯。隐藏 是不太好。我发现了一个bug。
    就是mobile终端休眠-唤醒之后,界面会出问题。