本文记录在调试显示兼容性问题上的心得体会。
问题背景
测试反馈在Win10系统上,界面顶部有额外空白区域,在Win7上正常。在本地虚拟机中验证,能够稳定复现问题。下面是整个问题的解决流程。
问题分析与定位
通过查阅代码改动记录,发现这个问题是引入 WM_THICKFRAME 属性导致的,增加这个属性是为了解决无法响应Win+方向键的问题,没想到引入了显示兼容性问题。考虑到无法去掉WM_THICKFRAME属性,只要尝试如何解决显示兼容性问题。
由于本机是Win7,问题在Win10系统,为了验证修改,必须要让Win10虚拟机能够访问到更新后的文件,通过 Vmware的共享目录功能可实现。后续遇到了,一旦在虚拟机中打开文件,在外部编译就会碰到无法覆盖文件的问题。起初,为了解决这个问题,采用重启、注销虚拟机等方法,造成修改-验证这个迭代时间较长,后来经过多次尝试,得到最快的验证方式如下:
- 在Win7上,删除改动受影响的exe或者dll,重新编译
- 在Win10虚拟机中,通过桌面快捷方式快速执行Win7共享目录中的程序
- 执行完毕后,回到流程1
最终,按照上面这个顺序,能够较快的进行修改-验证-再修改-验证的流程。
验证环境搭建好后,寻找解决方案,问题表现为在Win10上出现额外空白行,在Win7上正常。在中文资料中找遍了,没有解决方案,转向英文世界寻找,考虑到问题的引入是增加了 WM_THICKFRAME,于是先搜索 WM_THICKFRAME 关键字,看了下这个属性的详细解释,再输入
how to draw border with WS_THICKFRAME,得到如下结果:
从画框的两处可以看到,WM_THICKFRAME的属性解释以及在Stack Overflow上面的相关问题,在github网站也能看到相关问题:
通过上述两个链接,对于这个问题的解决就够了。但通过关键词的进一步提炼和优化,按照如下图所示的搜索,更快更好的定位问题。
通过阅读问题相关链接,在结合实际情况进行调整,问题即可解决。
小结
对于系统兼容性问题,要确定一点,你肯定不是第一个遇到的,世界上这么多人在使用这么多种系统,你遇到的问题别人肯定已经遇到过,并且有了相关解决方案,你要做的是如何找到这些解决方案。
在中文网络世界寻找兼容性问题的解决方案是不靠谱的,不要在此浪费时间。
通过代码和异常现象来提取关键字,如 WM_THICKFRAME 和 white border ,务必要在Google
上搜,Bing
、Baidu
什么的都不行。