在创作者更新中,我们添加了新的 DPI Awareness context,DPI_AWARENESS_CONTEXT_PER_MONITOR_AWARE_V2,也就是 Per-monitor DPI awareness V2。 技术上说,PMv2 是一个 DPI_AWARENESS_CONTEXT,不是进程范围内通过 PROCESS_DPI_AWARENESS 定义的 DPI awareness mode。PMv2 填补了原版 Per-monitor DPI Awareness 缺失的...
DPI_AWARENESS_CONTEXT_SYSTEM_AWARE 系統DPI 感知。 此視窗不會針對 DPI 變更進行調整。 它會查詢 DPI 一次,並在程式的存留期內使用該值。 如果 DPI 變更,程式將不會調整為新的 DPI 值。 當 DPI 從系統值變更時,系統會自動相應增加或減少。 DPI_AWARENESS_CONTEXT_PER_MONITOR_AWARE ...
第二种方式是采用Windows Api的方式,使用SetProcessDPIAware函数,此函数可以参考Windows Api函数文档(此文档已上传,请点击文末小程序下载),描述如下: 将进程默认 DPI 感知设置为系统 DPI 感知。这等效于调用DPI_AWARENESS_CONTEXT值 为DPI_AWARENESS_CONTEXT_SYSTEM_AWARE 的 SetProcessDpiAwarenessContext 同时文档给出这样...
DPI_AWARENESS_CONTEXT_UNAWARE, DPI_AWARENESS_CONTEXT_SYSTEM_AWARE, DPI_AWARENESS_CONTEXT_PER_MONITOR_AWARE, DPI_AWARENESS_CONTEXT_PER_MONITOR_AWARE_V2 };classDPIContextBlock:IDisposable{privateDPI_AWARENESS_CONTEXT resetContext;privatebooldisposed =false;publicDPIContextBlock(DPI_AWARENESS_CONT...
DPI_AWARENESS_CONTEXT_SYSTEM_AWARE 系統DPI 感知。 此視窗不會針對 DPI 變更進行調整。 它會查詢 DPI 一次,並在進程的存留期內使用該值。 如果 DPI 變更,程式將不會調整為新的 DPI 值。 當 DPI 從系統值變更時,系統會自動相應增加或減少。 DPI_AWARENESS_CONTEXT_PER_MONITOR_AWARE 每部監視器 DPI 感知。
将进程默认 DPI 感知设置为系统 DPI 感知。这等效于调用DPI_AWARENESS_CONTEXT值 为DPI_AWARENESS_CONTEXT_SYSTEM_AWARE的SetProcessDpiAwarenessContext 同时文档给出这样一句话“SetProcessDPIAware 可能已更改或不可用。请改用 SetProcessDPIAwareness。”,但是其实不妨碍我们使用 ...
请务必注意,如果应用程序具有DPI_AWARENESS_PER_MONITOR_AWARE窗口,则负责通过响应WM_DPICHANGED消息来跟踪 DPI。 示例 此代码片段演示如何在应用程序清单中将值设置为 DPI_AWARENESS_SYSTEM_AWARE。 XML复制 <dpiAwareness>System</dpiAwareness> 此代码片段演示如何在应用程序清单中将值设置为 DPI_AWARENESS_PER_MONITOR...
请务必注意,如果应用程序具有DPI_AWARENESS_PER_MONITOR_AWARE窗口,则负责通过响应WM_DPICHANGED消息来跟踪 DPI。 示例 此代码片段演示如何在应用程序清单中将值设置为 DPI_AWARENESS_SYSTEM_AWARE。 此代码片段演示如何在应用程序清单中将值设置为 DPI_AWARENESS_PER_MONITOR_AWARE。
使用SetThreadDpiAwarenessContext 的常见方案如下:从使用一个上下文 ((如 DPI_AWARENESS_CONTEXT_PER_MONITOR_AWARE)运行的线程开始,) 暂时切换到其他上下文 (DPI_AWARENESS_CONTEXT_UNAWARE) 、创建窗口,然后立即将线程上下文切换回其以前的状态。 创建的窗口的 DPI 上下文为 DPI_AWARENESS_CONTEXT_UNAWARE,而调用线程...
在创建一个窗口的前后分别调用SetThreadDpiAwarenessContext函数可以让创建的这个窗口具有单独的 DPI 感知级别。前一次是为了让窗口在创建时有一个对此线程的新的 DPI 感知级别,而后一次调用是恢复此线程的 DPI 感知级别。 关于混合 DPI 感知级别的其他内容,可以阅读官网:Mixed-Mode DPI Scaling and DPI-aware APIs -...