CWnd::ScrollWindow

void ScrollWindow( int xAmount, int yAmount, LPCRECT lpRect = NULL,LPCRECT lpClipRect = NULL );

参数:
xAmount指定了水平滚动的量,使用设备单位。在左滚时,该参数必须为负。
yAmount指定了垂直滚动的量,使用设备单位。在上滚时,该参数必须为负。
lpRect指向一个CRect对象或RECT结构,指定了要滚动的客户区的部分。如果lpRect为NULL,则将滚动整个客户区。如果光标区域与滚动矩形重叠,则插字符将被重定位。
lpClipRect指向一个CRect对象或RECT结构,指定了要滚动的裁剪区域。只有这个矩形中的位才会被滚动。在矩形之外的位不会被影响,即使它们是在lpRect矩形之内。如果lpClipRect为NULL,则不会在滚动矩形上进行裁剪。

说明:
这个函数滚动当前CWnd对象的客户区内容。
如果插字符在要滚动的CWnd之内,则ScrollWindow自动将插字符隐藏,以避免它被擦除,然后当滚动完成以后,再恢复插字符。插字符的位置将相应地调整。
ScrollWindow成员函数所涉及的区域将不会被重画,但是将被加入当前CWnd对象的更新区域。应用程序最终将接收到一条WM_PAINT消息,通知它这个区域需要重画。要在滚动完成的同时重画涉及的区域,则应在调用ScrollWindow之后立即调用UpdateWindow成员函数。
如果lpRect为NULL,则窗口的任何子窗口的位置将被设为xAmout和yAmout指定的偏移,并且CWnd中任何无效(未画出)区域也被加上偏移。当lpRect为NULL的时候,ScrollWindow更快一些。
如果lpRect不为NULL,则子窗口的位置不发生变化,并且CWnd的无效区域也没有偏移。当lpRect为NULL的时候,如果要防止更新问题,则应在调用ScrollWindow之前调用UpdateWindow成员函数以重画CWnd。

请参阅:CWnd::UpdateWindow, ::ScrollWindow