zz999 发表于 2010-11-19 19:29:31

大家来讨论下GUI界面在皮肤下有什么好的打开和退出效果!!

大家来讨论下GUI界面在皮肤下有什么好的打开和退出效果!!

被这个问题困惑了很久了。。
不管用什么皮肤
如果用类型下面这种特效,皮肤的框框还是在,如图


DllCall("user32.dll", "int", "AnimateWindow", "hwnd", $form1, "int", 300, "long", 0x00050010)


大家有其它的什么好的方法么?

tryhi 发表于 2010-11-19 19:44:39

路过,帮顶。调用皮肤是这样调啊?

zz999 发表于 2010-11-19 19:49:49

回复 2# tryhi

这是特效不是调用皮肤
我是说调用了皮肤后再用特效   
这时在关闭的时候,外边框一直在,特效只在里面一圈有效!

tryhi 发表于 2010-11-19 19:56:32

哎!不懂这些。。。。

马甲 发表于 2010-11-19 19:59:38

不使用透明皮肤就不会出现此问题了。

chenronting 发表于 2010-11-19 20:37:06

这个问题我也有发现过,只要没有皮肤就没事了。~GUI效果里有一个UDF可以实现一些效果 。

zz999 发表于 2010-11-19 23:14:28

回复 5# 马甲


    跟透明么关系       只要加皮肤就有这问题!

netegg 发表于 2010-11-20 01:03:20

;CONSTANTS
Global Const $AW_FADE_IN = 0x00080000 ;fade-in
Global Const $AW_FADE_OUT = 0x00090000;fade-out
Global Const $AW_SLIDE_IN_LEFT = 0x00040001 ;slide in from left
Global Const $AW_SLIDE_OUT_LEFT = 0x00050002 ;slide out to left
Global Const $AW_SLIDE_IN_RIGHT = 0x00040002 ;slide in from right
Global Const $AW_SLIDE_OUT_RIGHT = 0x00050001 ;slide out to right
Global Const $AW_SLIDE_IN_TOP = 0x00040004 ;slide-in from top
Global Const $AW_SLIDE_OUT_TOP = 0x00050008 ;slide-out to top
Global Const $AW_SLIDE_IN_BOTTOM = 0x00040008 ;slide-in from bottom
Global Const $AW_SLIDE_OUT_BOTTOM = 0x00050004 ;slide-out to bottom
Global Const $AW_DIAG_SLIDE_IN_TOPLEFT = 0x00040005 ;diag slide-in from Top-left
Global Const $AW_DIAG_SLIDE_OUT_TOPLEFT = 0x0005000a ;diag slide-out to Top-left
Global Const $AW_DIAG_SLIDE_IN_TOPRIGHT = 0x00040006 ;diag slide-in from Top-Right
Global Const $AW_DIAG_SLIDE_OUT_TOPRIGHT = 0x00050009 ;diag slide-out to Top-Right
Global Const $AW_DIAG_SLIDE_IN_BOTTOMLEFT = 0x00040009 ;diag slide-in from Bottom-left
Global Const $AW_DIAG_SLIDE_OUT_BOTTOMLEFT = 0x00050006 ;diag slide-out to Bottom-left
Global Const $AW_DIAG_SLIDE_IN_BOTTOMRIGHT = 0x0004000a ;diag slide-in from Bottom-right
Global Const $AW_DIAG_SLIDE_OUT_BOTTOMRIGHT = 0x00050005 ;diag slide-out to Bottom-right
Global Const $AW_EXPLODE = 0x00040010 ;explode
Global Const $AW_IMPLODE = 0x00050010 ;implode

Func _WinAnimate($v_gui, $i_mode, $i_duration = 1000)
        DllCall("user32.dll", "int", "AnimateWindow", "hwnd", WinGetHandle($v_gui), "int", $i_duration, "long", $i_mode)
        Local $ai_gle = DllCall('kernel32.dll', 'int', 'GetLastError')
        If $ai_gle <> 0 Then
                SetError(1)
                Return 0
        EndIf
        Return 1
EndFunc ;==> _WinAnimate()

#cs DEMO - For lazy guys like me - to copy paste
        $hwnd = GUICreate("AnimateWindow - Demo", 300, 300)
        _WinAnimate($hwnd, $AW_FADE_IN)
        ConsoleWrite('er: ' & @error & @LF & 'ex: ' & @extended & @CRLF)
        Sleep(1500)
        _WinAnimate($hwnd, $AW_FADE_OUT)
        ConsoleWrite('er: ' & @error & @LF & 'ex: ' & @extended & @CRLF)
        Sleep(1500)
        _WinAnimate($hwnd, $AW_SLIDE_IN_LEFT)
        ConsoleWrite('er: ' & @error & @LF & 'ex: ' & @extended & @CRLF)
        Sleep(1500)
        _WinAnimate($hwnd, $AW_SLIDE_OUT_LEFT)
        ConsoleWrite('er: ' & @error & @LF & 'ex: ' & @extended & @CRLF)
        Sleep(1500)
        _WinAnimate($hwnd, $AW_SLIDE_IN_RIGHT)
        ConsoleWrite('er: ' & @error & @LF & 'ex: ' & @extended & @CRLF)
        Sleep(1500)
        _WinAnimate($hwnd, $AW_SLIDE_OUT_RIGHT)
        ConsoleWrite('er: ' & @error & @LF & 'ex: ' & @extended & @CRLF)
        Sleep(1500)
        _WinAnimate($hwnd, $AW_SLIDE_IN_TOP)
        ConsoleWrite('er: ' & @error & @LF & 'ex: ' & @extended & @CRLF)
        Sleep(1500)
        _WinAnimate($hwnd, $AW_SLIDE_OUT_TOP)
        ConsoleWrite('er: ' & @error & @LF & 'ex: ' & @extended & @CRLF)
        Sleep(1500)
        _WinAnimate($hwnd, $AW_SLIDE_IN_BOTTOM)
        ConsoleWrite('er: ' & @error & @LF & 'ex: ' & @extended & @CRLF)
        Sleep(1500)
        _WinAnimate($hwnd, $AW_SLIDE_OUT_BOTTOM)
        ConsoleWrite('er: ' & @error & @LF & 'ex: ' & @extended & @CRLF)
        Sleep(1500)
        _WinAnimate($hwnd, $AW_DIAG_SLIDE_IN_TOPLEFT)
        ConsoleWrite('er: ' & @error & @LF & 'ex: ' & @extended & @CRLF)
        Sleep(1500)
        _WinAnimate($hwnd, $AW_DIAG_SLIDE_OUT_TOPLEFT)
        ConsoleWrite('er: ' & @error & @LF & 'ex: ' & @extended & @CRLF)
        Sleep(1500)
        _WinAnimate($hwnd, $AW_DIAG_SLIDE_IN_TOPRIGHT)
        ConsoleWrite('er: ' & @error & @LF & 'ex: ' & @extended & @CRLF)
        Sleep(1500)
        _WinAnimate($hwnd, $AW_DIAG_SLIDE_OUT_TOPRIGHT)
        ConsoleWrite('er: ' & @error & @LF & 'ex: ' & @extended & @CRLF)
        Sleep(1500)
        _WinAnimate($hwnd, $AW_DIAG_SLIDE_IN_BOTTOMLEFT)
        ConsoleWrite('er: ' & @error & @LF & 'ex: ' & @extended & @CRLF)
        Sleep(1500)
        _WinAnimate($hwnd, $AW_DIAG_SLIDE_OUT_BOTTOMLEFT)
        ConsoleWrite('er: ' & @error & @LF & 'ex: ' & @extended & @CRLF)
        Sleep(1500)
        _WinAnimate($hwnd, $AW_DIAG_SLIDE_IN_BOTTOMRIGHT)
        ConsoleWrite('er: ' & @error & @LF & 'ex: ' & @extended & @CRLF)
        Sleep(1500)
        _WinAnimate($hwnd, $AW_DIAG_SLIDE_OUT_BOTTOMRIGHT)
        ConsoleWrite('er: ' & @error & @LF & 'ex: ' & @extended & @CRLF)
        Sleep(1500)
        _WinAnimate($hwnd, $AW_EXPLODE)
        ConsoleWrite('er: ' & @error & @LF & 'ex: ' & @extended & @CRLF)
        Sleep(1500)
        _WinAnimate($hwnd, $AW_IMPLODE)
        ConsoleWrite('er: ' & @error & @LF & 'ex: ' & @extended & @CRLF)
#ce

zz999 发表于 2010-11-21 11:02:10

回复 8# netegg


    回楼上的,你这个UDF就一句话有效
DllCall("user32.dll", "int", "AnimateWindow", "hwnd", WinGetHandle($v_gui), "int", $i_duration, "long", $i_mode)

还是 那问题,

好像除了先去除皮肤没有其它办法!
页: [1]
查看完整版本: 大家来讨论下GUI界面在皮肤下有什么好的打开和退出效果!!