본문 바로가기

Language/MFC

SetWindowPos()함수 사용방법


SetWindowPos() 를 사용하면 윈도의 크기와 위치를 변경할 수 있다.

우선....부모 윈도우의 (컨트롤) 크기를 변경할때

SetWindowPos(GetParent()->GetSafeHand(), HWND_TOP, 0,0,100,100,SWP_NOMOVE);
마지막 매개변수를 주목하라...

자신의 컨트롤 크기를 변경할때

this->SetWindowPos(NULL,0,0,100,100,SWP_NIMOVE);

핸들을 가지고 놀 수 있다는 것은 C#계열에서는 힘들지만 MFC 에서는 아주 편하고(?) 쉽다.

사실 핸들을 가지고 노는건 아직 많이 어려워.ㅠㅠ

SetWindowPos함수의 원형은 두가지로 오버로딩이 되어있다.
1. BOOL SetWindowPos(
HWND hWndlnserAfter,
//핸들값 창이 변경되고서 항상 맨 위 , 항상 맨 아래, 설정안함 등 설정 가능
int x,
int y,
int ox,
int oy,
UINT uFlags
//위치만 변경, 크기만 변경등 가능
}

2. BOOL SetWindowPos(
const CWnd* pWndlnserAfter,
//핸들값 창이 변경되고서 항상 맨 위 , 항상 맨 아래, 설정안함 등 설정 가능
int x,
int y,
int ox,
int oy,
UINT uFlags
//위치만 변경, 크기만 변경등 가능
}



핸들을 어떻걸 넘기느냐에 따라서 다르다.
1. 에서는 다음과 같은 핸들이 넘어간다.
HWND_BOTTOM
HWND_NOTOPMOST
HWND_TOP
HWON_TOPMOST

2. 에서는
wndBottom
wndNoTopMost
wndTop
wndTopMost
가 들어간다. 사용할땐 꼭 역참조 연산자 & 를 반드시 붙여야 한다.

공용인 nFlags에는 여러가지가 있겠지만 주로 쓰이는 Flag는 다음과 같다.

SWP_NOMOVE // 위치는 변경않함.
SWP_NOSIZE // 크기는 변경않함.
SWP_NOZORDER // 현재의 Z 순서를 그대로 유지
SWP_HIDEWINDOW
SWP_SHOWINDOW
가 있다.

출처 [MFC] SetWindowPos 함수