ScrollWidnowEx
函数功能: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)所有,转载请注明来源。
WinSDK 宇哥威武
页:
[1]