ScrollWindowEx 函数 (winuser.h)

ScrollWindowEx 函数滚动指定窗口工作区的内容。

语法

int ScrollWindowEx(
  [in]  HWND       hWnd,
  [in]  int        dx,
  [in]  int        dy,
  [in]  const RECT *prcScroll,
  [in]  const RECT *prcClip,
  [in]  HRGN       hrgnUpdate,
  [out] LPRECT     prcUpdate,
  [in]  UINT       flags
);

参数

[in] hWnd

类型: HWND

要滚动工作区的窗口的句柄。

[in] dx

类型: int

指定水平滚动的量(以设备单位表示)。 此参数必须是负值才能向左滚动。

[in] dy

类型: int

指定垂直滚动的量(以设备单位表示)。 此参数必须是负值才能向上滚动。

[in] prcScroll

类型: const RECT*

指向 RECT 结构的指针,该结构指定要滚动的工作区部分。 如果此参数为 NULL,则会滚动整个工作区。

[in] prcClip

类型: const RECT*

指向包含剪裁矩形坐标的 RECT 结构的指针。 仅剪裁矩形中的设备位受到影响。 绘制从矩形外部滚动到内部的位;不会绘制从矩形内部滚动到外部的位。 此参数可以为 NULL

[in] hrgnUpdate

类型: HRGN

修改为保留通过滚动使区域失效的区域的句柄。 此参数可以为 NULL

[out] prcUpdate

类型: LPRECT

指向 RECT 结构的指针,该结构接收因滚动而失效的矩形的边界。 此参数可以为 NULL

[in] flags

类型: UINT

指定控制滚动的标志。 此参数可以是以下值的组合。

含义
SW_ERASE
使用 SW_INVALIDATE 标志指定时,通过将 WM_ERASEBKGND 消息发送到窗口来擦除新失效的区域。
SW_INVALIDATE
滚动后, 由 hrgnUpdate 参数标识的区域失效。
SW_SCROLLCHILDREN
滚动与 prcScroll 参数指向的矩形相交的所有子窗口。 子窗口按 dxdy 参数指定的像素数滚动。 系统向与 prcScroll 矩形相交的所有子窗口发送WM_MOVE消息,即使它们不移动也是如此。
SW_SMOOTHSCROLL
使用平滑滚动进行滚动。 使用 flags 参数的 HIWORD 部分来指示平滑滚动操作需要多少时间(以毫秒为单位)。

返回值

类型: int

如果函数成功,则返回值为 SIMPLEREGION (矩形无效区域) ,COMPLEXREGION (非矩形无效区域;重叠矩形) ,或 NULLREGION (没有无效的区域) 。

如果函数失败,则返回值为 ERROR。 要获得更多的错误信息,请调用 GetLastError。

注解

如果未指定SW_INVALIDATE和SW_ERASE标志, ScrollWindowEx 不会使滚动区域失效。 如果设置了其中任一标志, ScrollWindowEx 将使此区域失效。 在应用程序调用 UpdateWindow 函数、调用 RedrawWindow 函数 (指定RDW_UPDATENOW或RDW_ERASENOW标志) 或从应用程序队列检索 WM_PAINT 消息之前,区域才会更新。

如果窗口具有 WS_CLIPCHILDREN 样式,则 hrgnUpdateprcUpdate 指定的返回区域表示必须更新的滚动窗口的总区域,包括子窗口中需要更新的任何区域。

如果指定了SW_SCROLLCHILDREN标志,则当滚动子窗口的一部分时,系统不会正确更新屏幕。 位于源矩形外部的滚动子窗口部分不会被擦除,并且未在其新目标中正确重绘。 若要移动不完全位于 prcScroll 指定的矩形内的子窗口,请使用 DeferWindowPos 函数。 如果设置了SW_SCROLLCHILDREN标志并且插入点矩形与滚动矩形相交,则光标将重新定位。

无论窗口是CS_OWNDC还是CS_CLASSDC类样式 (prcScrollprcClipprcUpdatehrgnUpdate) 的所有输入和输出坐标都确定为客户端坐标。 如有必要,使用 LPtoDPDPtoLP 函数与逻辑坐标进行转换和转换。

示例

有关示例,请参阅 使用WM_PAINT消息滚动文本

要求

   
最低受支持的客户端 Windows Vista [仅限桌面应用]
最低受支持的服务器 Windows Server 2003 [仅限桌面应用]
目标平台 Windows
标头 winuser.h (包括 Windows.h)
Library User32.lib
DLL User32.dll
API 集 在 Windows 8.1) 中引入的 ext-ms-win-ntuser-misc-l1-2-0 (

另请参阅

DPtoLP

DeferWindowPos

LPtoDP

其他资源

矩形

RedrawWindow

UpdateWindow