CWnd::SetWindowPos
크기, 위치 및 자식, 팝업, 및 최상위 창의 Z 순서를 변경합니다.
BOOL SetWindowPos(
const CWnd* pWndInsertAfter,
int x,
int y,
int cx,
int cy,
UINT nFlags
);
매개 변수
pWndInsertAfter
식별의 CWnd 앞에 있는 개체 (보다 클 수)이 CWnd 개체는 Z 순서에서. 이 매개 변수는 포인터 일 수는 CWnd 또는 포인터 다음 값 중 하나:wndBottom 창의 Z 순서의 맨 아래에 배치 합니다. 이 경우 CWnd 맨 위 창인 창 맨 위에 있는 상태 손실 시스템 창의 다른 모든 창 맨 아래에 배치 됩니다.
wndTop 창 제일 상단에 배치 합니다.
wndTopMost 모든 아닌 최상위 windows 창을 배치 합니다. 도 비활성화 될 때 창 맨 위 위치를 유지 합니다.
wndNoTopMost 창이 맨 위 창이 모두 맨 재배치 (즉, 모든 최상위 창 뒤). 창 맨 위 창이 있으면이 플래그에 효과가 없습니다.
이 매개 변수를 사용 하는 방법에 대 한 규칙의 경우이 항목의 "설명" 단원을 참조 하십시오.
x
새 창의 왼쪽 위치를 지정 합니다.y
새 창의 위쪽 위치를 지정 합니다.cx
창의 새 너비를 지정합니다.cy
창의 새 높이 지정합니다.nFlags
크기 조정 및 위치 지정 옵션을 지정 합니다. 이 매개 변수는 다음 플래그 조합이 될 수 있습니다.SWP_DRAWFRAME 창 (창이 만들어질 때 정의 된) 프레임을 그립니다.
SWP_FRAMECHANGED 보냅니다는 WM_NCCALCSIZE 않습니다 창의 크기가 변경 되는 경우에 메시지를 창으로. 이 플래그를 지정 하지 않으면 WM_NCCALCSIZE 는 창의 크기가 변경 되 면 전송 됩니다.
SWP_HIDEWINDOW 창을 숨깁니다.
SWP_NOACTIVATE창을 활성화 하지 않습니다. 이 플래그를 설정 하지 않으면 창을 활성화 하 고 위쪽은 맨 위 또는 맨 위 그룹으로 이동 됩니다 (설정에 따라은 pWndInsertAfter 매개 변수).
SWP_NOCOPYBITS 클라이언트 영역의 전체 내용을 삭제 합니다. 이 플래그를 지정 하지 않으면 클라이언트 영역의 내용은 잘못 저장 하 고 창 크기 또는 위치를 변경 하면 클라이언트 영역으로 다시 복사 됩니다.
SWP_NOMOVE현재 위치를 유지 (무시 된 x 및 y 매개 변수).
SWP_NOOWNERZORDER z에서 소유자 창의 위치는 변경 되지 않습니다.
SWP_NOREDRAW 변경 내용을 다시 그려지지 않습니다. 이 플래그가 설정 되 면 다시 표시 하지 않습니다 모든 종류의 발생 합니다. 비클라이언트 영역 (제목 및 스크롤 막대를 포함), 일부 발견의 결과로 이동된 된 창은 부모 창의 클라이언트 영역에 적용 됩니다. 이 플래그가 설정 되 면 응용 프로그램 해야 명시적으로 무효화 하거나 그려야 부모 창과 창 부분을 다시 그립니다.
SWP_NOREPOSITION 동일 SWP_NOOWNERZORDER.
SWP_NOSENDCHANGING 창에서 수신을 방지는 WM_WINDOWPOSCHANGING 메시지.
SWP_NOSIZE현재 크기 유지 (무시 된 cx 및 cy 매개 변수).
SWP_NOZORDER현재 주문 유지 (무시 pWndInsertAfter).
SWP_SHOWWINDOW 의 창에 표시 됩니다.
반환 값
함수가 성공 하면 0이 아닌. 그렇지 않으면 0입니다.
설명
Windows 화면 Z 순서에 따라 정렬 됩니다. 창 위쪽의 z 순서에 있는 다른 모든 창 위에 나타납니다.
클라이언트 좌표 (왼쪽 위 모서리를 기준으로 부모 창의 클라이언트 영역) 자식 창에 대 한 모든 좌표입니다.
창을 z 축에서 위쪽으로 이동할 수 있습니다 설정으로 pWndInsertAfter 매개 변수를 & wndTopMost 는 확인 하는 것은 SWP_NOZORDER 모든 기존 최상위 창 위에 오도록 플래그입니다 않는 z 설정 또는 설정 창에서의. 맨 위 창 맨 위에 있는 이루어지면 소유 된 창 맨 위에 있는 이루어집니다. 소유자는 변경 되지 않습니다.
최상위 창을 더 이상 맨 아래쪽에 위치가 변경 된 경우입니다 (및 wndBottom)의 Z-순서 또는 후 맨 위 창. 맨 위 창 맨 위 창이 맨 위 하면 모든 해당 소유자 및 소유 된 창도 변경 됩니다.
두 경우 SWP_NOACTIVATE 나 SWP_NOZORDER (즉, 응용 프로그램 창 동시에 활성화 되며 지정 된 Z-순서 대로 배치는 요청 하는 경우) 지정 된 지정 된 값 pWndInsertAfter 다음과 같은 경우에만 사용 됩니다.
모두 및 wndTopMost 또는 및 wndNoTopMost 지정 된는 pWndInsertAfter 매개 변수.
이 창이 활성 창이 아닙니다.
응용 프로그램 제일 위쪽에도 나타나지 않고 비활성 창을 활성화할 수 없습니다. 응용 프로그램 제한 없이 활성화 된 창의 Z 순서를 변경할 수 있습니다.
맨 위 창 맨 위에 있는 창에서 소유할 수 있지만 그 반대의 경우입니다. 맨 위 창에 소유 된 창 (예를 들어, 대화 상자) 자체 만든 모든 창 위에 소유자 유지을 소유 하는 최상위 창입니다.
Windows 버전 3.1 및 나중에 windows Z 순서의 맨 위로 이동 하 여 수 가지 설정 하 여 잠긴 해당 WS_EX_TOPMOST 스타일입니다. 맨 위에 있는 창도 비활성화 때 맨 위 위치를 유지 합니다. 예를 들어, WinHelp 항상 위 명령을 선택 하면 도움말 창의 위쪽에 있습니다 다음 응용 프로그램을 다시 시작할 때 표시 됩니다.
최상위 창을 만들려면 호출 SetWindowPos 에 pWndInsertAfter 크거나 매개 변수 및 wndTopMost, 또는 설정의 WS_EX_TOPMOST 스타일 창을 만들 때.
Z는 windows에 포함 되어 있는 경우는 WS_EX_TOPMOST 스타일, 창으로 이동은 및 wndTopMost 값 모든 창의 맨 위, 하지만 아래의 모든 최상위 창 위쪽에 배치 됩니다. 때 비활성 창 없이 활성화 응용 프로그램의 WS_EX_TOPMOST 비트가 아닌 모든 창 위에 있지만 아래의 모든 최상위 windows 창 이동 됩니다.
경우 SetWindowPos 호출 되는 pWndInsertAfter 매개 변수가 및 wndBottom 및 CWnd 는 최상위 창입니다 창이 맨 위에 있는 상태를 잃을 (WS_EX_TOPMOST 지워집니다), 시스템 창의 Z 순서의 맨 아래에 배치 하 고.
예제
void CMyApp::OnHideApplication()
{
//m_pMainWnd is the main application window, a member of CMyApp
ASSERT_VALID(m_pMainWnd);
// hide the application's windows before closing all the documents
m_pMainWnd->ShowWindow(SW_HIDE);
m_pMainWnd->ShowOwnedPopups(FALSE);
// put the window at the bottom of z-order, so it isn't activated
m_pMainWnd->SetWindowPos(&CWnd::wndBottom, 0, 0, 0, 0,
SWP_NOMOVE|SWP_NOSIZE|SWP_NOACTIVATE);
}
요구 사항
헤더: afxwin.h