Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   AutoIt (http://forum.oszone.net/forumdisplay.php?f=103)
-   -   [решено] Маленькая проблема с эфектом закрывания дочернего окна (http://forum.oszone.net/showthread.php?t=180893)

assch 19-07-2010 02:33 1455801

Маленькая проблема с эфектом закрывания дочернего окна
 
Эфект открывания и закрывания основного окна работает нормально
А вот дочернее окно при закрывании если оно находится в зоне основного окна портит этот эфект
Я специально чуть развёл окна чтобы было видно что вне зоны окна оно закрывается с эфектом
а вот в зоне окна этот эфект плавного закрывания не работает
Можно это исправить или эта фишка с дочерним окном не пройдёт?
Можно конечно это сделать создав ещё один экзешник но просто хочется чтобы было всё в одном зкзешнике

Код:

#include <GUIConstants.au3>
Global $2
$1 = GUICreate("1" ,-1 ,-1 ,300 ,300)
$But = GUICtrlCreateButton("1", 50, 50, 80, 40 , $BS_FLAT)
DllCall("User32.dll","long","AnimateWindow","hwnd",$1,"long",500,"long",0x10)
GUISetState ()

While 1
$iMsg = GUIGetMsg(1)
       
        Select
                       
                        Case $iMsg[0] = $GUI_EVENT_CLOSE
                               
                                If $iMsg[1] = $2  Then
                                  DllCall("User32.dll","long","AnimateWindow","hwnd",$2,"long",500,"long",0x10+0x10000)
                                 
                                ElseIf $iMsg[1] = $1 Then
                                          DllCall("User32.dll","long","AnimateWindow","hwnd",$1,"long",500,"long",0x10+0x10000)
                                          Exit
                            EndIf

            Case $iMsg[0] = $But
                          Function()
                       
        EndSelect

Wend

Func Function()
$2 = GUICreate("2", -1, -1, 500, 500, -1, -1, $1)
GUISetBkColor (0xffffff)
DllCall("User32.dll","long","AnimateWindow","hwnd",$2,"long",500,"long",0x10)
GUISetState() 
EndFunc


Creat0R 19-07-2010 02:57 1455812

Одно из решении это поставить временно прозрачность окна на 254 (не прозрачное окно это 255, т.ч это должно быть не значительно).

Код:

#include <GUIConstantsEx.au3>
#include <ButtonConstants.au3>

Global $2

$1 = GUICreate("1", -1, -1, 300, 300)
$But = GUICtrlCreateButton("1", 50, 50, 80, 40, $BS_FLAT)
DllCall("User32.dll", "long", "AnimateWindow", "hwnd", $1, "long", 500, "long", 0x10)
GUISetState()

While 1
    $iMsg = GUIGetMsg(1)

    Select
        Case $iMsg[0] = $GUI_EVENT_CLOSE
            If $iMsg[1] <> $1 Then
                WinSetTrans($1, "", 254)
                DllCall("User32.dll", "long", "AnimateWindow", "hwnd", $iMsg[1], "long", 500, "long", 0x10 + 0x10000)
                WinSetTrans($1, "", 255)
            Else
                DllCall("User32.dll", "long", "AnimateWindow", "hwnd", $1, "long", 500, "long", 0x10 + 0x10000)
                Exit
            EndIf
        Case $iMsg[0] = $But
            Function()
    EndSelect
WEnd

Func Function()
    $2 = GUICreate("2", -1, -1, 500, 500, -1, -1, $1)
    GUISetBkColor(0xffffff)
    DllCall("User32.dll", "long", "AnimateWindow", "hwnd", $2, "long", 500, "long", 0x10)
    GUISetState()
EndFunc

И кстати, судя по скрипту, у вас старая версия AutoIt, возможно не помешало бы обновиться ;)

assch 19-07-2010 06:14 1455840

Большое спасибо Creat0R

Не всегда но иногда правда в поле зрения мелькает небольшая чёрная зона


Время: 00:05.

Время: 00:05.
© OSzone.net 2001-