ScrollWindowEx 함수(winuser.h)
ScrollWindowEx 함수는 지정된 창의 클라이언트 영역 콘텐츠를 스크롤합니다.
구문
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
);
매개 변수
[in] hWnd
형식: HWND
클라이언트 영역을 스크롤할 창에 대한 핸들입니다.
[in] dx
형식: int
가로 스크롤의 양(디바이스 단위)을 지정합니다. 이 매개 변수는 왼쪽으로 스크롤하려면 음수 값이어야 합니다.
[in] dy
형식: int
세로 스크롤의 양(디바이스 단위)을 지정합니다. 이 매개 변수는 위로 스크롤하려면 음수 값이어야 합니다.
[in] prcScroll
형식: const RECT*
스크롤할 클라이언트 영역의 부분을 지정하는 RECT 구조체에 대한 포인터입니다. 이 매개 변수가 NULL이면 전체 클라이언트 영역이 스크롤됩니다.
[in] prcClip
형식: const RECT*
클리핑 사각형의 좌표를 포함하는 RECT 구조체에 대한 포인터입니다. 클리핑 사각형 내의 디바이스 비트만 영향을 받습니다. 사각형 바깥쪽에서 안쪽으로 스크롤된 비트가 그려집니다. 사각형 내부에서 외부로 스크롤된 비트는 그려지지 않습니다. 이 매개 변수는 NULL일 수 있습니다.
[in] hrgnUpdate
형식: HRGN
스크롤하여 무효화된 지역을 보유하도록 수정된 지역에 대한 핸들입니다. 이 매개 변수는 NULL일 수 있습니다.
[out] prcUpdate
형식: LPRECT
스크롤하여 무효화된 사각형의 경계를 수신하는 RECT 구조체에 대한 포인터입니다. 이 매개 변수는 NULL일 수 있습니다.
[in] flags
형식: UINT
스크롤을 제어하는 플래그를 지정합니다. 이 매개 변수는 다음 값의 조합일 수 있습니다.
값 | 의미 |
---|---|
|
SW_INVALIDATE 플래그로 지정된 경우 창에 WM_ERASEBKGND 메시지를 보내 새로 무효화된 영역을 지웁니다. |
|
스크롤한 후 hrgnUpdate 매개 변수로 식별되는 지역을 무효화합니다. |
|
prcScroll 매개 변수가 가리키는 사각형과 교차하는 모든 자식 창을 스크롤합니다. 자식 창은 dx 및 dy 매개 변수에 지정된 픽셀 수만큼 스크롤됩니다. 시스템은 이동하지 않더라도 prcScroll 사각형과 교차하는 모든 자식 창에 WM_MOVE 메시지를 보냅니다. |
|
부드러운 스크롤을 사용하여 스크롤합니다. flags 매개 변수의 HIWORD 부분을 사용하여 부드러운 스크롤 작업에 걸리는 시간(밀리초)을 나타냅니다. |
반환 값
형식: int
함수가 성공하면 반환 값은 SIMPLEREGION(사각형 무효화된 영역), COMPLEXREGION(비사각형 무효화된 영역, 겹치는 사각형) 또는 NULLREGION(무효화된 영역 없음)입니다.
함수가 실패하면 반환 값은 ERROR입니다. 확장 오류 정보를 가져오려면 GetLastError를 호출합니다.
설명
SW_INVALIDATE 및 SW_ERASE 플래그를 지정하지 않으면 ScrollWindowEx 는 스크롤된 영역을 무효화하지 않습니다. 이러한 플래그 중 하나가 설정된 경우 ScrollWindowEx 는 이 영역을 무효화합니다. 애플리케이션이 UpdateWindow 함수를 호출하거나, RedrawWindow 함수를 호출하거나(RDW_UPDATENOW 또는 RDW_ERASENOW 플래그 지정) 애플리케이션 큐에서 WM_PAINT 메시지를 검색할 때까지 영역이 업데이트되지 않습니다.
창에 WS_CLIPCHILDREN 스타일이 있는 경우 hrgnUpdate 및 prcUpdate 로 지정된 반환된 영역은 업데이트해야 하는 자식 창의 영역을 포함하여 업데이트해야 하는 스크롤된 창의 총 영역을 나타냅니다.
SW_SCROLLCHILDREN 플래그를 지정하면 자식 창의 일부가 스크롤되는 경우 시스템이 화면을 제대로 업데이트하지 않습니다. 원본 사각형 외부에 있는 스크롤된 자식 창의 부분은 지워지지 않으며 새 대상에서 제대로 다시 그려지지 않습니다. prcScroll에서 지정한 사각형 내에 완전히 있지 않은 자식 창을 이동하려면 DeferWindowPos 함수를 사용합니다. SW_SCROLLCHILDREN 플래그가 설정되고 캐리트 사각형이 스크롤 사각형과 교차하는 경우 커서의 위치가 변경됩니다.
창에 CS_OWNDC 또는 CS_CLASSDC 클래스 스타일이 있는지 여부에 관계없이 모든 입력 및 출력 좌표(prcScroll, prcClip, prcUpdate 및 hrgnUpdate의 경우)가 클라이언트 좌표로 결정됩니다. 필요한 경우 LPtoDP 및 DPtoLP 함수를 사용하여 논리 좌표로 변환합니다.
예제
예제는 WM_PAINT 메시지로 텍스트 스크롤을 참조하세요.
요구 사항
지원되는 최소 클라이언트 | Windows Vista [데스크톱 앱만 해당] |
지원되는 최소 서버 | Windows Server 2003 [데스크톱 앱만 해당] |
대상 플랫폼 | Windows |
헤더 | winuser.h(Windows.h 포함) |
라이브러리 | User32.lib |
DLL | User32.dll |
API 세트 | ext-ms-win-ntuser-misc-l1-2-0(Windows 8.1 도입) |
참고 항목
기타 리소스