找回密码
 加入
搜索
查看: 4185|回复: 18

加载皮肤后Tab中的控件不能正常显示?

[复制链接]
发表于 2009-9-4 12:52:07 | 显示全部楼层 |阅读模式
本帖最后由 superman 于 2009-9-16 22:53 编辑

相信大家都有试过加载皮肤,但是最近发现一个问题,在加载皮肤后发现原来tab中的按钮等控件不能正常显示?如下图
1.利用autoit原有的tab例子加载皮肤后

2.当有其他页面弹出来遮挡tab中的内容时会出控件消失的情况(如下两图)

弹出页取消后变成这样了。

这是为什么呢?有人碰到么?望高手解答~谢谢!
代码如下:
#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
;=========================================
 楼主| 发表于 2009-9-5 11:12:46 | 显示全部楼层
自己顶一下~希望有人能看到
 楼主| 发表于 2009-9-6 10:49:55 | 显示全部楼层
再顶一下。。高手help
发表于 2009-9-6 11:14:35 | 显示全部楼层
这就是应用皮肤的代价,自己取舍吧,还有一些皮肤缺陷哦。。
发表于 2009-9-6 11:45:43 | 显示全部楼层
用过一两次皮肤,觉得缺陷过多... 现在都不用了,实在需要就用图片组合拼画了,效果更炫
 楼主| 发表于 2009-9-6 16:28:58 | 显示全部楼层
是啊,郁闷死了~不加皮肤游不会有这种问题,其他用皮肤的达人们有遇到这个问题么?
发表于 2009-9-8 09:34:40 | 显示全部楼层
有皮肤有时就是这样,也是没办法的事,我有时也只能舍它而去!
 楼主| 发表于 2009-9-8 16:05:51 | 显示全部楼层
看来只有舍它而去了。。唉。。失望
发表于 2009-9-13 12:52:24 | 显示全部楼层
用Uskin吧。。
发表于 2009-9-13 15:33:49 | 显示全部楼层
试试其他皮肤
如果还不行就放弃皮肤吧
简洁也是一种美
关键还是代码写得如何
发表于 2009-10-25 23:56:45 | 显示全部楼层
设置透明就好了吧?
发表于 2009-10-26 00:19:21 | 显示全部楼层
GUICtrlSetBkColor($Tab1, $GUI_BKCOLOR_TRANSPARENT)
设置背景色透明就可以了!
$Tab1 就是你要透明的空间ID
发表于 2009-10-26 15:46:16 | 显示全部楼层
皮肤问题
发表于 2009-12-4 23:45:09 | 显示全部楼层
跟皮肤有关吧
发表于 2009-12-9 00:59:01 | 显示全部楼层
研究老半天,到官方下载了新的皮肤,现在也用不了,显示不出来貌似dll文件没跟上去的原因吧。发现用了皮肤是在受不了。
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-6-26 11:23 , Processed in 0.108858 second(s), 21 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表