垂直滚动条问题

zhuyf87 2012-12-10 07:31:38
	
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系统上,需要根据情况“显示/取消”滚动条。
现在有一个问题,当用户把滚动条滚到下面时,这时由于某种情况而调用了上面的“取消滚动条”的代码。
这时窗口就没有恢复到最初始时的显示,而是上半部分是一些控件,下半部分是空白(由于之前有滚动)。
而我想恢复到最初没有滚动之前的显示。

请教大家这个问题怎么才能解决。谢谢大家-_-
...全文
96 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhuyf87 2012-12-13
  • 打赏
  • 举报
回复
嗯。隐藏 是不太好。我发现了一个bug。 就是mobile终端休眠-唤醒之后,界面会出问题。
九州剑王 2012-12-11
  • 打赏
  • 举报
回复
隐藏的话,怎么再朝下看...觉得隐藏好像不太行
zhuyf87 2012-12-11
  • 打赏
  • 举报
回复
接分的人都没有啊。-_- 用MFC的人真的越来越少了吗?
傻X 2012-12-10
  • 打赏
  • 举报
回复
可以用ShowScrollBar来隐藏,参数也很简单 MSDN链接
zhuyf87 2012-12-10
  • 打赏
  • 举报
回复
自己搞定了。在else前面加上: ::GetScrollInfo (m_hWnd, SB_VERT, &si); ::ScrollWindowEx(m_hWnd, 0, si.nPos, NULL, NULL, NULL, NULL, SW_ERASE| SW_INVALIDATE | SW_SCROLLCHILDREN); 大家接分,或者说说更好的方法,或者说说这种方法的弊端。
zhuyf87 2012-12-10
  • 打赏
  • 举报
回复
我不太会用mfc控件,我尝试添加如下代码: PostMessage(WM_VSCROLL, SB_TOP); 还是没有将显示窗口滚动到顶部。

15,979

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧