이번에 윈도우 8.1 에서 윈도우 10 으로 업그레이드를 하게 되었는데, 문제없이 잘 동작하던 프로그램이 갑자기 말썽을 일으켰다. 

 

주 모니터에서는 잘 시뮬레이팅 되는 프로그램이 보조 모니터에서는 계속 이상한 결과를 계속 보여줬는데, 결과적으로 마우스 좌표가 이상하게 들어와서 계속 시뮬레이팅이 이상하게 되었던것이었다.

 

이리저리 알아 본 결과,

 

윈도우 10에 있는 "디스플레이 사용자 지정" 항목에서 "텍스트, 앱 및 다른 항목의 크기를 변경합니다" 부분이 많은 영향을 미치는거 같다.

 

 

주 모니터와 보조 모니터의 확대 % 를 같게 해줘야 같은 결과를 내는데, 두개의 확대 %가 달라서 마우스 좌표값이 다르게 입력 되었던 것이었다.

 

보조 모니터의 크기가 커서 확대를 더 많이 했더니 이러한 예상치 못한 오류를 도출하게 되었는데, 조심해야겠다.

 

혹시나 하는 마음에 다른분들도 문제가 발생 할 수도 있어서 알려드리고자 블로깅을 했습니다.

 

 

 

 

모니터 해상도, 보조 모니터 포함 해상도 및 디스플레이 정보 관련 코드

 

int mx = GetSystemMetrics(SM_CXSCREEN);    //Main monitor resolution - width

int my = GetSystemMetrics(SM_CYSCREEN);    //Main monitor resolution - height

int wx = GetSystemMetrics(SM_CXVIRTUALSCREEN);    //Whole resolution - main + sub monitor - width

int wy = GetSystemMetrics(SM_CYVIRTUALSCREEN);    //Whole resolution - main + sub monitor - height

int sx = wx - mx;    //Sub monitor resolution - width

int sy = wy - my;    //Sub monitor resolution - height

int MonitorCount = GetSystemMetrics(SM_CMONITORS);    //Monitor count

 

 

모니터 정보

 

HMONITOR hMon = MonitorFromWindow(GetSafeHwnd(), MONITOR_DEFAULTTONEAREST);

MONITORINFO monInfo;

ZeroMemory(&monInfo, sizeof(MONITORINFO));

monInfo.cbSize = sizeof(MONITORINFO);

GetMonitorInfo(hMon, &monInfo);

 

 

 

Posted by Tommy™
,