滚动条第7节:四舍五入问题

2020-01-06 18:06   

当您尝试调整窗口大小,你会发现,会出现在屏幕底部的小行。这通常不是一个大问题,但是当你在一个列表的内容列表的最后一行滚动,例如,按结束键。这个时候,你会发现一个黑色的空白区出现在底部。当这个地区是非常接近上面提到的黑线,用户会觉得很奇怪,但是当用户是一个程序员,他感觉:这不是小加(减)绘制代码1号?

我们可以行的列表的整数倍,由强制设置窗口大小来解决这个问题。同样作为添加滚动条,这仅仅是一个基本的想法,它是全面实现,需要一些努力。
此外,这个想法是控制窗口调整代码,以便它可以把整个调整大小。
为了实现这个想法,我们需要修改的代码位置:WM_WINDOWPOSCHANGING消息处理函数。
此功能可前预先调整实际上移动窗口。此外,它也避免了闪烁窗口的问题。
接下来,我们将得到一个帮助功能,如下(此功能是非常有用的):
在WM_WINDOWPOSCHANGNG消息处理时,它检查以查看是否该窗口尺寸被改变,我们将在消息处理代码添加以下逻辑:
调整窗口的大小,以便它可以获取客户端区域的整数值。
在上一节中我提到两个问题,我很抱歉,我的失实陈述的第一个问题,我不应该问为什么需要dLines整数转换,而是要问:为什么g_iWheelCarryover应该是一个整数的转换?
回答上述问题是:这个整数转换主要是为了确保整个计算过程与符号整数进行。无整数转换,则计算将变得无符号整数计算(当符号和无符号表达的混合物中,系统将计算的无符号)。 dLines是有符号整数,让我们假定它是-1。 dLines乘以WHEEL_DELTA会得到-120。
在这一点上,如果-120转换为无符号整数,你会得到一个非常大的值(超过4十亿)。然后uScroll(通常为3)分,你会得到一个超过十亿的数字,这显然是不正确的。
对于第二个问题:如果你没有一个滚轮鼠标具有精度高,你会怎么考半滚动代码是否行得通?
答案很简单:你只需要在OnMouseWheel函数的开头添加以下代码。
/ ******************* ******
zDelta / = 4
************************************************** ***** /
程序员的朋友,请特别注意:奇怪的结果混合符号和无符号整数运算,可能出现的时候。搜狐返回查看更多
编辑:
西甲| CBA| 国足| 亚冠| 综合| 网球| 跑步| 排球| 彩票| 图片|