易语言透明标签bug完美解决方案


     洪雨搞软件这些年,一直在研究功能,对软件界面要求很低,也没什么研究,一般用皮肤模块一套就完事。

    最近在做一个仿软,需要自绘制方面的知识。可我完全不会,就只能用笨办法,纯组件来做……

    众所周知,纯组件做效果,很大程度上是需要透明标签的。

    于是发现透明标签的一个bug……

    就是当透明标签的背景是动态的时候,比如有动图的图片框,或者图片框底图或颜色变化,或者背景是图片按钮超级按钮这样的。就会把透明标签的字刷掉。也可以说是覆盖掉。透明标签直接消失了。

    如果是静态背景就没有问题。

    这个bug困扰了我整整一天。后来无意中发现,如果背景不是按钮,而是图片框的话,把透明标签镶嵌在图片框上,透明标签就不会被刷掉。

    这是为啥?

    洪雨当时感觉,应该是因为图片框成为了透明标签的父窗口,所以才这样的。

    于是用了精易模块的窗口置父命令,发现不行。

    后来又兜兜转转浪费了很多时间,查了很多资料。发现全网几乎都在问这个问题,没有解决这个问题的。

    最后是在一个不太想关的源码里找到了答案。赶紧总结记录一下。

    关键解决方案还是要给透明标签置父句柄,只要动态背景成为了透明标签的父窗口,透明标签就不会被刷掉。

    但是,精易模块的窗口置父,是不行的。要用到API命令

    SetParent (, ) 第一个参数的子窗口句柄,第二个参数是父窗口句柄。

    用API窗口置父,就可以实现功能。

    后来,我查询了一下精易模块,发现稍微新一点的版本,还有一个窗口置父彗星,是调用的这个API封装的,直接用就好了。

    就此,bug完美解决。

原文转载自:http://www.zhizhuowz.com/post-689.html