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
//위치만 변경, 크기만 변경등 가능
}
//핸들값 창이 변경되고서 항상 맨 위 , 항상 맨 아래, 설정안함 등 설정 가능
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
//위치만 변경, 크기만 변경등 가능
}
//핸들값 창이 변경되고서 항상 맨 위 , 항상 맨 아래, 설정안함 등 설정 가능
int x,
int y,
int ox,
int oy,
UINT uFlags
//위치만 변경, 크기만 변경등 가능
}
핸들을 어떻걸 넘기느냐에 따라서 다르다.
1. 에서는 다음과 같은 핸들이 넘어간다.
HWND_BOTTOM
HWND_NOTOPMOST
HWND_TOP
HWON_TOPMOST
2. 에서는
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 함수
wndNoTopMost
wndTop
wndTopMost
가 들어간다. 사용할땐 꼭 역참조 연산자 & 를 반드시 붙여야 한다.
공용인 nFlags에는 여러가지가 있겠지만 주로 쓰이는 Flag는 다음과 같다.
SWP_NOMOVE // 위치는 변경않함.
SWP_NOSIZE // 크기는 변경않함.
SWP_NOZORDER // 현재의 Z 순서를 그대로 유지
SWP_HIDEWINDOW
SWP_SHOWINDOW
가 있다.
출처 [MFC] SetWindowPos 함수