我有一个在VS2008中用MFC创建的程序。
现在我已经修改它,使其成为“适应每个显示器DPI”,并且几乎完成了。我修改了清单并处理了WM_DPICHANGE消息。但是还有一个问题:
我使用CFileDialog类来显示打开/保存对话框,并使用SHBrowseForFolder函数来显示文件夹选择对话框。但是所有这些对话框都不是“适应每个显示器DPI”,当您将它们移动到具有不同DPI设置的显示器之间时,它们不会调整其UI。
我使用spy ++来监视这些对话框的消息,发现它们可以接收WM_DPICHANGED消息,但它们只是不处理它。
我已经在Windows 10上测试了记事本中的打开文件对话框,它完美地工作。
有人知道如何使这些对话框“适应每个显示器DPI”吗?
--------编辑--------
还有两个问题:
1.当我将窗口移动到具有不同DPI的监视器上时,窗口会自动调整大小,但其标题栏高度和标题字体大小没有更改。 2.复选框控件的框大小也没有更改。
我觉得这些问题可能有某种联系,但我无法弄清楚。
--------坏消息--------
我用VS2013编译了微软的“DPI教程示例”,它也有同样的问题。
我使用CFileDialog类来显示打开/保存对话框,并使用SHBrowseForFolder函数来显示文件夹选择对话框。但是所有这些对话框都不是“适应每个显示器DPI”,当您将它们移动到具有不同DPI设置的显示器之间时,它们不会调整其UI。
我使用spy ++来监视这些对话框的消息,发现它们可以接收WM_DPICHANGED消息,但它们只是不处理它。
我已经在Windows 10上测试了记事本中的打开文件对话框,它完美地工作。
有人知道如何使这些对话框“适应每个显示器DPI”吗?
--------编辑--------
还有两个问题:
1.当我将窗口移动到具有不同DPI的监视器上时,窗口会自动调整大小,但其标题栏高度和标题字体大小没有更改。 2.复选框控件的框大小也没有更改。
我觉得这些问题可能有某种联系,但我无法弄清楚。
--------坏消息--------
我用VS2013编译了微软的“DPI教程示例”,它也有同样的问题。
https://code.msdn.microsoft.com/DPI-Tutorial-sample-64134744
IFileOpenDialog
。这些在Windows Vista及更高版本上可用,并且应该已经支持DPI感知。在较旧的操作系统上回退到旧的对话框。 - Cody Gray