洪雨搞軟件這些年,一直在研究功能,對軟件界面要求很低,也沒什么研究,一般用皮膚模塊一套就完事。
最近在做一個仿軟,需要自繪制方面的知識。可我完全不會,就只能用笨辦法,純組件來做……
眾所周知,純組件做效果,很大程度上是需要透明標簽的。
於是發現透明標簽的一個bug……
就是當透明標簽的背景是動態的時候,比如有動圖的圖片框,或者圖片框底圖或顏色變化,或者背景是圖片按鈕超級按鈕這樣的。就會把透明標簽的字刷掉。也可以說是覆蓋掉。透明標簽直接消失了。
如果是靜態背景就沒有問題。
這個bug困擾了我整整一天。后來無意中發現,如果背景不是按鈕,而是圖片框的話,把透明標簽鑲嵌在圖片框上,透明標簽就不會被刷掉。
這是為啥?
洪雨當時感覺,應該是因為圖片框成為了透明標簽的父窗口,所以才這樣的。
於是用了精易模塊的窗口置父命令,發現不行。
后來又兜兜轉轉浪費了很多時間,查了很多資料。發現全網幾乎都在問這個問題,沒有解決這個問題的。
最后是在一個不太想關的源碼里找到了答案。趕緊總結記錄一下。
關鍵解決方案還是要給透明標簽置父句柄,只要動態背景成為了透明標簽的父窗口,透明標簽就不會被刷掉。
但是,精易模塊的窗口置父,是不行的。要用到API命令
SetParent (, ) 第一個參數的子窗口句柄,第二個參數是父窗口句柄。
用API窗口置父,就可以實現功能。
后來,我查詢了一下精易模塊,發現稍微新一點的版本,還有一個窗口置父彗星,是調用的這個API封裝的,直接用就好了。
就此,bug完美解決。
原文轉載自:http://www.zhizhuowz.com/post-689.html
