强行兼容高DPI易语言源码

资源介绍:

兼容高DPI是个困难的活儿,除非你是用的WPF写界面,其他编程语言都很麻烦(特别是易语言,原生窗体基本别想兼容了。。)

如果自己的程序不针对高DPI做修改,轻则出现界面显示模糊,重则界面显示错乱、文字超出边界。为了让自己的程序能凑合用,我才搞了这个“强行兼容”高DPI。

什么叫“强行兼容”呢?如果是正常兼容,那界面尺寸应该有所放大,放大后依然能正常显示。我这个,只是告诉系统:“我自己能处理高DPI,你别插手捣乱”,但是实际上啥也没做。实际效果就是,界面尺寸跟96DPI(100%缩放)时一样,几乎所有界面都能正常显示(已知简单超文本框有问题)。弊端就是界面显示略小,如果用户屏幕分辨率太高(如2K、4K分辨率),则可能会看不清界面。

毕竟强行兼容嘛,先保证能用,至于用得舒服不舒服,那以后再慢慢说~(等我有高DPI显示屏再说。。。)

我这个代码就是做了两件事:

hook GetStockObject,如果参数为DEFAULT_GUI_FONT,就返回固定的9号宋体(避免xp风格的字体缩放导致文字显示溢出)

调用SetProcessDPIAware告诉系统我自己能处理高DPI(禁用DPI虚拟化)

由于SetProcessDPIAware需要在所有界面显示前调用,所以我直接做到了模块的“_启动子程序”里,只要引入模块就会自动调用。

是的,使用方法就是如此简单,只要引入模块即可,不需要调用任何模块函数(模块里也没有能调用的函数)。

效果如下:

强行兼容高DPI.jpg

引用的strawhat模块出自“草帽变速齿轮”,很早之前在易语言论坛下载的,抱歉时间太久找不到原帖地址了。也可以用其他任意hook模块代替。

资源作者:

淡到仿若无物

资源下载:

相关文件下载地址
©下载资源版权归作者所有;本站所有资源均来源于网络,仅供学习使用,请支持正版!

强行兼容高DPI易语言源码》有0个想法

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注