一个关于滚动条的问题,请赐招

zhongxd 2003-04-15 02:22:20
在下写了个滚动条初始化函数如下
if(m_hScreen<=0)return
CGeDrwDoc *pDoc=GetDocument();
int nH=(int)(pDoc->m_DocSz.cy*m_dWldToScrn-m_hScreen);
m_nVSMax=max(0,nH/m_nSclMin);
if(m_hScreen)m_nVS1Pg=m_hScreen/m_nSclMin;

SCROLLINFO ScrlInfo;
ScrlInfo.fMask = SIF_ALL;
ScrlInfo.nPos=m_nVSPos;
ScrlInfo.nMin=0;
ScrlInfo.nMax=m_nVSMax;
ScrlInfo.nPage=m_nVS1Pg;
::SetScrollInfo(m_hWnd,SB_VERT,&ScrlInfo,true);

然后在滚动处理函数OnVScroll中有相应的处理函数,但是从滚动现象上看,还没有滚到最大的范围时候,滚动滑条显示已经到头了,(即m_nVSPos<m_nVSMax时候,滚动滑条已经滚到底部了)大家看看这是什么地方没有弄好!
...全文
26 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhongxd 2003-04-16
  • 打赏
  • 举报
回复
m_nVSMax是滑块的最大位置,是已经减去一页的值
所以修改为
ScrlInfo.nMax=m_nVSMax+m_nVSlPg;就解决问题了
谢谢各位,揭帖
zyylikeeating 2003-04-15
  • 打赏
  • 举报
回复
滚动条的范围应是0到m_nVSMax-m_nVSlPg
所以m_nVSPos的最大值是m_nVSMax-m_nVSlPg
菜牛 2003-04-15
  • 打赏
  • 举报
回复
计算滚动范围的时候要多加一页。
你的代码没有说明,我是猜的。
lifeequation 2003-04-15
  • 打赏
  • 举报
回复
up
zhongxd 2003-04-15
  • 打赏
  • 举报
回复
怎么还没有人回答呀,哪位大侠救救我呀!
zhongxd 2003-04-15
  • 打赏
  • 举报
回复
不是的我的m_nSclMin设置为1的
casinosun 2003-04-15
  • 打赏
  • 举报
回复
/ 的关系,取整了

15,978

社区成员

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

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