DeferWindowPos 함수(winuser.h)

지정된 창의 지정된 다중 창 위치 구조를 업데이트. 그런 다음, 함수는 업데이트된 구조체에 대한 핸들을 반환합니다. EndDeferWindowPos 함수는 이 구조체의 정보를 사용하여 여러 창의 위치와 크기를 동시에 변경합니다. BeginDeferWindowPos 함수는 구조를 만듭니다.

구문

HDWP DeferWindowPos(
  [in]           HDWP hWinPosInfo,
  [in]           HWND hWnd,
  [in, optional] HWND hWndInsertAfter,
  [in]           int  x,
  [in]           int  y,
  [in]           int  cx,
  [in]           int  cy,
  [in]           UINT uFlags
);

매개 변수

[in] hWinPosInfo

형식: HDWP

여러 창에 대한 핸들 - 하나 이상의 창에 대한 크기 및 위치 정보를 포함하는 위치 구조체입니다. 이 구조체는 BeginDeferWindowPos 또는 DeferWindowPos에 대한 최신 호출에 의해 반환됩니다.

[in] hWnd

형식: HWND

업데이트 정보가 구조체에 저장되는 창에 대한 핸들입니다. 다중 창의 모든 창 – 위치 구조는 동일한 부모가 있어야 합니다.

[in, optional] hWndInsertAfter

형식: HWND

Z 순서로 배치된 창 앞에 오는 창에 대한 핸들입니다. 이 매개 변수는 창 핸들이거나 다음 값 중 하나여야 합니다. uFlags 매개 변수에 SWP_NOZORDER 플래그가 설정된 경우 이 매개 변수는 무시됩니다.

의미
HWND_BOTTOM
((HWND)1)
Z 순서의 맨 아래에 있는 창을 Places. hWnd 매개 변수가 맨 위 창을 식별하면 창의 맨 위 상태 손실되고 다른 모든 창의 맨 아래에 배치됩니다.
HWND_NOTOPMOST
((HWND)-2)
맨 위가 아닌 모든 창(즉, 맨 위 창 뒤에 있는 창) 위에 창을 Places. 창이 이미 맨 위가 아닌 창인 경우에는 이 플래그가 적용되지 않습니다.
HWND_TOP
((HWND)0)
Z 순서의 맨 위에 있는 창을 Places.
HWND_TOPMOST
((HWND)-1)
맨 위가 아닌 모든 창 위에 창을 Places. 창은 비활성화된 경우에도 맨 위 위치를 유지합니다.

[in] x

형식: int

창의 왼쪽 위 모퉁이에 대한 X 좌표입니다.

[in] y

형식: int

창의 왼쪽 위 모퉁이에 대한 Y 좌표입니다.

[in] cx

형식: int

창의 새 너비(픽셀)입니다.

[in] cy

형식: int

창의 새 높이(픽셀)입니다.

[in] uFlags

형식: UINT

창의 크기와 위치에 영향을 주는 다음 값의 조합입니다.

의미
SWP_DRAWFRAME
0x0020
창 주위에 프레임(창의 클래스 설명에 정의됨)을 그립니다.
SWP_FRAMECHANGED
0x0020
창의 크기가 변경되지 않더라도 창에 WM_NCCALCSIZE 메시지를 보냅니다. 이 플래그를 지정하지 않으면 창의 크기가 변경될 때만 WM_NCCALCSIZE 전송됩니다.
SWP_HIDEWINDOW
0x0080
창을 숨깁니다.
SWP_NOACTIVATE
0x0010
창을 활성화하지 않습니다. 이 플래그를 설정하지 않으면 창이 활성화되고 hWndInsertAfter 매개 변수의 설정에 따라 맨 위 또는 맨 위가 아닌 그룹의 맨 위로 이동합니다.
SWP_NOCOPYBITS
0x0100
클라이언트 영역의 전체 콘텐츠를 삭제합니다. 이 플래그를 지정하지 않으면 창 크기가 조정되거나 위치가 변경된 후 클라이언트 영역의 유효한 내용이 저장되고 클라이언트 영역으로 다시 복사됩니다.
SWP_NOMOVE
0x0002
현재 위치를 유지합니다( xy 매개 변수 무시).
SWP_NOOWNERZORDER
0x0200
Z 순서에서 소유자 창의 위치를 변경하지 않습니다.
SWP_NOREDRAW
0x0008
변경 내용을 다시 그리지 않습니다. 이 플래그를 설정하면 어떤 종류의 다시 그리기도 발생하지 않습니다. 이는 클라이언트 영역, 비클라이언트 영역(제목 표시줄 및 스크롤 막대 포함) 및 창이 이동된 결과로 발견된 부모 창의 모든 부분에 적용됩니다. 이 플래그가 설정되면 애플리케이션은 다시 그리기가 필요한 창 및 부모 창의 모든 부분을 명시적으로 무효화하거나 다시 그려야 합니다.
SWP_NOREPOSITION
0x0200
SWP_NOOWNERZORDER 플래그와 동일합니다.
SWP_NOSENDCHANGING
0x0400
창이 WM_WINDOWPOSCHANGING 메시지를 수신하지 못하도록 합니다.
SWP_NOSIZE
0x0001
현재 크기를 유지합니다( cxcy 매개 변수 무시).
SWP_NOZORDER
0x0004
현재 Z 순서를 유지합니다( hWndInsertAfter 매개 변수 무시).
SWP_SHOWWINDOW
0x0040
창을 표시합니다.

반환 값

형식: HDWP

반환 값은 업데이트된 다중 창 위치 구조를 식별합니다. 이 함수에서 반환된 핸들은 함수에 전달된 핸들과 다를 수 있습니다. 이 함수가 반환하는 새 핸들은 DeferWindowPos 또는 EndDeferWindowPos 함수에 대한 다음 호출 중에 전달되어야 합니다.

함수에 사용할 수 있는 시스템 리소스가 부족한 경우 반환 값은 NULL입니다. 확장 오류 정보를 가져오려면 GetLastError를 호출합니다.

설명

DeferWindowPos에 대한 호출이 실패하면 애플리케이션은 창 위치 지정 작업을 포기하고 EndDeferWindowPos를 호출하지 않아야 합니다.

SWP_NOZORDER 지정하지 않으면 시스템에서 hWnd 매개 변수로 식별된 창을 hWndInsertAfter 매개 변수로 식별된 창 다음 위치에 배치합니다. hWndInsertAfterNULL이거나 HWND_TOP 경우 시스템은 hWnd 창을 Z 순서의 맨 위에 배치합니다. hWndInsertAfterHWND_BOTTOM 설정되면 시스템에서 hWnd 창을 Z 순서의 맨 아래에 배치합니다.

자식 창의 모든 좌표는 부모 창 클라이언트 영역의 왼쪽 위 모서리를 기준으로 합니다.

hWndInsertAfterHWND_TOPMOST 플래그로 설정하고 SWP_NOZORDER 플래그가 설정되지 않도록 하거나 창의 위치를 Z 순서로 설정하여 창이 기존 맨 위 창 위에 있도록 하여 맨 위 창으로 만들 수 있습니다. 맨 위가 아닌 창이 맨 위로 만들어지면 소유 창도 맨 위로 만들어집니다. 그러나 소유자는 변경되지 않습니다.

SWP_NOACTIVATESWP_NOZORDER 플래그가 지정되지 않은 경우(즉, 애플리케이션이 창을 동시에 활성화하도록 요청하고 Z 순서의 위치가 변경된 경우) hWndInsertAfter에 지정된 값은 다음과 같은 경우에만 사용됩니다.

  • hWndInsertAfter에는 HWND_TOPMOSTHWND_NOTOPMOST 플래그가 지정되지 않습니다.
  • hWnd로 식별된 창이 활성 창이 아닙니다.
애플리케이션은 비활성 창을 Z 주문의 맨 위로 가져오지 않고는 활성화할 수 없습니다. 애플리케이션은 제한 없이 Z 순서에서 활성화된 창의 위치를 변경하거나 창을 활성화한 다음 맨 위 또는 맨 위가 아닌 창의 맨 위로 이동할 수 있습니다.

맨 위 창은 Z 순서의 맨 아래(HWND_BOTTOM)로 위치가 변경되거나 맨 위가 아닌 창 뒤의 맨 위 창이 더 이상 맨 위에 있지 않습니다. 맨 위 창이 맨 위가 아닌 창으로 만들어지면 소유자와 소유 창도 맨 위가 아닌 창으로 만들어집니다.

맨 위가 아닌 창은 맨 위 창을 소유할 수 있지만 그 반대의 경우도 마찬가지입니다. 맨 위 창이 소유한 모든 창(예: 대화 상자)은 소유된 모든 창이 소유자보다 높은 상태로 유지되도록 최상위 창으로 만들어집니다.

요구 사항

요구 사항
지원되는 최소 클라이언트 Windows 2000 Professional[데스크톱 앱만]
지원되는 최소 서버 Windows 2000 Server[데스크톱 앱만]
대상 플랫폼 Windows
헤더 winuser.h(Windows.h 포함)
라이브러리 User32.lib
DLL User32.dll
API 세트 ext-ms-win-ntuser-window-l1-1-4(Windows 10 버전 10.0.14393에 도입됨)

추가 정보

BeginDeferWindowPos

개념

EndDeferWindowPos

참조

Showwindow

Windows