이번에 윈도우 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);
'[ Topics ] > C/C++' 카테고리의 다른 글
Stack Overflow 스택 오버플로우, 그리고 메모리 할당 (0) | 2016.11.24 |
---|---|
ASSERT 매크로 사용법 (참고) (0) | 2015.07.20 |
STL의 map 과 multimap의 간단한 설명 및 실사용 예제 (0) | 2014.07.10 |
문자타입간의 데이터 복사방법(wchar_t, char*, LPCTSTR) (0) | 2014.04.08 |
시스템 타이머를 통해 FPS 구하기 (6) | 2013.12.25 |