易语言透明标签bug完美解决方案
洪雨搞软件这些年,一直在研究功能,对软件界面要求很低,也没什么研究,一般用皮肤模块一套就完事。
最近在做一个仿软,需要自绘制方面的知识。可我完全不会,就只能用笨办法,纯组件来做……
众所周知,纯组件做效果,很大程度上是需要透明标签的。
于是发现透明标签的一个bug……
就是当透明标签的背景是动态的时候,比如有动图的图片框,或者图片框底图或颜色变化,或者背景是图片按钮超级按钮这样的。就会把透明标签的字刷掉。也可以说是覆盖掉。透明标签直接消失了。
如果是静态背景就没有问题。
这个bug困扰了我整整一天。后来无意中发现,如果背景不是按钮,而是图片框的话,把透明标签镶嵌在图片框上,透明标签就不会被刷掉。
这是为啥?
洪雨当时感觉,应该是因为图片框成为了透明标签的父窗口,所以才这样的。
于是用了精易模块的窗口置父命令,发现不行。
后来又兜兜转转浪费了很多时间,查了很多资料。发现全网几乎都在问这个问题,没有解决这个问题的。
最后是在一个不太想关的源码里找到了答案。赶紧总结记录一下。
关键解决方案还是要给透明标签置父句柄,只要动态背景成为了透明标签的父窗口,透明标签就不会被刷掉。
但是,精易模块的窗口置父,是不行的。要用到API命令
SetParent (, ) 第一个参数的子窗口句柄,第二个参数是父窗口句柄。
用API窗口置父,就可以实现功能。
后来,我查询了一下精易模块,发现稍微新一点的版本,还有一个窗口置父彗星,是调用的这个API封装的,直接用就好了。
就此,bug完美解决。
原文转载自:http://www.zhizhuowz.com/post-689.html