### 函数功能

该函数滚动指定窗体客户区域的目录。

### 函数原型

int ScrollWindowEx（HWND hWnd，int dx，int dyCONST RECT ·prcScroll，CONST RECT★prcCllp，HRGH hrgnUpdate，LPRECT prcUpdate，UINT flags）；

### 参数

hWnd：客户区域将被滚动的窗体句柄。
dx：在设备单元中，指定水平滚动数量。在向左滚动时此参数必须为负。
dy：在设备单元中，指定垂直滚动数量。在向上滚动时此参数必须为负。
prcScroll：指向RECT结构，它指定了将被滚动的客户区域部分。
prcClip：指向包含了类似于被剪下矩形的RECT结构。只有在剪下内部的小块图形才受影响。从矩形外向内部的滚动部分将被着色；而从内向外的滚动部分将不再被着色。
hrgnUpdate：处理已被修改的区域，保存这些由于滚动而无效的区域。此参数可以为空。
prcUpdate：指向RECT结构，它接收由于滚动使得矩形无效部分的边界。此参数值可以为空。
flags：指定控制滚动的标志。这个参数可以是下面的值：
SW_ERASE：通过发送WM_ERASEBKGND消息给窗体。
SW_INVALIDATE：在滚动后，使得由参数hrgnUpdate标识的无效区域被擦除。
SW_SCROLLCHILDREN：动所有由参数prcScroll指出交叉重叠矩形的子窗体。子窗体按照dx和dy规定的像素个数滚动。系统发送消息给所有由prcScroll指出交叉重叠矩形的子窗体，即使他们不移动。
SW_SMOOTHSCROLL：Windows NT 5.0或以上版本中：使用平滑滚动。利用flags参数中HIWORD部分简要说明所需平滑滚动操作的时间。

### 返回值

如果函数运行成功，返回值为SIMPLEREGION（矩形的无效区域），COMPLEXREGION（非矩形的无效区域）或NULLREGION（没有使无效的区域）如果函数运行成功，返回值为ERROR。若想获得更多的错误信息，请调用GetLastError函数。
注意：如果SW_INVALIDATE和SW_ERASE标志没有被设定，那么函数ScrollWindowEx不能使滚动离开的区域失效。如果其中任意一个标志被设置，ScrollWindowEx函数就可以使区域无效。这块区域将不再被更新直到应用程序调用theUpdateWindow函数，调用theRedrawWindow函数（指定RDW_UPDATENOW或RDW_ERASENOW标志）或是从申请队列中找到WM_PAINT消息。
如果窗体拥有WS_CLIPCHILDREN类型，那么由hrgnUpdate和prcUpdate指定的返回区域描述了必须更新的滚动窗体的全部区域，包括所需更新子窗体的任何区域。
若SW_SCROLLCHILDREN标志被设置，在子窗体被滚动时，系统将不能完全更新屏幕。位于矩形外边的滚动子窗体部分不被擦除，也不在它的新方向上被重画。为了移动子窗体使之完全不在prcScroll指定的矩形条中，可使用DeferWindowPos函数。若标志SW_SCROLLCHILDREN被设置并且^符号交叉滚动矩形，则光标也重新设置。
所有输入输出均被定义为客户端如果有必要，使用IptoDP和dptoLP函数转换逻辑相关性。
Windows CE：参数flags不支持SW_SCROLLCHILDREN。参数dx和dy中只有一个为零。

### 速查

Windows NT 3.1、Windows 95、Windows CE 1.0以上，头文件：winuser.h；库文件：user32.lib。