我有一个使用 MFC 在 VS2008 中创建的程序。现在我已经对其进行了修改,使其成为“Per Monitor DPI-Aware”,几乎完成了。我已经修改了清单并处理了 WM_DPICHANGE 消息。但是还有一个问题:
我使用CFileDialog类显示打开/保存对话框,并使用SHBrowseForFolder函数显示文件夹选择对话框。但是所有这些对话框都不是“ Per Monitor DPI-Aware”,当您在具有不同 DPI 设置的监视器之间移动它们时,它们不会调整它们的 UI。
我使用 spy++ 来监视这些对话框的消息,我发现他们可以收到 WM_DPICHANGED 消息,但他们只是不处理它。
我已经在 Windows 10 上测试了 notepad.exe 中的打开文件对话框,它运行良好。
有谁知道如何使这些对话框“每监视器 DPI-Aware”?
--------编辑--------
还有两个问题:
- 当我将窗口移动到具有不同 DPI 的监视器时,窗口会自行调整大小,但标题栏的高度和标题字体大小不会改变。
- 复选框控件的框大小也没有改变。
我觉得这些问题可能有某种联系,但我想不通。
--------悲伤的消息--------
我用VS2013编译了微软的“DPI Tutorial Sample”,也出现了同样的问题。
https://code.msdn.microsoft.com/DPI-Tutorial-sample-64134744