ScrollWindowEx
The ScrollWindowEx
function scrolls the content of the specified window s client area. This
function is similar to the ScrollWindow function, but it has additional
features.
int ScrollWindowEx(
HWND hWnd, |
// handle of window
to scroll |
int dx, |
// amount of
horizontal scrolling |
int dy, |
// amount of
vertical scrolling |
CONST RECT *prcScroll, |
// address of
structure with scroll rectangle |
CONST RECT *prcClip, |
// address of
structure with clip rectangle |
HRGN hrgnUpdate, |
// handle of update
region |
LPRECT prcUpdate, |
// address of
structure for update rectangle |
UINT flags |
// scrolling flags |
); |
|
Parameters
hWnd
Identifies the
window where the client area is to be scrolled.
dx
Specifies the
amount, in device units, of horizontal scrolling. This parameter must be a
negative value to scroll to the left.
dy
Specifies the
amount, in device units, of vertical scrolling. This parameter must be a
negative value to scroll up.
prcScroll
Points to the
RECT
prcClip
Points to the
RECT structure containing the coordinates of the clipping rectangle.
Only device bits within the clipping rectangle are affected. Bits scrolled from
the outside of the rectangle to the inside are painted; bits scrolled from the
inside of the rectangle to the outside are not painted.
hrgnUpdate
Identifies
the region that is modified to hold the region invalidated by scrolling. This
parameter may be NULL.
prcUpdate
Points to the
RECT structure receiving the boundaries of the rectangle invalidated by
scrolling. This parameter may be NULL.
flags
Specifies
flags that control scrolling. This parameter can be one of the following
values:
Value |
Meaning |
SW_ERASE |
Erases the
newly invalidated region by sending a WM_ERASEBKGND message to the window when
specified with the SW_INVALIDATE flag. |
SW_INVALIDATE |
Invalidates
the region identified by the hrgnUpdate parameter after scrolling. |
SW_SCROLLCHILDREN |
Scrolls all
child windows that intersect the rectangle pointed to by the prcScroll
parameter. The child windows are scrolled by the number of pixels specified
by the dx and dy parameters. Windows sends a WM_MOVE message to
all child windows that intersect the prcScroll rectangle, even if they
do not move. |
Return Values
If the
function succeeds, the return value is SIMPLEREGION (rectangular invalidated
region), COMPLEXREGION (nonrectangular invalidated region; overlapping
rectangles), or NULLREGION (no invalidated region).
If the
function fails, the return value is ERROR.
Remarks
If the
SW_INVALIDATE and SW_ERASE flags are not specified, ScrollWindowEx does
not invalidate the area that is scrolled from. If either of these flags is set,
ScrollWindowEx invalidates this area. The area is not updated until the
application calls the UpdateWindow
If the window
has the WS_CLIPCHILDREN style, the returned areas specified by hrgnUpdate
and prcUpdate represent the total area of the scrolled window that must
be updated, including any areas in child windows that need updating.
If the
SW_SCROLLCHILDREN flag is specified, Windows does not properly update the
screen if part of a child window is scrolled. The part of the scrolled child
window that lies outside the source rectangle is not erased and is not properly
redrawn in its new destination. To move child windows that do not lie
completely within the rectangle specified by prcScroll, use the DeferWindowPos
function. The cursor is repositioned if the SW_SCROLLCHILDREN flag is set and
the caret rectangle intersects the scroll rectangle.
All input and
output coordinates (for prcScroll, prcClip, prcUpdate, and
hrgnUpdate) are determined as client coordinates, regardless of whether
the window has the CS_OWNDC or CS_CLASSDC class style. Use the LPtoDP
and DPtoLP functions to convert to and from logical coordinates, if
necessary.
See Also