一款win10系统桌面应用程序,基于c++做的一个程序启动外壳,外壳主要作用是启动java虚拟机,调jar包启动程序。
当程序启动时,系统设置不同DPI,java本地拿dpi的值与实际的dpi不符。
于是我们主管要求我用c++调本地方法,打包成dll动态库,让他用jna调用!竟然还是获取不到实际的dpi值!
于是乎,我在网上查找资料,遂发现我们的应用程序没有设置进程默认的dpi感知模式,在程序中加了一行代码解决!
SetProcessDpiAware();
若是没有设置dpi感知,无论你怎么修改系统缩放比例,拿到的值永远都是96!