我有一个Win32应用程序,我已经实现了groupWndProc()
回调,我收到的通知除了WM_DPICHANGED
。
我连接了两台显示器:一台普通显示器和一台4k显示器。我希望在将应用程序从一台显示器移动到另一台显示器时收到通知。
答案 0 :(得分:4)
使用SetProcessDpiAwareness
Process_Per_Monitor_DPI_Aware
确保您的流程可以识别DPI,并且根据the tutorial on msdn,您必须在创建Windows之前调用此流程。在查询时确保您的监视器使用GetDpiForMonitor
返回不同的dpis。
供参考,请查看High DPI Reference。
或者将应用程序清单设置为per this tutorial。将dpiAware
元素添加到应用程序清单中:
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0" xmlns:asmv3="urn:schemas-microsoft-com:asm.v3" >
<asmv3:application>
<asmv3:windowsSettings xmlns="http://schemas.microsoft.com/SMI/2005/WindowsSettings">
<dpiAware>True/PM</dpiAware>
</asmv3:windowsSettings>
</asmv3:application>
</assembly>
并确保您的编译器包含清单:将清单文件添加到项目属性 - &gt;配置属性 - &gt;清单工具 - &gt;额外的清单文件。