2013-10-29 3 views
0

디스플레이 장치의 실제 물리적 종횡비 (또는 심지어 크기)를 폴링 할 수있는 방법이 있습니까 (디스플레이 모드 해상도가 아닌 화면 자체)? ... 올바른 드라이버가 모니터에 설치되었지만 올바르게 작동합니까? 모든 Win32 플랫폼에서 작동하는 Win32 API 호출을 찾고 있습니다.Win32 디스플레이 장치 화면 비율

답변

0

GetDeviceCaps()를 사용하여 데스크톱 DC에 해당하는 장치의 종횡비를 결정하는 가장 가까운 방법입니다. 내 코드의 스 니펫 ...

 HWND hDesktopWnd = GetDesktopWindow(); 
    HDC hDC = GetDC(hDesktopWnd); 

    if(hDC != NULL) 
    { 
     float dw = (float)GetDeviceCaps(hDC, HORZSIZE); 
     float dh = (float)GetDeviceCaps(hDC, VERTSIZE); 
     ReleaseDC(hDesktopWnd, hDC); 

    // Equivalent of reducing a fraction 
     if(dw > dh) 
     { 
      dw /= dh; 
      dh = 1.0f; 
     } 
     else 
     { 
      dh /= dw; 
      dw = 1.0f; 
     } 

     wcp.fAspectNumerator = dw; 
     wcp.fAspectDenominator = dh; 
    } 
+0

멀티 모니터 시스템의 의미를 숙고 해 보셨습니까? 왜 GetDesktopWindow를 0을 전달하기보다는 GetDC로 전달 했습니까? –

+0

나는 사용중인 시스템에 이중 모니터를 가지고 있습니다. 잘 작동하는 것 같습니다. 기본 모니터의 크기 만 파악합니다. –

+0

또한 DC를 릴리스하는 핸들이 필요했기 때문에 GetDC (NULL)에 대해 확신하지 못했습니다. 또는 적어도 그렇게 가정했습니다. –