IDL/Miscellaneous

데스크탑 화면 크기 정보를 IDL에서 확인하는 방법

이상우_IDL 2014. 9. 4. 17:21
728x90
반응형

오늘은 IDL을 사용하고 있는 컴퓨터의 데스크탑 화면 크기를 IDL에서 확인하는 방법에 관하여 소개해보고자 합니다. 예를 들면, 현재 사용중인 컴퓨터 화면의 가로 및 세로 방향의 화소 크기가 1920X1080라고 한다면, 이러한 정보를 확인해주는 IDL의 내장 기능들이 있습니다. 가장 쉽게 사용할 수 있는 것은 GET_SCREEN_SIZE라는 함수입니다. 사용법은 아래와 같이 간단합니다.


IDL> PRINT, GET_SCREEN_SIZE()

        1920        1080


그런데 많이들 사용하시는 MS 윈도우즈의 경우, 하단에 태스크바(Task Bar)가 자리하기 때문에 실제로 가용한 화면 크기는 세로 방향의 경우 저 1080이라는 값보다는 좀 작습니다. 이렇게 "가용한" 화면 크기는 GET_SCREEN_SIZE 함수가 전달해주지는 않습니다. 따라서 다른 방법을 써야 하는데요. IDL에서 지원되는 IDLsysMonitorInfo라는 객체 클래스를 사용하는 방법이 있습니다. 객체라는 말이 나온다고 겁먹을 필요는 없습니다. 그냥 다음과 같은 내용만 따라하시면 됩니다.


IDL> oMonInfo = OBJ_NEW('IDLsysMonitorInfo')

IDL> rects = oMonInfo -> GetRectangles(Exclude_Taskbar=1)

IDL> PRINT, rects

           0           0        1920        1024


이와 같이 얻어지는 rects라는 배열의 세번째 및 네번째 값들만 뽑아내면 됩니다. 특히 네번째 값이 바로 새로 방향의 실제 "가용한" 화면 크기가 되겠지요. 제가 윈도우즈 8.1에서 테스트해본 바로는 이 크기가 1024로 나옵니다. 하단의 태스크바가 56개의 픽셀들을 잡아먹고 있다는 얘기입니다. 물론 이러한 값은 OS 버전에 따라 다를 수도 있습니다.


그런데 위와 같은 내용이 MS 윈도우즈가 아닌 다른 OS들, 즉 Mas OS, Linux 등에서는 좀 달라집니다. 다른 OS들에서는 GET_SCREEN_SIZE 함수가 돌려주는 값이 실제 "가용한" 화면 크기입니다. 즉, "가용한" 화면 크기를 확인하기 위하여 위의 설명처럼 IDLsysMonitorInfo 객체를 사용할 필요가 없습니다. 예를 들어, Mac OS의 경우는 상단에 태스크바가 위치하는데요. 제가 사용중인 Mac OS에서 테스트해보니까 이 태스크바가 22개의 픽셀들을 잡아먹고 있더군요. 따라서 화면 크기는 1920X1200으로 설정되어 있더라도, GET_SCREEN_SIZE 함수로 얻은 화면 크기는 1920X1178로 나옵니다. 이러한 OS별 차이점만 주의하면 되겠습니다.

반응형