Office中国论坛/Access中国论坛

标题: 请问如何通过VBA获取Windows系统中设定的显示比例? [打印本页]

作者: lzongbnew    时间: 2018-12-1 08:34
标题: 请问如何通过VBA获取Windows系统中设定的显示比例?
如图中所示的比例,谢谢!

作者: lzongbnew    时间: 2018-12-1 10:22
起因是这样的:我有一个Access程序,当系统显示比例=100%时,Access程序可以根据屏幕分辩率正确地自动调整大小(通过GetSystemMetrics());可一旦系统显示比例≠100%,程序自动调整的结果就不正常。我分析了一下原因,发现Access程序的调整比例实际上是“GetSystemMetrics()×系统显示比例“。
在网上搜了搜,没找到解决方案,但很多地方都提到了函数SetProcessDPIAware ,大意是由DPI引起的。希望有经验的大侠能指点一下。
作者: cgsilicone    时间: 2018-12-1 16:44
本帖最后由 cgsilicone 于 2018-12-1 16:51 编辑

用GetWindowRect GetDesktopWindow可以得到不同比例下桌面大小数据,应该可以反算比例。

关于自动调整大小,参看一下这个http://www.office-cn.net/thread-118480-1-1.html,这个就不受比例改变的影响。
作者: lzongbnew    时间: 2018-12-2 18:41
cgsilicone 发表于 2018-12-1 16:44
用GetWindowRect GetDesktopWindow可以得到不同比例下桌面大小数据,应该可以反算比例。

关于自动调整大 ...

谢谢指点!找了一个可以获取DPI的函数,以运行时系统的DPI和设计时系统的DPI相除即可。
作者: accben    时间: 2018-12-21 09:26
lzongbnew 发表于 2018-12-2 18:41
谢谢指点!找了一个可以获取DPI的函数,以运行时系统的DPI和设计时系统的DPI相除即可。

液晶显示器最佳分辨率只有一个,不建议调整DPI,调整后会显得更加不协调。




欢迎光临 Office中国论坛/Access中国论坛 (http://www.office-cn.net/) Powered by Discuz! X3.3