flyingrabbit 发表于 2010-6-22 18:12:06

换肤问题求助。

本帖最后由 guland 于 2010-6-23 16:39 编辑

刚换了 guland老大的Vista Style,发现一个问题,就是在调用guictrlsetdata()函数更新label的文本时不能及时显现效果,需要将鼠标在别处点击一下或者点击其他控件才能刷新,这是什么原因啊?

flyingrabbit 发表于 2010-6-22 18:14:21

回复 1# flyingrabbit


    沙发自己做

yejier1983 发表于 2010-6-22 20:19:20

观摩一下,看看怎么样

guland 发表于 2010-6-23 09:35:16

本帖最后由 guland 于 2010-6-23 09:37 编辑

回复 1# flyingrabbit

我测试没有问题啊,检查一下你的源码是不是哪里出错了啊
这垃圾录像软件透明皮肤录不上....我录像里面就是用的vista皮肤

flyingrabbit 发表于 2010-6-23 13:50:43

老大以下是源码。我的机子上还是不行。我从三层函数调用到直接设置都不行。老大帮忙看看。谢谢先。
#include <String.au3>
#include <GUIConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <WindowsConstants.au3>
#Include <WinAPIEx.au3>

Global $id_init_window                                    ;数据初始化窗口ID
Global $id_init_button_tz                                 ;调整内外网URL按键ID
Global $id_init_radio_ip_ww                              ;外网选择框ID
Global $id_init_radio_ip_nw                             ;内网选择框ID
Global $id_init_button_cancel                             ;"取消"按键ID
Global $id_init_button_start               ;"开始"按键ID

;外网URL
Global         $url_net_ex="http://192.168.1.1:9080/SEWeb"
;内网URL
Global         $url_net_in="http://192.168.1.1:9080/SEWeb"



Dim $dll
$re1 = "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders"
$re2 = "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders"
FileInstall("SkinCrafterDll.dll", @TempDir & "\SkinCrafterDll.dll", 1)
FileInstall("WinSenven.skf", @TempDir & "\WinSenven.skf", 1)
FileInstall("a.jpg", @TempDir & "\a.jpg", 1)

;定义要传递贵getURL函数的控件ID数组.数组-启用、禁止控件标志,0-禁止,1-启用;-数组中包含的控件ID数量
        Dim $controlID

        ;创建登陆以及录入项目选择窗口
        $id_init_window=GUICreate("登陆以及录入项目选择",700,460,-1,-1)
        _SkinGUI(@TempDir & "\SkinCrafterDll.dll", @TempDir & "\WinSenven.skf", $id_init_window)

        ;创建“开始”按键。点此按键将开始数据初始化以及数据录入
        $id_init_button_start=GUICtrlCreateButton("开始",490,425,80,25)
        ;创建“取消”按键。点此按键将推出程序
        $id_init_button_cancel=GUICtrlCreateButton("取消",590,425,80,25)
       
        ;创建"数据库URL地址选择"组控件
        GUICtrlCreateGroup("数据库URL地址选择",295,10,390,100)
        GUIStartGroup()
        $id_init_radio_ip_ww=GUICtrlCreateRadio("(*)外网:"&$url_net_ex,305,30,270,20)
        $id_init_radio_ip_nw=GUICtrlCreateRadio("内   网:"&$url_net_in,305,55,270,20)
        $id_init_button_tz_w=GUICtrlCreateButton("调整",590,30,80,20)
        $id_init_button_tz_n=GUICtrlCreateButton("调整",590,55,80,20)
        GUICtrlCreateLabel("说明:如果您要调整内外网的地址请点击右边的“调整”按键:",305,85,370,20)
        ;默认外网连接
        GUICtrlSetState($id_init_radio_ip_ww,$GUI_CHECKED)
               
        GUISetState(@SW_SHOW)
       
        While 1
                Dim $url_string
                $msg=GUIGetMsg()
                Select
                        Case $msg=$GUI_EVENT_CLOSE Or $msg=$id_init_button_cancel
                                ;GUIDelete($id_init_window)
                                _WinAPI_AnimateWindow ($id_init_window, BitOR($AW_BLEND, $AW_HIDE),500)
                                Exit
                        Case $msg=$id_init_button_tz_w
                                ;调整外网url
                                ;$url_string=ajustURL($controlID)
                               
                                $url_string="tiaozheng"
                                GUICtrlSetData($id_init_radio_ip_ww,"内网:"&$url_string)
                               
                        Case $msg=$id_init_button_tz_n
                                ;调整外网url
                                ;$url_string=ajustURL($controlID)
                                $url_string="tiaozheng"
                                GUICtrlSetData($id_init_radio_ip_nw,"内网:"&$url_string)
                                ;如果返回值不为空,则设置相应数值,并修改config文件
                                If $url_string<>"" Then
                                        ;GUICtrlSetData($id_init_radio_ip_nw,"内网:"&$url_string)
                                        ;初始化内网url
                                        $url_net_in=$url_string
                                EndIf
                        Case $msg=$id_init_button_start
                EndSelect
        WEnd
       


;定义皮肤函数
Func _SkinGUI($SkincrafterDll, $SkincrafterSkin, $Handle)
        $dll = DllOpen($SkincrafterDll)
        DllCall($dll, "int:cdecl", "InitLicenKeys", "wstr", "10", "wstr", "10", "wstr", "10@10.com", "wstr", "10")
        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   ;==>_SkinGUI

guland 发表于 2010-6-23 15:41:45

回复 5# flyingrabbit


    晕了...
之前你说是修改label,我测试了一下确实没问题,看了你的源码才知道你是要修改Radio的文本,
我测试了问题跟你说的一样,这应该是皮肤插件对AU3支持不好,论坛里面还有几种皮肤插件你可以试试
都支持vista皮肤的

flyingrabbit 发表于 2010-6-23 15:55:10

谢谢老大回复。这点小事也能引起您的重视,非常感谢!!我先试试其他的皮肤。

flyingrabbit 发表于 2010-6-23 16:09:36

测试成功!在调用guictrlsetdata()之后再调用guictrlsetstate()刷新一次就行了

flyingrabbit 发表于 2010-6-23 16:10:31

{:face (319):}{:face (270):}{:face (411):}{:face (319):}

结贴了。
页: [1]
查看完整版本: 换肤问题求助。