superman 发表于 2009-9-4 12:52:07

加载皮肤后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
;=========================================

superman 发表于 2009-9-5 11:12:46

自己顶一下~希望有人能看到

superman 发表于 2009-9-6 10:49:55

再顶一下。。高手help

menfan 发表于 2009-9-6 11:14:35

这就是应用皮肤的代价,自己取舍吧,还有一些皮肤缺陷哦。。

afan 发表于 2009-9-6 11:45:43

用过一两次皮肤,觉得缺陷过多... 现在都不用了,实在需要就用图片组合拼画了,效果更炫

superman 发表于 2009-9-6 16:28:58

是啊,郁闷死了~不加皮肤游不会有这种问题,其他用皮肤的达人们有遇到这个问题么?

My2009 发表于 2009-9-8 09:34:40

有皮肤有时就是这样,也是没办法的事,我有时也只能舍它而去!

superman 发表于 2009-9-8 16:05:51

看来只有舍它而去了。。唉。。失望

webberliuwei 发表于 2009-9-13 12:52:24

用Uskin吧。。

lynfr8 发表于 2009-9-13 15:33:49

试试其他皮肤
如果还不行就放弃皮肤吧
简洁也是一种美
关键还是代码写得如何

316428696 发表于 2009-10-25 23:56:45

设置透明就好了吧?

316428696 发表于 2009-10-26 00:19:21

GUICtrlSetBkColor($Tab1, $GUI_BKCOLOR_TRANSPARENT)
设置背景色透明就可以了!
$Tab1 就是你要透明的空间ID

kn007 发表于 2009-10-26 15:46:16

皮肤问题

lin0308 发表于 2009-12-4 23:45:09

跟皮肤有关吧

awingu 发表于 2009-12-9 00:59:01

研究老半天,到官方下载了新的皮肤,现在也用不了,显示不出来貌似dll文件没跟上去的原因吧。发现用了皮肤是在受不了。
页: [1] 2
查看完整版本: 加载皮肤后Tab中的控件不能正常显示?