小编Cas*_*Lee的帖子

使Windows通用对话框"每个监视器DPI感知"

我有一个在VS2008中使用MFC创建的程序.现在我已经修改它以使其成为"Per Monitor DPI-Aware",它几乎已经完成了.我修改了清单并处理了WM_DPICHANGE消息.但仍有一个问题:

我使用CFileDialog类来显示打开/保存对话框,并使用SHBrowseForFolder函数显示文件夹选择对话框.但是,所有这些对话都是 "每个监视器DPI感知",当你与不同的DPI设置显示器之间移动他们,他们不会调整自己的UI.

我使用spy ++来监视这些对话框的消息,我发现它们可以接收WM_DPICHANGED消息,但它们只是不处理它.

我已经在Windows 10上的notepad.exe中测试了打开的文件对话框,它运行得很好.

有谁知道如何使这些对话框"Per Monitor DPI-Aware"?

-------- 编辑 --------

还有两个问题:

  1. 当我将窗口移动到具有不同DPI的监视器时,窗口会自行调整大小,但标题栏和标题字体大小的高度不会更改.
  2. 复选框控件的框大小也不会更改.

我觉得这些问题可能有某种联系,但我无法弄清楚.

-------- SAD NEWS --------

我用VS2013编译了microsoft的"DPI Tutorial Sample",它也有同样的问题.

https://code.msdn.microsoft.com/DPI-Tutorial-sample-64134744

windows mfc dpi dpi-aware

7
推荐指数
1
解决办法
1418
查看次数

标签 统计

dpi ×1

dpi-aware ×1

mfc ×1

windows ×1