我们的delphi应用程序是Per Monitor DPI识别。
当我们收到WM_DPICHANGED消息时,我们的应用程序会缩放。
我们有一位客户使用两台4K显示器,均设置为200%DPI Scaling。 当他运行我们的应用程序时,它无法正确扩展。他在Windows 10上运行。
我们发现,当我们的应用启动时,WM_DPICHANGED事件未在其PC上触发。
根据docs,在以下情况下将触发WM_DPICHANGED:
- 窗口将移至具有不同DPI的新监视器。
- 托管窗口的监视器的DPI发生了变化。
因此,根据文档,如果两台显示器都使用200%DPI Scale,那么事件似乎不应该触发。
然而,当我们设置一台带有两个显示器的PC时,每个设置为150%缩放,当我们的应用程序启动时WM_DPICHANGED 被触发,因此可以很好地扩展。
如果我们的应用程序在所描述的场景下启动时会触发WM_DPICHANGED,那么预期的行为是什么?
哪些原因可以解释我们的设置与客户设置之间的不同行为?
谢谢!