代码之家  ›  专栏  ›  技术社区  ›  Emerick Rogul

检索可滚动窗口的整个矩形

  •  1
  • Emerick Rogul  · 技术社区  · 14 年前

    我正在尝试使用WIN32 API检索可滚动窗口的整个矩形。我以为 GetClientRect 将返回所需的内容,但该函数似乎只返回当前视口。是否有一个特定的函数调用以RECT形式返回整个可滚动区域,或者我必须调用它 GetScrollRange 我自己来计算这个区域?

    2 回复  |  直到 14 年前
        1
  •  4
  •   Brian Nixon    14 年前

    不是这样的。就Windows而言,可滚动窗口并不是一个小视口,而是一个可以设置或检索其尺寸的较大区域,它只是一个矩形,边缘有一个滚动条控件。您可以通过计算在窗口提供的视口中可见的概念区域部分来确定滚动条的外观,并相应地绘制窗口内容。

        2
  •  2
  •   Ben Voigt    14 年前

    听起来好像那个特定的窗口正在使用虚拟滚动。甚至 GetScrollRange 不一定告诉你尺寸,因为没有要求滚动条上的1的增量等于1像素,事实上在很多情况下它是一个记录,一行,等等。

    另一个尝试是枚举所有子窗口,并找到最小和最大的x和y坐标(不要忘记包括每个子窗口的宽度和高度)。当然,如果内容是直接绘制的,而不是一个层次结构的窗口,这将没有帮助。