加载皮肤后Tab中的控件不能正常显示?
本帖最后由 superman 于 2009-9-16 22:53 编辑相信大家都有试过加载皮肤,但是最近发现一个问题,在加载皮肤后发现原来tab中的按钮等控件不能正常显示?如下图
1.利用autoit原有的tab例子加载皮肤后
http://images.blogcn.com//2009/9/4/12/webberliuwei,20090904123819461.jpg
2.当有其他页面弹出来遮挡tab中的内容时会出控件消失的情况(如下两图)
http://images.blogcn.com//2009/9/4/12/webberliuwei,20090904123819549.jpg
弹出页取消后变成这样了。
http://images.blogcn.com//2009/9/4/12/webberliuwei,20090904123819619.jpg
这是为什么呢?有人碰到么?望高手解答~谢谢!
代码如下:#include <GUIConstantsEx.au3>
Global $Form
Opt("OnExitFunc","Quit");设置在 AutoIt 退出时将调用的函数(Quit).
Dim $dll,$bf=@ScriptDir&"\sys\skin.skf" ;皮肤文件路径
_SkinGUI(@ScriptDir&"\sys\SkinCrafterDll.dll", $bf, $Form);
Local $tab, $tab0, $tab0OK, $tab0input
Local $tab1, $tab1combo, $tab1OK
Local $tab2, $tab2OK, $msg
$Form=GUICreate("My GUI Tab"); will create a dialog box that when displayed is centered
GUISetBkColor(0x00E0FFFF)
GUISetFont(9, 300)
$tab = GUICtrlCreateTab(10, 10, 200, 100)
$tab0 = GUICtrlCreateTabItem("tab0")
GUICtrlCreateLabel("label0", 30, 80, 50, 20)
$tab0OK = GUICtrlCreateButton("OK0", 20, 50, 50, 20)
$tab0input = GUICtrlCreateInput("default", 80, 50, 70, 20)
$tab1 = GUICtrlCreateTabItem("tab----1")
GUICtrlCreateLabel("label1", 30, 80, 50, 20)
$tab1combo = GUICtrlCreateCombo("", 20, 50, 60, 120)
GUICtrlSetData(-1, "Trids|CyberSlug|Larry|Jon|Tylo", "Jon") ; default Jon
$tab1OK = GUICtrlCreateButton("OK1", 80, 50, 50, 20)
$tab2 = GUICtrlCreateTabItem("tab2")
GUICtrlSetState(-1, $GUI_SHOW) ; will be display first
GUICtrlCreateLabel("label2", 30, 80, 50, 20)
$tab2OK = GUICtrlCreateButton("OK2", 140, 50, 50)
GUICtrlCreateTabItem("") ; end tabitem definition
GUICtrlCreateLabel("label3", 20, 130, 50, 20)
GUISetState(@SW_SHOW)
; Run the GUI until the dialog is closed
While 1
$msg = GUIGetMsg()
If $msg = $GUI_EVENT_CLOSE Then ExitLoop
WEnd
Func _SkinGUI($SkincrafterDll, $SkincrafterSkin, $Handle)
$Dll = DllOpen($SkincrafterDll)
DllCall($Dll, "int:cdecl", "InitLicenKeys", "wstr", "1", "wstr", "", "wstr", "1@1.com", "wstr", "1")
DllCall($Dll, "int:cdecl", "InitDecoration", "int", 1)
DllCall($Dll, "int:cdecl", "LoadSkinFromFile", "wstr", $SkincrafterSkin)
DllCall($Dll, "int:cdecl", "DecorateAs", "int", $Handle, "int", 25)
DllCall($Dll, "int:cdecl", "ApplySkin")
EndFunc ;==_
;===================================================================================
;退出时析构
Func Quit()
GUISetState(@SW_HIDE)
DllCall($dll, "int:cdecl", "DeInitDecoration")
DllCall($dll, "int:cdecl", "RemoveSkin")
DllClose($dll)
;FileDelete(@ScriptDir&"\SkinCrafterDll.dll")
;FileDelete(@ScriptDir&"\skin.skf")
Exit
EndFunc
;========================================= 自己顶一下~希望有人能看到 再顶一下。。高手help 这就是应用皮肤的代价,自己取舍吧,还有一些皮肤缺陷哦。。 用过一两次皮肤,觉得缺陷过多... 现在都不用了,实在需要就用图片组合拼画了,效果更炫 是啊,郁闷死了~不加皮肤游不会有这种问题,其他用皮肤的达人们有遇到这个问题么? 有皮肤有时就是这样,也是没办法的事,我有时也只能舍它而去! 看来只有舍它而去了。。唉。。失望 用Uskin吧。。 试试其他皮肤
如果还不行就放弃皮肤吧
简洁也是一种美
关键还是代码写得如何 设置透明就好了吧? GUICtrlSetBkColor($Tab1, $GUI_BKCOLOR_TRANSPARENT)
设置背景色透明就可以了!
$Tab1 就是你要透明的空间ID 皮肤问题 跟皮肤有关吧 研究老半天,到官方下载了新的皮肤,现在也用不了,显示不出来貌似dll文件没跟上去的原因吧。发现用了皮肤是在受不了。
页:
[1]
2