2015-01-19 2 views
0

사용자 입력을 기반으로 비행시 DPI 인식 수준을 설정하는 방법을 찾고 있습니다. 나는 this을 발견했다.DPI 인식 수준을 win32 응용 프로그램에서 동적으로 설정합니다.

인식 수준을 설정하려면 setProcessDpiAwareness 기능을 사용해야한다고 제안합니다. 그러나이 API 호출은 Windows 8.1 미리보기에서만 지원됩니다. Windows 7에서 지원되는 Dpi 인식 수준을 동적으로 설정하는 데 사용할 수있는 다른 방법이 있습니까?

미리 감사드립니다.

+0

Vista 이후 SetProcessDPIAware()를 사용할 수 있습니다. Win81이 모니터 당 DPI 주름을 추가했습니다. 창을 만들기 전에 호출해야하므로 "사용자 입력"은 환상적인 아이디어가 아닙니다. –

+0

@Hans'SetProcessDpiAwareness'는'SetProcessDpiAware'와 같지 않습니다. –

답변

2

Windows 8.1에서 모니터 별 DPI 인식이 시작되기 전에 Vista에서 지원되는 SetProcessDPIAware이 지원됩니다.

그러나 런타임에이 결정을 내릴 수있는 것은 매우 드문 일입니다. 가장 좋은 방법은 응용 프로그램이 높은 DPI 인식을 위해 설계되었으며 인식이 응용 프로그램 매니페스트에 기록된다는 것입니다.

+0

답장을 보내 주셔서 감사합니다. 그러나 "SetProcessDPIAware는 요구 사항 섹션에 지정된 운영 체제에서 사용할 수 있으며 이후 버전에서는 변경되거나 사용할 수 없으며 대신 SetProcessDPIAwareness를 사용하십시오." 이것은 거의 안전하지 않은 것처럼 보입니다. 나는 더 안전한 편이되고 싶다. – Abhishek

+0

현재 매니페스트 메소드를 사용 중입니다. 그러나 많은 자원 (글꼴, 제어, 그래픽 등)이 있습니다. 응용 프로그램이 사용자에게 좋지 않은 경우 DWM 크기 조정을 사용하고 싶습니다. 그래서 동적 인 dpi 인식을 false로 설정하여 DWM 스케일링을 허용하려고합니다. – Abhishek

+1

dpi 인식을 원하지 않으면 앱이 dpi를 인식하고 있음을 확인하지 마십시오. 런타임에 함수를 호출 할 필요가 없습니다. –

관련 문제