趣文网 > 作文大全

上一篇文章中的家庭作业解答

2020-12-08 05:20:01
相关推荐

所谓的小Bug

如果你到MSDN上查一下WM_VSCROLL消息的定义,就会发现其中的滚动条位置的定义是一个16位的整数。也就是说,如果窗口中绘制的条目超过65535,则你将无法通过拖动滚动条的滑块来显示最后的条目。

小测试

你可以修改之前程序中的g_cItems的值为100000,然后跑一下程序,看看效果。

修复方法

修复的方法是直接忽略掉消息处理参数中的pos参数,而是从滚动条中直接获取。

下面是一个帮助函数,用来获取滚动条的位置信息。

然后就是修改OnVscroll函数中的两个case语句,如下:

对于SB_THUMBTRACK消息的处理

SB_THUMBTRACK消息一般用来处理用户拖动滚动条的场景,借助此消息,我们可以为用户提供拖动时的反馈。

如果一个应用程序想利用滚动条来滚动窗口的内容,那一定不要忘了使用SetScrollPos来重新设置滚动条的位置。

如果使用了一个非0值来表示滚动条的位置的最小值,则通过SB_THUMBTRACK和SB_THUMBPOSITION消息所获取到的滚动条位置将会是错误的。SB_THUMBPOSITION消息会将滚动条位置的范围映射为:

0 ~ (max – min)。下面的示例代码给出了一个解决此问题的方法,具体来说,就是在消息参数nPos上加上一个最小值。

如同上面所解释的,这里的滚动条位置是16位整数,所以,如果应用程序仅仅依靠WM_VSCROLL (and WM_HSCROLL)消息,就存在位置最大值不能超过65535的限制。

GetScrollInfo支持32位整数来表示滚动条位置信息,所以,也就有了上面的Workaround。

总结

以下函数支持32位滚动条位置表示,特此Mark以下。

> SetScrollInfo

> SetScrollPos

> SetScrollRange

> GetScrollInfo

> GetScrollPos

> GetScrollRange

阅读剩余内容
网友评论
相关内容
延伸阅读
小编推荐

大家都在看

聪明的姐姐作文 三年级下册语文期末考作文 关于斗鱼的作文 锻炼作文 妈妈夸我真聪明作文 我的梦想作文三年级 牛郎织女作文 阅读真有趣作文 拜访老师作文 文峰古街作文 旅游的作文200字 雅思作文网 快乐的国庆作文600字 写一个名人的作文 眼泪落下的那一刻作文 幸福是什么作文300字 聪明的作文 我爱冬天的作文 新闻类作文600字 诚信议论文600字作文 有关廉洁的作文 感恩清洁工的作文 想念爸爸的作文 意大利语作文 我们班来了新同学作文 最难忘的一件事作文350字 网络是把双刃剑作文 同学变了作文500字 老师作文700字 辩论英语作文