2013-04-22 1 views
1

현재 성가신 작은 문제가 있습니다. 나는 DXGI 모드 desc를 0으로 만드는 응용 프로그램을 개발했습니다. 구조체를 호출하고 FindClosestMatchingMode()를 호출하여 광고되는 것처럼 "바탕 화면 해상도로 끌어 당깁니다".DXGI : 출력 (모니터)에서 올바른 디스플레이 모드를 얻으려고 시도합니다.

노트북이 자체 디스플레이에서 완전히 실행되면 정상적으로 작동합니다. 즉, 다른 모니터에 연결하면 광각이됩니다. 데스크탑을 확장해도 노트북 모니터의 해상도가 올바르게 유지되지만 연결된 모니터 (해상도 1080p)는 800 * 480 : 기본 해상도가됩니다. (물론 가난한 사람의 16:10이지만 ...)

해상도가 동일해도 복제 된/결합 된 모니터 (출력 장치 1 개가 있음)로 동일한 작업을 수행하면 동일한 800 * 480 쓰레기가 발생합니다.

무엇을 제공합니까? 그리고 아마도이 문제에 대해 완전히 다른 아직 기능적인 접근 방식을위한 DXGI 또는 포인터를 통해 디스플레이의 현재 모드를 적절하게 얻는 방법을 찾은 사람이 있습니까?

인생은) = 쉽게 다시 D3D9 일에

했다 - 대부분은 어떤 FindClosestMatchingMode을 돌 때() 다르게 외부 모니터에 속하는 IDXGIOutput 인스턴스에서 다르게 동작하게 호출

업데이트 (및 케이스는 일반 디스플레이와 비교하여 일반 해상도가 동일 함에도 불구하고 잘못 표시됨). 다른 모든 시스템에는이 문제가 없지만 드라이버를 포함하여이 특정 노트북을 지원할 수는 없습니다.

좋은 이전 설정 대화 상자입니다.

답변

0

가장 좋은 해결책은 아니지만, 정확한 컴퓨터에 제약을 받으면서 GetSystemMetrics() (SM_CXSCREEN/SM_CYSCREEN)를 통해 모니터의 현재 해상도를 얻었으니 기본 모니터에서만 작동하지만 다른 방법과 먹이가 있습니다 이 해상도는 FindClosestMatchingMode()에 공급 된 ModeToMatch 구조체에 전달됩니다.

그런 다음 올바른 (데스크톱) 해상도로 정착합니다.

더 나은 답변은 대단히 환영합니다.)

관련 문제