马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
函数功能:
ScrollWindowEx 函数滚动指定窗口的客户区内容。
API 函数原型:
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
);
参数解析:
参数 | 含义 | hWnd | 指向客户区将被滚动的窗口句柄 | dx | 1. 在设备单元中,指定水平滚动的数量
2. 在向左滚动时此参数必须为负值 | dy | 1. 在设备单元中,指定垂直滚动的数量
2. 在向上滚动时此参数必须为负值 | prcScroll | 1. 指向 RECT 结构指针,该结构指定了将要滚动的客户区范围
2. 如果此参数为 NULL,则整个客户区域将被滚动 | prcClip | 1. 指向 RECT 结构指针,该结构指定了要滚动的裁剪区域
2. 只有这个矩形中的内容才会被滚动(在矩形之外的内容不会被影响,即使它们是在 lpRect 指定的矩形之内)
3. 此参数可以为 NULL | hrgnUpdate | 1. 指向由于滚动而无效的区域的句柄
2. 此参数可以为 NULL | prcUpdate | 1. 指向 RECT 结构,该结构指定由于滚动而无效的矩形的边界
2. 此参数可以为 NULL | flags | 指定控制滚动的标志 |
flags 参数由下列标志组合:
标志 | 含义 | SW_ERASE | 通过发送 WM_ERASEBKGND 消息给窗口,令其擦除新的无效区域(需同时指定 SW_INVALIDATE 消息) | SW_INVALIDATE | 滚动后,使得 hrgnUpdate 参数指定的区域无效 | SW_SCROLLCHILDREN | 1. 滚动所有由参数 prcScroll 指定的相交重叠的子窗口
2. 子窗口通过由 dx 和 dy 参数指定的像素的数量滚动
3. 系统会发送 WM_MOVE 消息给所有由参数 prcScroll 指定的相交重叠的子窗口,即便它们可能不移动 | SW_SMOOTHSCROLL | Windows 98/Me, Windows 2000/XP:使用平滑滚动,使用 HIWORD(flags) 指出平滑滚动需要多少时间(以毫秒为单位) |
返回值:
1. 如果函数调用成功,返回值是 SIMPLEREGION(矩形的无效区域),COMPLEXREGION(非矩形的无效区域;重叠的矩形)或 NULLREGION(没有无效区域);
2. 如果函数调用失败,返回值是 ERROR。
备注:
1. 如果 flags 参数的 SW_INVALIDATE 和 SW_ERASE 标志没有被设定,那么 ScrollWindowEx 函数不能使滚动过的区域失效。如果 flags 参数中任何一个标志被设置,ScrollWindowEx 函数就可以使该区域失效。这个区域就不会被更新直到应用程序调用 UpdateWindow 函数,或调用 RedrawWindow 函数(指定 RDW_UPDATENOW 或 RDW_ERASENOW 标志),或响应 WM_PAINT 消息。
2. 如果窗口拥有 WS_CLIPCHILDREN 类型,那么由 hrgnUpdate 和 prcUpdate 参数指定的返回区域描述了必须更新的滚动窗口的全部区域,包括所需更新子窗口的任何区域。
3. 如果 flags 参数的 SW_SCROLLCHILDREN 标志被设置,那么在子窗口的一部分被滚动时,系统将不能完全更新屏幕。位于矩形外边的滚动子窗体部分不被擦除,也不在它的新方向上被重绘。为了移动子窗体使之完全不在 prcScroll 参数指定的矩形中,可以使用 DeferWindowPos 函数。如果 SW_SCROLLCHILDREN 标志被设置并且插入符矩形和滚动矩形相交重叠,则光标也重新设置。
4. 所有输入和输出坐标(prcScroll, prcClip, prcUpdate 和 hrgnUpdate)均被定义为客户端,无论窗口是否具 CS_OWNDC 或 CS_CLASSDC 类型。必要的话,还可以使用 LPtoDP 和 DPtoLP 函数来转换逻辑坐标和设备坐标。
【API档案】版权归鱼C工作室(www.fishc.com)所有,转载请注明来源。
|