2014-03-06 2 views
1

Google에서 검색했지만 답변을 찾을 수 없으므로 누군가 알고 있다면 매우 감사 할 것입니다.활성화 된 다중 디스플레이에서 화면 해상도를 식별하는 방법은 무엇입니까?

명령 줄 또는 일부 WinApi를 사용하여 다중 디스플레이의 상태를 확인하고 싶습니다. 예 : "확장 된 화면"또는 "중복 된 화면"으로 설정 한 경우이를 확인할 수 있어야합니다. 어디서부터 시작해야할지 모릅니다.

덕분에 많은

나는 WinAPI를 EnumDisplayMonitors 기능을 시작할 것
+0

좋은 질문입니다! +1 – duDE

답변

2

: http://msdn.microsoft.com/en-us/library/dd162610%28VS.85%29.aspx

BOOL EnumDisplayMonitors(
    _In_ HDC hdc, 
    _In_ LPCRECT lprcClip, 
    _In_ MONITORENUMPROC lpfnEnum, 
    _In_ LPARAM dwData 
); 
당신은 다음과 같이 NULL로 처음 2 개 매개 변수를 설정하는이 함수를 호출 할 필요가

:

EnumDisplayMonitors(NULL, NULL, MyPaintEnumProc, 0); 

//Enumerates all display monitors. 
//The callback function receives a NULL HDC. 

이제 MonitorEnumProc 콜백 함수가 생겼습니다 : http://msdn.microsoft.com/en-us/library/dd145061%28v=vs.85%29.aspx

(210)
BOOL CALLBACK MonitorEnumProc(
    _In_ HMONITOR hMonitor, 
    _In_ HDC hdcMonitor, 
    _In_ LPRECT lprcMonitor, 
    _In_ LPARAM dwData 
); 

당신은 다시 lprcMonitor 채워지 wiil :

RECT 구조에 대한 포인터. hdcMonitor가 NULL이 아닌 경우이 사각형은 hdcMonitor로 식별되는 장치 컨텍스트의 클리핑 영역과 디스플레이 모니터 사각형 인 의 교차점입니다. 사각형 좌표는 장치 컨텍스트 좌표입니다. 당신이 확장 모드 (의 구형이 다른) 또는 중복이 있는지 여부를 결정할 수있는 모든 모니터에 대해이 값을 기준으로

If hdcMonitor is NULL, this rectangle is the display monitor rectangle. The rectangle coordinates are virtual-screen coordinates. 

(그들은 동일).

HTH - 행운을 빌어 요!

+0

고마워요! 작은 q, MyPaintEnumProc은 무엇입니까? VS가 그것을 인식하지 못합니다. 어떤 유형이어야 하는가? 콜백 기능에 어떻게 연결되어 있습니까? (그것은 "초보자"질문에 대해 유감스럽게 생각하는 첫 번째 C++ 프로그램입니다.) – user1386966

+0

MyPaintEnumProc은 콜백 함수 (MonitorEnumProc의 일종)에 대한 포인터입니다. EnumDisplayMonitors를 호출하기 전에 다음과 같이 선언해야합니다. BOOL CALLBACK MyPaintEnumProc ( HMONITOR hMonitor, HDC hdcMonitor, LPRECT lprcMonitor, LPARAM dwData ) {/ * do something * /} – duDE

+1

감사합니다! 이제 시도해 보겠습니다. – user1386966