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 플래그가 설정된 경우 이 매개 변수는 무시됩니다.
[in] x
형식: int
창의 왼쪽 위 모퉁이에 대한 X 좌표입니다.
[in] y
형식: int
창의 왼쪽 위 모퉁이에 대한 Y 좌표입니다.
[in] cx
형식: int
창의 새 너비(픽셀)입니다.
[in] cy
형식: int
창의 새 높이(픽셀)입니다.
[in] uFlags
형식: UINT
창의 크기와 위치에 영향을 주는 다음 값의 조합입니다.
값 | 의미 |
---|---|
|
창 주위에 프레임(창의 클래스 설명에 정의됨)을 그립니다. |
|
창의 크기가 변경되지 않더라도 창에 WM_NCCALCSIZE 메시지를 보냅니다. 이 플래그를 지정하지 않으면 창의 크기가 변경될 때만 WM_NCCALCSIZE 전송됩니다. |
|
창을 숨깁니다. |
|
창을 활성화하지 않습니다. 이 플래그를 설정하지 않으면 창이 활성화되고 hWndInsertAfter 매개 변수의 설정에 따라 맨 위 또는 맨 위가 아닌 그룹의 맨 위로 이동합니다. |
|
클라이언트 영역의 전체 콘텐츠를 삭제합니다. 이 플래그를 지정하지 않으면 창 크기가 조정되거나 위치가 변경된 후 클라이언트 영역의 유효한 내용이 저장되고 클라이언트 영역으로 다시 복사됩니다. |
|
현재 위치를 유지합니다( x 및 y 매개 변수 무시). |
|
Z 순서에서 소유자 창의 위치를 변경하지 않습니다. |
|
변경 내용을 다시 그리지 않습니다. 이 플래그를 설정하면 어떤 종류의 다시 그리기도 발생하지 않습니다. 이는 클라이언트 영역, 비클라이언트 영역(제목 표시줄 및 스크롤 막대 포함) 및 창이 이동된 결과로 발견된 부모 창의 모든 부분에 적용됩니다. 이 플래그가 설정되면 애플리케이션은 다시 그리기가 필요한 창 및 부모 창의 모든 부분을 명시적으로 무효화하거나 다시 그려야 합니다. |
|
SWP_NOOWNERZORDER 플래그와 동일합니다. |
|
창이 WM_WINDOWPOSCHANGING 메시지를 수신하지 못하도록 합니다. |
|
현재 크기를 유지합니다( cx 및 cy 매개 변수 무시). |
|
현재 Z 순서를 유지합니다( hWndInsertAfter 매개 변수 무시). |
|
창을 표시합니다. |
반환 값
형식: HDWP
반환 값은 업데이트된 다중 창 위치 구조를 식별합니다. 이 함수에서 반환된 핸들은 함수에 전달된 핸들과 다를 수 있습니다. 이 함수가 반환하는 새 핸들은 DeferWindowPos 또는 EndDeferWindowPos 함수에 대한 다음 호출 중에 전달되어야 합니다.
함수에 사용할 수 있는 시스템 리소스가 부족한 경우 반환 값은 NULL입니다. 확장 오류 정보를 가져오려면 GetLastError를 호출합니다.
설명
DeferWindowPos에 대한 호출이 실패하면 애플리케이션은 창 위치 지정 작업을 포기하고 EndDeferWindowPos를 호출하지 않아야 합니다.
SWP_NOZORDER 지정하지 않으면 시스템에서 hWnd 매개 변수로 식별된 창을 hWndInsertAfter 매개 변수로 식별된 창 다음 위치에 배치합니다. hWndInsertAfter가 NULL이거나 HWND_TOP 경우 시스템은 hWnd 창을 Z 순서의 맨 위에 배치합니다. hWndInsertAfter가 HWND_BOTTOM 설정되면 시스템에서 hWnd 창을 Z 순서의 맨 아래에 배치합니다.
자식 창의 모든 좌표는 부모 창 클라이언트 영역의 왼쪽 위 모서리를 기준으로 합니다.
hWndInsertAfter를 HWND_TOPMOST 플래그로 설정하고 SWP_NOZORDER 플래그가 설정되지 않도록 하거나 창의 위치를 Z 순서로 설정하여 창이 기존 맨 위 창 위에 있도록 하여 맨 위 창으로 만들 수 있습니다. 맨 위가 아닌 창이 맨 위로 만들어지면 소유 창도 맨 위로 만들어집니다. 그러나 소유자는 변경되지 않습니다.
SWP_NOACTIVATE 및 SWP_NOZORDER 플래그가 지정되지 않은 경우(즉, 애플리케이션이 창을 동시에 활성화하도록 요청하고 Z 순서의 위치가 변경된 경우) hWndInsertAfter에 지정된 값은 다음과 같은 경우에만 사용됩니다.
- hWndInsertAfter에는 HWND_TOPMOST 및 HWND_NOTOPMOST 플래그가 지정되지 않습니다.
- hWnd로 식별된 창이 활성 창이 아닙니다.
맨 위 창은 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에 도입됨) |
추가 정보
개념
참조