개발자 '쑥말고인절미'

[MFC] SetWindowPos(), MoveWindow() 본문

STUDY/C++ & MFC

[MFC] SetWindowPos(), MoveWindow()

쑥말고인절미 2024. 8. 27. 23:57

간단 요약

  • 두 메소드 모두 윈도우의 위치와 크기를 설정할 수 있지만, SetWindowPos()는 더 많은 옵션을 제공, MoveWindow()는 좀 더 단순한 작업에 적합하다.
  • SetWindowPos() : 윈도우의 위치, 크기, Z 순서, 기타 속성까지 세부적으로 제어할 수 있는 유연한 함수이고, 다양한 플래그를 통해 동작을 세밀하게 제어할 수 있다.
  • MoveWindow() : 윈도우의 위치와 크기만 설정하는데 사용되며, 다른 속성은 변경하지 않는다. 상대적으로 간단한 작업에 적합하다.

SetWindowPos()

  • 윈도우의 위치와 크기를 설정하며, 윈도우의 Z 순서(Z-order)와 같은 추가 속성도 제어할 수 있다.
  • 위치, 크기 외에도 Z 순서, 윈도우 스타일 등의 속성을 변경할 수 있다.
  • 윈도우가 보이는지, 보이지 않는지 등 다양한 속성을 제어하는 데 유용하다.
  • 아래는 함수 원형에 대한 설명.
BOOL SetWindowPos(CWnd* pWndInsertAfter
		, int x
                , int y
                , int cx
                , int cy
                , UINT nFlags);
                
/*
// 파라미터 설명
CWnd* pWndInsertAfter
: 윈도우의 Z 순서를 제어한다.
: HWND_TOP, HWND_BOTTOM, HWND_TOPMOST 등을 사용해 앞이나 뒤에 위치하도록 할 수 있다.

int x, int y
: 윈도우의 새로운 좌표(화면 좌표)이다.

int cx, int cy
: 윈도우의 새로운 너비와 높이이다.

UINT nFlags
: 윈도우의 동작을 제어하는 플래그이다.
: ex) SWP_NOSIZE는 크기를 변경하기 않고, SWP_NOMOVE는 위치를 변경하지 않도록 할 수 있다.
*/

MoveWindow()

  • 윈도우의 위치와 크기를 설정한다.
  • Z 순서나 다른 속성은 제어할 수 없고, 위치와 크기만 변경할 수 있다.
  • bRepaint 옵션은 윈도우를 즉시 다시 그릴지 선택할 수 있다.
BOOL MoveWindow(int x
	      , int y
   	      , int nWidth
   	      , int nHeight
  	      , BOOL bRepaint = TRUE);
          
/*
// 파라미터 설명
int x, int y
: 윈도우의 새로운 좌표(화면 좌표)이다.

int nWidth, int nHeight
: 윈도우의 새로운 너비와 높이이다.

BOOL bRepaint
: 윈도우를 다시 그릴지 여부를 결정한다.
: TRUE일 경우, 크기나 위치가 변경된 후에 윈도우를 다시 그린다.
*/