Windows에서 모니터가 와이드 스크린인지 여부를 감지하는 방법
-
16-09-2019 - |
문제
Windows에서 모니터가 넓은지 아닌지를 프로그래밍 방식으로 감지하는 방법이 필요합니다.
GetSystemMetrics는 데스크탑의 크기를 반환합니다. 이는 일종의 작동하지만 사용자가 1024x768에 와이드 스크린 모니터가있는 경우 비 전반적으로 잘못 분류 할 것입니다.
GetDeviceCaps는 Horzres 및 Vertres와 유사한 문제가 있으며, Horzsize 및 Vertsize조차도 넓은 모니터에서 비 전역 해상도가 사용될 때 잘못된 결과를 제공합니다.
이 문제를 안정적으로 감지하는 방법이 있습니까?
해결책
당신은 실제 물리적 크기를 통해 얻을 수 있습니다. 편리. 여기를 봐: 모니터의 올바른 물리적 크기를 얻는 방법은 무엇입니까?
다른 팁
다음은 EDID 또는 레지스트리를 엉망으로 만들지 않는 더 나은 버전입니다. 디스플레이에서 지원하는 최대 해상도가 가장 기본적으로 적합하다는 가정 (IMHO가 매우 정확함)을 만듭니다.
DEVMODEA modeInfo;
modeInfo.dmSize = sizeof(DEVMODEA);
modeInfo.dmDriverExtra = NULL;
int modeNum = 0;
int xMax = 0, yMax = 0;
while (EnumDisplaySettingsExA(0, modeNum, &modeInfo, 0)) {
++modeNum;
if (modeInfo.dmPelsWidth > xMax) {
xMax = modeInfo.dmPelsWidth;
yMax = modeInfo.dmPelsHeight;
}
}
cout << "Monitor aspect ratio : " << (double)xMax/yMax << "\n";
건배.
SystemInformation.primarymonitorsize를 사용해보십시오
현명한 것은 미니어를 너비에서 높이 비율로 분류하는 것입니다. 그것이 제가 요즘 많은 게임을하는 것입니다.
너비를 얻을 수 있다면 높이를 얻을 수 있습니다. 그 후, 대답은 단 하나의 작은 수학 작업 일뿐입니다.
제휴하지 않습니다 StackOverflow