c - 滚动条范围的值是多少?

标签 c windows winapi

我正在处理窗口中滚动条的数学逻辑。具体来说,我不知道变量是什么意思。滚动条逻辑如下:

 (thumb-size / scroll-bar-size) = (page-size / scroll-bar-range)

现在,我想知道滚动条范围是什么。我知道滚动条的范围是多少。但我不知道这如何有助于将其放入公式中。因为我们的范围是 [0...n] 而不是单个值。我们有多个值零、一、二到 n。

例如,如果我有一个如下定义的滚动条范围:

SCROLLINFO si;
si.nMin = 0;        // minimum value of scroll-bar-range
si.nMax = 50;       // maximum value of scroll-bar-range
si.nPage = 25;      // page-size

如何将范围代入上述公式?假设本例中的范围是[0..50]。我不知道这是否正确,但这就是我的直觉告诉我的。

无论如何,在这种情况下,页面大小将为 25。但是我用什么来代替上面公式中的滚动条范围呢?是51吗?这将给出:

25 / 51

谢谢大家。

最佳答案

范围是nMax-nMin+1!所以是 51。

事实上,设置 nMin=0 nMax=50 且 nPage 为 25。将会导致 nPos 在 0 到 26 之间的范围内! http://msdn.microsoft.com/en-us/library/windows/desktop/bb787595(v=vs.85).aspx

原因是,如果 nPos(顶行)位于索引 26 上,则该页上有 25 行从 26 到编号 50。

在您的示例中,商 25/51 告诉系统滚动区域将覆盖滚动条完整 (1.0) 空间的 21/51。因为拇指的大小显示了可滚动区域中相对页面的位置。

HTH

关于c - 滚动条范围的值是多少?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26254622/

相关文章:

c - 使用 select(...) 作为事件驱动循环?

android - 如何编写 IPERF Android 应用程序

qt - qt pro 文件中存在空间问题

windows - 更改 Windows 中打开文件的最大数量

c++ - 将 DirectShow 过滤器图转储到图像或文本文件

windows - 挂起一个线程比让它等待有什么好处吗?

c++ - 确保 fsync 完成其工作

python - 打印非连续的路数

c++ - 在 Windows 中查找扬声器输出的当前音量级别

c++ - WinMain 和 wWinMain 的区别