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_ERASE
SW_INVALIDATE 플래그로 지정된 경우 창에 WM_ERASEBKGND 메시지를 보내 새로 무효화된 영역을 지웁니다.
SW_INVALIDATE
스크롤한 후 hrgnUpdate 매개 변수로 식별되는 지역을 무효화합니다.
SW_SCROLLCHILDREN
prcScroll 매개 변수가 가리키는 사각형과 교차하는 모든 자식 창을 스크롤합니다. 자식 창은 dxdy 매개 변수에 지정된 픽셀 수만큼 스크롤됩니다. 시스템은 이동하지 않더라도 prcScroll 사각형과 교차하는 모든 자식 창에 WM_MOVE 메시지를 보냅니다.
SW_SMOOTHSCROLL
부드러운 스크롤을 사용하여 스크롤합니다. flags 매개 변수의 HIWORD 부분을 사용하여 부드러운 스크롤 작업에 걸리는 시간(밀리초)을 나타냅니다.

반환 값

형식: int

함수가 성공하면 반환 값은 SIMPLEREGION(사각형 무효화된 영역), COMPLEXREGION(비사각형 무효화된 영역, 겹치는 사각형) 또는 NULLREGION(무효화된 영역 없음)입니다.

함수가 실패하면 반환 값은 ERROR입니다. 확장 오류 정보를 가져오려면 GetLastError를 호출합니다.

설명

SW_INVALIDATE 및 SW_ERASE 플래그를 지정하지 않으면 ScrollWindowEx 는 스크롤된 영역을 무효화하지 않습니다. 이러한 플래그 중 하나가 설정된 경우 ScrollWindowEx 는 이 영역을 무효화합니다. 애플리케이션이 UpdateWindow 함수를 호출하거나, RedrawWindow 함수를 호출하거나(RDW_UPDATENOW 또는 RDW_ERASENOW 플래그 지정) 애플리케이션 큐에서 WM_PAINT 메시지를 검색할 때까지 영역이 업데이트되지 않습니다.

창에 WS_CLIPCHILDREN 스타일이 있는 경우 hrgnUpdateprcUpdate 로 지정된 반환된 영역은 업데이트해야 하는 자식 창의 영역을 포함하여 업데이트해야 하는 스크롤된 창의 총 영역을 나타냅니다.

SW_SCROLLCHILDREN 플래그를 지정하면 자식 창의 일부가 스크롤되는 경우 시스템이 화면을 제대로 업데이트하지 않습니다. 원본 사각형 외부에 있는 스크롤된 자식 창의 부분은 지워지지 않으며 새 대상에서 제대로 다시 그려지지 않습니다. prcScroll에서 지정한 사각형 내에 완전히 있지 않은 자식 창을 이동하려면 DeferWindowPos 함수를 사용합니다. SW_SCROLLCHILDREN 플래그가 설정되고 캐리트 사각형이 스크롤 사각형과 교차하는 경우 커서의 위치가 변경됩니다.

창에 CS_OWNDC 또는 CS_CLASSDC 클래스 스타일이 있는지 여부에 관계없이 모든 입력 및 출력 좌표(prcScroll, prcClip, prcUpdatehrgnUpdate의 경우)가 클라이언트 좌표로 결정됩니다. 필요한 경우 LPtoDPDPtoLP 함수를 사용하여 논리 좌표로 변환합니다.

예제

예제는 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 도입)

참고 항목

DPtoLP

DeferWindowPos

LPtoDP

기타 리소스

RECT

RedrawWindow

UpdateWindow