CAFE

[6.0]강좌게시판

[6.0]윈도우 API 라는게 대체 뭐야? # 04편 - 화면의 해상도를 구해보자!

작성자whitebono|작성시간08.07.11|조회수1,132 목록 댓글 10

 

 [6.0] 윈도우 API 라는게 대체 뭐야? # 04편 - 화면의 해상도를 구해보자!

 

 드디어 '윈도우 api라는게 대체 뭐야?' 의 후속편 04편이 나왔습니다.

 

 이번 강좌는 화면의 해상도를 구해보겠습니다. 우선 강좌 주제가 'API를 배우는 것'이니만큼..

 

 Screen.Width \ Screen.TwipsPerPixelX 혹은 Screen.Height \ Screen.TwipsPerPixelY 형태로

 

 아주 간단히 해상도(가로, 세로)를 취득할 수 있는데 이건 제외하겠습니다..

 

 

 - GetDesktopWindow와 GetWindowRect를 이용한 해상도 구하기.

 

Private Declare Function GetDesktopWindow Lib "user32.dll" () As Long
Private Declare Function GetWindowRect Lib "user32.dll" (ByVal hwnd As Long, ByRef lpRect As RECT) As Long
Private Type RECT
    Left As Long
    Top As Long
    Right As Long
    Bottom As Long
End Type

Private Sub Form_Load()
    Dim hWndDesktop   As Long, rc   As RECT, ret   As Long ' 관련 구조체와 변수 선언
   
    ' 바탕 화면(Desktop) 창의 핸들을 구한다.
    hWndDesktop = GetDesktopWindow
   
    ' 창의 사각 영역(RECT)를 GetWindowRect api로 구한다.
    ret = GetWindowRect(hWndDesktop, rc)
   
    ' 화면의 해상도를 취득한다.
    MsgBox (rc.Right - rc.Left) & ", " & (rc.Bottom - rc.Top), vbExclamation, "화면의 해상도"
End Sub

한번 해보세요.

 

아마 여러분의 모니터 해상도 (필자의 경우 1600, 1050)가 출력될 것 입니다.

 

하나씩 봅시다. 우선 윈도우는 하나의 바탕 화면 창이 있고 이를 Desktop Window라고 합니다. 직역하면 바탕화면 창이지요.

 

이 밑에 자식 관계로 여러 프로그램이 실행되는데, 쉽게 말해 모든 창의 최종 부모는 이 GetDesktopWindow() 이라고 할 수 있습니다. ( 이렇게만 알아두세요. 나중에 틀려질 수 있겠지만. )

 

이를 그림으로 표현하면 대충 아래와 같습니다.

 

이미지를 클릭하면 원본을 보실 수 있습니다.

 

 

Window(창) 이라고 하는 객체는 윈도우에서 관리하는 하나의 표현 단위로, 부모/자식 관계와 소유관계가 존재합니다.

 

나중에 배우시겠지만, 부모/자식 관계에서 자식 창은 Window Style에 WS_CHILD가 혼합되어있고,

 

소유 관계의 창은 Window Style에 WS_POPUP이 혼합되어있습니다.

 

 

자식 창은 부모창을 꺼도 자식 창은 살아있지만, 소유 창은 부모창을 끄면 소멸됩니다.

 

이게 창(Window)에 대한 간단한 기초이론입니다. 이 창들은 모두 핸들(handle)이라고 하는 특별한

 

수치를 갖는데, 이를 이용해서 해당 창에 접근할 수 있습니다.

 

 

이번 강좌는 여기서 마치겠습니다. 감사합니다.

 

다음검색
현재 게시글 추가 기능 열기

댓글

댓글 리스트
  • 작성자바 람남 | 작성시간 10.12.27 잘봣습니
  • 작성자바 람남 | 작성시간 10.12.27 잘봣습니
  • 작성자바 람남 | 작성시간 10.12.27 잘봣습니
  • 작성자바 람남 | 작성시간 10.12.27 잘봣습니다~
  • 작성자바 람남 | 작성시간 10.12.27 잘봣습니다~
댓글 전체보기
맨위로

카페 검색

카페 검색어 입력폼