【发布时间】:2020-06-29 01:34:26
【问题描述】:
我使用滚动条来显示一大段多行数据(一些背景请参考我之前的问题:MFC: how to reduce the time cost of OnInitialUpdate() for scrolling?)。
滚动功能在以下情况下正常工作:(1)单击箭头按钮,(2)单击滚动轴或(3)滚动鼠标滚轮;内容正确地向上或向下移动。但是,当我拖动滚动拇指时,除非距离非常小,否则它的行为并不像预期的那样。
当拖得更多时,例如向前,它可能会向后跳,有时会一直跳到起点。释放鼠标时它永远不会停留,我也从未成功地将拇指拖到最后一条记录。
当我仔细观察时,“GetClipBox(...)”似乎没有返回正确的数据。例如,如果我一直拖到最后,此函数将返回 rect.top 等于零。由于我是靠返回值来计算要绘制的记录集,剩下的就乱套了。
可以在此处访问最小的可重现示例:https://138.197.210.223/test/My.tar.gz。测试时,将拇指一直拖到最后,效果会更好。
【问题讨论】:
-
请显示minimal reproducible example。听起来一切都按预期进行,但是您的计算是错误的。在计算滚动范围时很容易引入一个错误。
-
@IInspectable,请在此处访问 mre 138.197.210.223/test/My.tar.gz。测试时,将大拇指一直拖到最后,效果会更好。另外,我必须使用 VS-2008。感谢您的帮助。
标签: c++ visual-studio visual-c++ mfc