ScrollWindow()函数滚动的是文本内容,并不对窗口区域进行重画。UpdateWindow()函数和ValidateRect()函数使得窗口无效区域变得有效.
在windows程序设计这本书里是这样解释ScrollWindow的:ScrollWindow最后两个参数设定为NULL,这指出了要卷动整个显示区域。Windows自动把显示区域中未被卷动操作覆盖的矩形设为无效。这会产生WM_PAINT消息。
百科是这样解释:
如果参数lpRect不为空,则窗体中的子窗体的位置不改变,窗体中无效(未着色)的区域也不进行偏移。为了防止lpRect不为空时更新的问题,则在调用ScrollWindow之前先调用UpdateWindow函数重绘窗体。
又windows程序设计:如果您希望立即更新无效区域,可以在呼叫InvalidateRect之后呼叫UpdateWindow:
UpdateWindow (hwnd) ;
如果显示区域的任一部分无效,则UpdateWindow将导致Windows用WM_PAINT消息呼叫窗口消息处理程序(如果整个显示区域有效,则不呼叫窗口消息处理程序)。这一WM_PAINT消息不进入消息队列,直接由Windows呼叫窗口消息处理程序。窗口消息处理程序完成更新后立即退出,Windows将控制传回给程序中UpdateWindow呼叫之后的叙述。