SetWindowPos

SetWindowPos 함수는 크기, 위치 및 자녀, 팝업, 또는 최상위 창의 Z 순서를 변경합니다. 아이, 팝업, 및 최상위 창을 화면에 자신의 모습에 따라 정렬 됩니다. 최상위 창 가장 높은 순위를 받으며 Z 순서에서 첫 번째 창.

 (BOOL SetWindowPos HWND  hWnd, / / 창 핸들HWNDhWndInsertAfter, / / 배치 순서 처리int X, / / 가로 위치int Y, / / 수직 위치 int cx, // width int cy, // heightUINTuFlags / / 플래그 창 위치);
 

매개 변수

hWnd
창 핸들.
hWndInsertAfter
Z 순서에 따라 위치가 지정 된 창 앞에 창 핸들. 이 매개 변수는 창 핸들 또는 다음 값 중 하나 여야:
의미
HWND_BOTTOM 창 Z 순서의 맨 아래에 배치합니다. HWnd 매개 변수는 최상위 창을 식별 하는 경우 창 맨 위 지위를 잃는다 고 다른 모든 창 맨 아래에 배치 됩니다.
HWND_NOTOPMOST 장소는 창 위의 모든 비-최상위 창 (즉, 모든 최상위 창 뒤에). 이 플래그는 아무런 효과가 창이 아닌 최상위 창 이미 경우.
HWND_TOP Z 순서의 맨 창 배치.
HWND_TOPMOST 위의 모든 아닌 최상위 윈도우 창에 넣습니다. 비활성화 된 경우에 맨 위 위치를 유지 하는 창.

이 매개 변수를 사용 하는 방법에 대 한 자세한 내용은 다음 주의 섹션을 참조 하십시오.

X
클라이언트 좌표에서 창 왼쪽의 새 위치를 지정.
Y
클라이언트 좌표는 창 위쪽의 새 위치로 지정.
cx
창의 새 너비를 픽셀 단위로 지정.
cy
창의 새로운 높이 픽셀 단위로 지정.
uFlags
창을 크기를 조정 하 고 위치 플래그를 지정 합니다. 이 매개 변수는 다음 값의 조합 될 수 있습니다.:
의미
SWP_ASYNCWINDOWPOS 호출 하는 스레드는 윈도우를 소유 하지 않는 경우 시스템 창을 소유 하는 스레드 요청을 게시 합니다. 그러면 다른 스레드에서 요청을 처리 하는 동안 실행을 차단 호출 하는 스레드.
SWP_DEFERERASE WM_SYNCPAINT 메시지의 생성을 방지.
SWP_DRAWFRAME 창 주위 프레임 (윈도우의 클래스 설명에 정의 됨)를 그립니다.
SWP_FRAMECHANGED 윈도우의 크기가 변경 되지 않습니다 경우에 창에 WM_NCCALCSIZE 메시지를 보냅니다. 윈도우의 크기를 변경 하는 경우에 WM_NCCALCSIZE 보낸이 플래그를 지정 하는 경우.
SWP_HIDEWINDOW 창 숨기기.
SWP_NOACTIVATE 창을 활성화 하지 않습니다. 창 활성화 및 ( hWndInsertAfter 매개 변수 설정)에 따라 또는 비 맨 그룹의 상단으로 이동이 플래그가 설정 되지 않은 경우.
SWP_NOCOPYBITS 클라이언트 영역의 전체 내용을 삭제합니다. 클라이언트 영역의 유효한 내용은 저장 및 창 크기 또는 위치를 변경 하는 후 클라이언트 영역으로 다시 복사이 플래그를 지정 하는 경우.
SWP_NOMOVE 현재 위치를 유지 ( XY 매개 변수 무시).
SWP_NOOWNERZORDER Z 순서에서 소유자 창의 위치를 변경 하지 않습니다.
SWP_NOREDRAW 변경 내용을 다시 그리기 하지 않습니다. 이 플래그를 설정 하는 경우 어떤 종류의 다시 그리기 발생 합니다. 이 클라이언트 영역 (제목 표시줄 및 스크롤 막대를 포함 하 여) 비클라이언트 영역에 적용 됩니다 및 부모 윈도우의 모든 부분 이동 창의 결과로 발견. 응용 프로그램이 명시적으로 무효화 해야 합니다 또는 창과 부모 창을 다시 그릴 필요의 모든 부분을 다시 그리도록이 플래그가 설정 된 경우.
SWP_NOREPOSITION SWP_NOOWNERZORDER 플래그와 동일.
SWP_NOSENDCHANGING 창을 WM_WINDOWPOSCHANGING 메시지를 수신 하는 것을 방지합니다.
SWP_NOSIZE 현재 크기 ( cxcy 매개 변수 무시) 유지.
SWP_NOZORDER 현재 Z 순서를 유지 ( hWndInsertAfter 매개 변수를 무시).
SWP_SHOWWINDOW 창 표시.

반환 값

함수가 성공 하면 반환 값은 0이 아닌.

함수가 실패 하면 반환 값은 0입니다. 확장 된 오류 정보를 얻을 하려면 GetLastError.

주의

윈도우를 이동 하거나 크기 수 없습니다 SWP_SHOWWINDOW 또는 SWP_HIDEWINDOW 플래그를 설정 하는 경우.

SetWindowLong사용 하 여 특정 창 데이터를 변경 하는 경우 적용 하는 변경 사항이 SetWindowPos 를 호출 해야 합니다. UFlags에 대 한 다음 조합 하 여 사용: SWP_NOMOVE | SWP_NOSIZE | SWP_NOZORDER | SWP_FRAMECHANGED.

HWND_TOPMOST 및 SWP_NOZORDER 플래그를 설정 하지 않으면 되도록 hWndInsertAfter 매개 변수를 설정 하거나 기존 최상위 창을 위에 오도록 Z 순서에서 창의 위치를 설정 하 여 맨 위에 있는 창 창을 만들 수 있습니다. 비-최상위 창 맨 위에 있는 때에 소유 windows 최상위도 적용 됩니다. 그러나, 그것의 소유자를 변경 되지 않습니다.

HWndInsertAfter 에 지정 된 값은 다음과 같은 경우에만 사용 하는 SWP_NOACTIVATE도 SWP_NOZORDER 플래그 (때, 즉 응용 프로그램 요청 창이 동시에 활성화 될 하 고 Z 순서에서 해당 위치가 변경)를 지정 하는 경우:

응용 프로그램은 또한 Z 순서의 맨 하 려 하지 않고 비활성 창을 활성화할 수 없습니다. 응용 프로그램 제한 없이 Z 순서로 활성화 된 윈도우의 위치를 변경할 수 있습니다 또는 창을 활성화 하 고 맨 위 또는 맨 위 비 창 맨 이동 수 있습니다.

최상위 창을 맨 (HWND_BOTTOM)의 Z 순서 또는 어떤 아닌 최상위 창 뒤에 위치 하는 경우 그것은 더 이상 맨. 최상위 창이 아닌 최상위 때 그것의 소유자와 그 소유 windows 또한 만들어진 아닌 최상위 창.

아닌 최상위 창 맨 위에 있는 창 소유할 수 있지만 반대로 발생할 수 없습니다. 최상위 창 소유 하 고 모든 창 (예: 대화 상자)가 만든 모든 소유 windows 그들의 소유자 이상 유지 되도록 최상위 창 자체가.

SetForegroundWindow 함수를 호출 해야 합니다 응용 프로그램 전경, 그리고 물체에 있어야 하는 경우.

Windows CE: 보이는 최상위 창의 경우 SWP_NOACTIVATE 플래그를 지정 하지 않으면이 함수는 창을 활성화 됩니다. 이것은 현재 활성 창 SWP_NOACTIVATE 플래그 또는 SWP_HIDEWINDOW 플래그를 지정 하는 경우 활성화 다른 표시 최상위 창에 전달 됩니다.

이 함수에 nFlags 매개 변수에서 SWP_FRAMECHANGED 플래그를 설정 하는 경우 Windows CE 클라이언트 영역 크기를 변경할 수 있습니다 윈도우의 전체 비클라이언트 영역을 다시 그립니다. 다시 계산 비클라이언트 영역을 얻을 수 있는 유일한 방법 이며 당신은 SetWindowLong 를 호출 하 여 창 스타일을 변경한 후에 일반적으로 사용 됩니다.

SetWindowPos 항상 WM_WINDOWPOSCHANGED 메시지를 창에 전송 하면 됩니다. 이 메시지에 전달 된 플래그는 정확 하 게 함수에 전달 된 것과 동일 합니다. 다른 메시지가이 함수로 보내집니다.

Windows CE 1.0 hwndInsertAfter 매개 변수에서 HWND_TOPMOST 및 HWND_NOTOPMOST 상수를 지원 하지 않습니다.

Windows CE 1.0 fuFlags paramete에서 SWP_DRAWFRAME 또는 SWP_NOCOPYBITS 플래그를 지원 하지 않습니다.

QuickInfo

nbsp;?Windows &NT: 버전 3.1 이상이 필요 합니다.
Windows:Windows 95 이상이 필요합니다.
Windows CE:버전 1.0 이상이 필요합니다.
헤더:Winuser.h에서 선언합니다.
가져오기 라이브러리:User32.lib를 사용 하 여.

참고 항목

창 개요 창 기능, MoveWindow, SetActiveWindow, SetForegroundWindow

 

Index