附件(100.7KB) Clock.zip本尊在此,有师弟告诉我这里看到个帖子有关我的程序,注册了个账号进来看看,看到24年前的上古文物还能发挥作用,挺高兴 ^_^
翻了下帖子看了下问题,测试了一下果然如此,跟踪了一下,找到了原因。
这个程序从Win95开始用,到Win XP、Win7、Win11,基础功能都没问题,因为用的是最基础的Windows API,不依赖任何第三方发行库,所以底层兼容性很好,除非Windows废了,否则这些API不会变,如果依赖VB、VC一类的runtime库,那早就不能用了。
问题出在Win7之后,为了应对高分辨率显示器(2K、4K屏)文字过小的问题,Windows加了一个屏幕缩放的功能,例如屏幕放大200%时,3840x2160分辨率实际按一半分辨率1920*1080显示,对应到底层API,就是取物理分辨率还是逻辑分辨率的区别。
2001年的时候两个分辨率没啥区别,程序取的是物理分辨率,工作正常。现在使用的话,如果屏幕没有缩放也没有问题,因为两个分辨率一样。但是设置屏幕放大的时候,两个分辨率就不一样了,按物理分辨率来移动窗口,就移到屏幕外面去了。
找到了原因就很简单了,更新了一版程序,就改了个取屏幕分辨率时使用逻辑分辨率的算法,就一切正常了。
新版本程序在附件里面,大家自己取用!
※ 修改:·luoyunbin 于 Dec 1 11:51:41 2025 修改本文·[FROM: 123.121.72.*]
※ 来源:·水木社区
http://www.mysmth.net·[FROM: 123.121.72.*]
修改:luoyunbin FROM 123.121.72.*
FROM 123.121.72.*