문제

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를 사용해보십시오

현명한 것은 미니어를 너비에서 높이 비율로 분류하는 것입니다. 그것이 제가 요즘 많은 게임을하는 것입니다.

너비를 얻을 수 있다면 높이를 얻을 수 있습니다. 그 후, 대답은 단 하나의 작은 수학 작업 일뿐입니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top