我正在尝试使用WIN32 API检索可滚动窗口的整个矩形。我认为GetClientRect
将返回我需要的内容,但该函数似乎只返回当前视口。是否有一个特定的函数调用将整个可滚动区域作为RECT返回,还是我必须调用GetScrollRange
来自己计算区域?
答案 0 :(得分:4)
它不起作用。就Windows而言,可滚动窗口不是可以设置或检索尺寸的较大区域的小视口,它只是一个在边缘具有滚动条控件的矩形。您可以通过计算窗口提供的视口中可见区域的部分来确定滚动条的外观,并相应地绘制窗口内容。
答案 1 :(得分:2)
听起来好像该特定窗口正在使用虚拟滚动。即使GetScrollRange
也不一定告诉你尺寸,因为滚动条上的delta值1不等于1像素,事实上在很多情况下它是一条记录,一行等等。
要尝试的另一件事是枚举所有子窗口,并找到最小和最大x和y坐标(不要忘记包括每个子窗口的宽度和高度)。当然,如果直接绘制内容而不是窗口层次结构,这将无济于事。