设置滚动条的位置。

时间:2021-09-26 10:31:05
当我们给窗体添加了一个水平或是垂直滚动条时,该滚动条都会占满整个窗口,比如垂直滚动条:
它滚动条向上箭头紧接窗口顶部,向下箭头紧接窗口低部,整个滚动条从窗口顶部扩展到窗口低部。而我希望滚动条的位置不是这样,比如,我想把垂直滚动条从窗口顶部向下100个像素点处开始向下扩展到窗口低部,不知道有没有办法可以实现。

5 个解决方案

#1


这个需要设置ScrollBar的属性:

SCROLLINFO info;
info.cbSize = sizeof(SCROLLINFO);
info.fMask = SIF_ALL;
info.nMin = nMin;//滚动条的最小值,如0
info.nMax = nMax;//滚动条的最大值,如500
info.nPage = nPage;//滚动条是中间那个滑块的大小
info.nPos = nPos;//滚动条当前所处的位置

m_wndScrollBar.SetScrollInfo(&info);

#2


取消窗口本身的滚动条,另外创建一个滚动条控件;或者,内嵌一个带滚动条的子窗口,去掉边框看起来也一样。

#3


SetScrollPos()

#4


引用 2 楼 Mackz 的回复:
取消窗口本身的滚动条,另外创建一个滚动条控件;或者,内嵌一个带滚动条的子窗口,去掉边框看起来也一样。

你第二个建议不适合我。
但是你第一个建议:取消窗口本身的滚动条,另外创建一个滚动条控件。
我没能看明白,取消窗口本身的滚动条后,我又如何设置新创建的滚动条在窗口上的位置呢?
比如垂直滚动条不扩展整个窗口高度,而使垂直滚条起始位置不是窗口的顶部,而是从窗口顶部往下100个像素点处开始呢!

#5


自己创建滚动条控件,想怎么放还不是随你了?MoveWindow即可。

#1


这个需要设置ScrollBar的属性:

SCROLLINFO info;
info.cbSize = sizeof(SCROLLINFO);
info.fMask = SIF_ALL;
info.nMin = nMin;//滚动条的最小值,如0
info.nMax = nMax;//滚动条的最大值,如500
info.nPage = nPage;//滚动条是中间那个滑块的大小
info.nPos = nPos;//滚动条当前所处的位置

m_wndScrollBar.SetScrollInfo(&info);

#2


取消窗口本身的滚动条,另外创建一个滚动条控件;或者,内嵌一个带滚动条的子窗口,去掉边框看起来也一样。

#3


SetScrollPos()

#4


引用 2 楼 Mackz 的回复:
取消窗口本身的滚动条,另外创建一个滚动条控件;或者,内嵌一个带滚动条的子窗口,去掉边框看起来也一样。

你第二个建议不适合我。
但是你第一个建议:取消窗口本身的滚动条,另外创建一个滚动条控件。
我没能看明白,取消窗口本身的滚动条后,我又如何设置新创建的滚动条在窗口上的位置呢?
比如垂直滚动条不扩展整个窗口高度,而使垂直滚条起始位置不是窗口的顶部,而是从窗口顶部往下100个像素点处开始呢!

#5


自己创建滚动条控件,想怎么放还不是随你了?MoveWindow即可。