개발자 '쑥말고인절미'

[MFC]GetWindowRect(), GetClientRect(), ScreenToClient() 본문

STUDY/C++ & MFC

[MFC]GetWindowRect(), GetClientRect(), ScreenToClient()

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

간단 요약

  • 세 메소드 모두 윈도우 컨트롤의 위치와 크기를 다루는 함수이다.
  • GetWindowRect() : 윈도우의 전체 영역을 화면 좌표로 가져온다.
  • GetClientRect() : 클라이언트 영역의 크기만을 가져오며, 좌표는 (0, 0)에서 시작하는 클라이언트 좌표이다.
  • ScreenToClient()화면 좌표클라이언트 좌표로 변환한다.

GetWindowRect()

  • 윈도우의 외부 직사각형(전체 영역)의 좌표를 가져온다.
  • 화면(Screen) 좌표계. 즉, 화면의 왼쪽 위 모서리를 (0, 0)으로 하는 절대좌표
  • 윈도우의 전체 크기와 위치를 반환하는데 타이틀바, 테두리, 메뉴 등 모든 외부 요소가 포함된다.

GetClientRect()

  • 클라이언트 영역(클라이언트 직사각형)의 좌표를 가져온다.
  • 클라이언트(Client) 좌표계. 즉, 클라이언트 영역의 왼쪽 위 모서리를 (0, 0)으로 하는 상대좌표
  • 클라이언트 영역은 윈도우의 내부 영역으로, 메뉴 바나 스크롤 바를 제외순수하게 사용자가 그릴 수 있는 영역이다.
  • 이 메소드는 항상 (0, 0)에서부터 시작하는 좌표를 반환하며, 위치보다는 크기를 확인할 때 주로 사용된다.

ScreenToClient()

  • 화면 좌표를 클라이언트 좌표로 변환한다.
  • 입력으로 받은 화면 좌표를 기준으로 해당 점이 클라이언트 영역 내에서 어디에 위치하는지를 계산해준다.
  • 화면(Screen) 좌표계클라이언트(Client) 좌표계로 변환할 때 사용된다.
  • ex) 마우스 클릭 이벤트에서 화면 좌표로 전달된 클릭 위치를 현재 윈도우의 클라이언트 영역에서 어디에 위치하는지를 알아내기 위해 사용된다.