2014-10-30 11 views
3

저는 Cubase와 같은 호스트 내에서 실행되는 오디오 플러그인을 개발 중이며 높은 DPI 지원을 추가하려고합니다. 이는 내가 아는 모든 호스트 응용 프로그램이 자신을 높지 않은 DPI 인식으로 선언하므로 모든 창은 DWM에 의해 자동으로 크기가 조정되므로 문제가됩니다. 호스트 자체가 DPI 인식이 아니어도 (다른 모든 창에 대해 DWM DPI 확장을 사용하므로) 플러그인 창에 대해 DWM DPI 확장을 해제하는 방법을 찾고 있습니다. 이것이 가능한지 아는 사람이 있습니까?Windows 8에서 윈도우 당 높은 DPI 인식을 선언하십시오.

오디오 호스트와 같은 많은 플러그인을 사용하는 응용 프로그램의 경우 이는 매우 앞설 수없고 높은 DPI 인식으로 선언 할 수 없으므로 매우 실제적인 문제입니다. 이렇게하면 기존의 모든 플러그인이 손상 될 수 있습니다. 따라서 Windows가이 문제에 대한 해결책을 제공하지 않으면 우리는 항상 96 dpi의 땅에 갇혀 있습니다. 기본적으로이 과정을 설정하는 것보다 더 세분화 된 솔루션이 필요하다고 생각하므로 호스트와 플러그인은 개별적으로인지 수준을 선언 할 수 있습니다.

현재이 작업을 수행 할 수없는 경우 Microsoft 엔지니어에게 문의하여 향후 Windows 버전에 추가 할 수있는 방법이 있습니까?

+1

[마이크로 소프트 제품 버그 및 제안을 수락 (추가 정보 파일을 읽기) (http://connect.microsoft.com/). – IInspectable

+0

좋은 링크지만, 불행히도 Microsoft 제품 중 일부만이 참여하는 것 같습니다. 내가 볼 수있는 한 일반적으로 Windows에 대한 것은 없습니다. –

+6

'GetCursorPos()'를 호출 할 때 어떤 DPI에 문의해야하는지 알기 때문에 DPI 인식은 윈도우 단위가 아닌 프로세스 단위입니다. 창 핸들 매개 변수가 없습니다. 문제는 해결할 수 없습니다. –

답변

4

창당 Windows 10 주년 업데이트 이후 DPI 인식이 가능합니다. 새로운 API SetThreadDpiAwarenessContext()은 창당, 스레드 DPI 인식 당 설정하는 데 사용할 수 있습니다. 이것은 다음과 같이 수행됩니다.

  • 스레드가 이제 DPI 인식을 동적으로 변경할 수 있습니다.
  • 스레드가 만든 창의 DPI 인식은 창을 만들 때 호출 스레드의 DPI 인식에 따라 달라집니다.
  • 창에 대한 창 프로 시저가 호출되면 창은 창을 만들 때 사용중인 DPI 인식 컨텍스트로 자동 전환됩니다.

참조을 읽으십시오.

  • https://msdn.microsoft.com/en-us/library/windows/desktop/mt744321(v=vs.85).aspx
  • https://github.com/Microsoft/Windows-classic-samples/.../DPIAwarenessPerWindow/
  • +0

    이 게시물에 감사장 추가, 감사합니다! –

    +2

    흥미로운 블로그 게시물 : https://blogs.windows.com/buildingapps/2016/10/24/high-dpi-scaling-improvements-for-desktop-applications-and-mixed-mode-dpi-scaling-in- the-windows-10-anniversary-update/# UV05dJAwjyUskhrJ.97 –

    2

    운이 좋지 않습니다. DPI 인식은 프로세스 전반에 걸친 설정입니다. Windows 8.1에서는 모니터 단위로 DPI를 인식하도록 프로세스를 선언 할 수 있습니다.

    위의 Raymond가 언급했듯이 GetCursorPos과 같은 API 기능을 사용하면 창을 통과하지 못하므로 창 단위 DPI 인식 기능을 사용할 수 없습니다.

    +0

    당신은 레이몬드의 쪽지를 넣고 싶을 것입니다. 그것은 내가 말하는 클린 처입니다. –

    +0

    글쎄, 플러그인이있는 응용 프로그램은 반드시 "레거시"응용 프로그램이 아닙니다. 하지만 여기서 쉽게 해결할 수 없음을 이해합니다. –

    +0

    나는 그것을 말하지 않았다. dpi 인식으로 다시 작성하지 않는 응용 프로그램은 제가 언급 한 것입니다. –