关于界面滚动条的一些问题?

zjtgkeji 2013-08-20 01:00:36
最近要做一个带有滚动条的界面 在资源中将对话框属性Scrollbar设置为true 并添加OnVScroll()信息响应函数
在初始化中初始滚动条信息
SCROLLINFO si;
si.cbSize = sizeof(SCROLLINFO);
si.fMask = SIF_ALL;
si.nMin = 0;
si.nMax = m_rect.Height()/3; (m_rect.Height()为对话框实际高度)
si.nPage = si.nMax/5;
si.nPos = 0;
SetScrollInfo(SB_VERT, &si, TRUE);


void CXXDlg::OnVScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar)
{
switch (nSBCode)
{
case SB_THUMBTRACK:
nDelta = (int)nPos - m_nScrollPos;
break;
default:
return;
}

m_nScrollPos += nDelta;
SetScrollPos(SB_VERT,m_nScrollPos,TRUE);
ScrollWindow(0,-nDelta);
CDialog::OnVScroll(nSBCode, nPos, pScrollBar);
}


写完后发现一个问题: 对话框还可拖动的高度假设为200,但函数传入的nPos最大只有170.导致了滚动条拖到底了 对话框还没显示完全,不知道这该如何解决?
...全文
132 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
向立天 2013-09-23
  • 打赏
  • 举报
回复
您好 我是本版版主 此帖已多日无人关注 请您及时结帖 如您认为问题没有解决可按无满意结帖处理 另外本版设置了疑难问题汇总帖 并已在版面置顶 相关规定其帖子中有说明 您可以根据规定提交您帖子的链接 如您目前不想结帖只需回帖说明 我们会删除此结帖通知 见此回复三日内无回应 我们将强制结帖 相关规定详见界面界面版关于版主结帖工作的具体办法
fishion 2013-08-20
  • 打赏
  • 举报
回复
写完后发现一个问题: 对话框还可拖动的高度假设为200,但函数传入的nPos最大只有170.导致了滚动条拖到底了 对话框还没显示完全,不知道这该如何解决? 如果没有Horz滚动条的话,那这时nPage应该是30才对
Eleven 2013-08-20
  • 打赏
  • 举报
回复
codeproject上搜索CScrollHelper类,很容易使用,不需要自己在WM_HSCROLL/WM_VSCROLL消息响应函数中那些繁琐的处理。
schlafenhamster 2013-08-20
  • 打赏
  • 举报
回复
si.nMax = m_rect.Height()/3; (m_rect.Height()为对话框实际高度) 为什么 /3 ???
微型蚂蚁 2013-08-20
  • 打赏
  • 举报
回复
max映射为最大高度 si.nMax = m_rect.Height(); (m_rect.Height()为对话框实际高度)

15,979

社区成员

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

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