子进程窗口dpi缩放问题

时间:2015-03-25 18:55:37

标签: c# wpf winapi dpi

我们有一个应用程序(WPF),它将进程外应用程序(MFC)作为hwndhost中的子窗口托管。设置自定义DPI设置(即Windows的“显示”属性中为125%)时,子窗口无法适当缩放到DPI的更改。这是一个不是DPI Aware的遗留应用程序。当单独启动进程外应用程序时,它会根据需要进行扩展(使用Windows自动显示缩放)。是否有可能因为我们将这个流程外应用程序作为WPF窗口的子项,它是否继承了其父项的DPI意识?有什么方法可以解决这个问题吗?

我在这里发现了一个类似的问题:Win32 app not affected by dpi setting when hosted by WPF app但没有提出答案。我会评论最初的问题,看看它是否已被弄清楚,但我没有足够的代表,并想重新打开问题,看看是否有解决方案。

1 个答案:

答案 0 :(得分:0)

顶级窗口的DPI感知由拥有该顶级窗口的进程决定。在你的情况下,这是WPF窗口。系统对顶级窗口的所有子项使用相同的DPI虚拟化。

如果您希望托管子窗口虚拟化,那么您还需要将顶级窗口虚拟化。我希望你不希望发生这种情况。