А можно заюзать SetLayeredWindowAttributes но это работает не везде (т.е. не работает со старой видной)
Const AW_HOR_POSITIVE = &H1 'Animates the window from left to right. This flag can be used with roll or slide animation.
Const AW_HOR_NEGATIVE = &H2 'Animates the window from right to left. This flag can be used with roll or slide animation.
Const AW_VER_POSITIVE = &H4 'Animates the window from top to bottom. This flag can be used with roll or slide animation.
Const AW_VER_NEGATIVE = &H8 'Animates the window from bottom to top. This flag can be used with roll or slide animation.
Const AW_CENTER = &H10 'Makes the window appear to collapse inward if AW_HIDE is used or expand outward if the AW_HIDE is not used.
Const AW_HIDE = &H10000 'Hides the window. By default, the window is shown.
Const AW_ACTIVATE = &H20000 'Activates the window.
Const AW_SLIDE = &H40000 'Uses slide animation. By default, roll animation is used.
Const AW_BLEND = &H80000 'Uses a fade effect. This flag can be used only if hwnd is a top-level window.
Private Declare Function AnimateWindow Lib "user32" (ByVal hwnd As Long, ByVal dwTime As Long, ByVal dwFlags As Long) As Boolean
Private Sub Form_Load()
'KPD-Team 1999
'URL: http://www.allapi.net/
'E-Mail: KPDTeam@Allapi.net
'Set the graphic mode to persistent
Me.AutoRedraw = True
Me.Print "Unload me"
End Sub
Private Sub Form_Unload(Cancel As Integer)
'Animate the window
AnimateWindow Me.hwnd, 200, AW_VER_POSITIVE Or AW_HOR_NEGATIVE Or AW_HIDE
'Unload our form completely
Set Form1 = Nothing
End Sub
Хакер писал(а):
- Код: Выделить всё
Declare Function AnimateWindow Lib "user32" (ByVal hwnd As Long, ByVal dwTime As Long, ByVal dwFlags As Long) As Boolean
SetLayeredWindowAttributesХакер писал(а):А можно заюзать SetLayeredWindow но это работает не везде (т.е. не работает со старой видной)
Я писал(а):Некототорые Люди имеют обыкновение копипастить примеры которые делают совсем не то... что нужно....
Конь писал(а):Хакер
Ну не понял я сначала, и что такого?..
Twister писал(а):Что за привычка писать Declaration функции? Я ее тоже знаю и что?
Lumen писал(а):Да, я скопипастил пример из API Guide, но там же все константы есть, какие нужно использовать, неужели сложно догадаться передать другие параметры этой функции, если не получается с тем что есть? Может ещё и прогу за других написать?
Почему в API Guide нету примеров анимации затухания окна, разворачивания слева направо, из центра, а есть только этот, с сворачиванием в левый нижний угол, а также присутствуют все возможные константы и, самое главное, описания того, что они дают?
'API функции
'Функция определяет стиль окна
Public Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal hWnd As Long, ByVal nIndex As Long) As Long
'Функция задаёт стиль окна
Public Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hWnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
'Функция делает окно прозрачным
Public Declare Function SetLayeredWindowAttributes Lib "user32" (ByVal hWnd As Long, _
ByVal crKey As Long, ByVal bAlpha As Byte, ByVal dwFlags As Long) As Long
'Константы
Public Const LWA_COLORKEY = &H1
Public Const LWA_ALPHA = &H2
Public Const GWL_EXSTYLE = (-20)
Public Const WS_EX_LAYERED = &H80000
'Процедура
'hWnd - манипулятор окна, Layered - степень прозрачности от 0 до 255
Public Sub SetTransparent(hWnd As Long, Layered As Byte)
Dim Ret As Long
'Определяем стиль нужного окна
Ret = GetWindowLong(hWnd, GWL_EXSTYLE)
'Задаём стиль окна как заслоённый
Ret = Ret Or WS_EX_LAYERED
SetWindowLong hWnd, GWL_EXSTYLE, Ret
'Задём степень прозрачности окна
SetLayeredWindowAttributes hWnd, 0, Layered, LWA_ALPHA
End Sub
SetTransparent Me.hWnd, 210
' при запуске форма будет прозрачной
Private Sub Form_Load()
SetTransparent Me.hWnd, 0
Text1.Text = 2
End Sub
' таймер при запуске будет медленно увеличивать видимость
Private Sub Timer1_Timer()
Text1.Text = Text1.Text + 2 ' за место двойки можно поставить и больше(это ускорит процесс появления)
If Text1.Text >= 210 Then Timer1.Enabled = False 'максимальное значение 255
SetTransparent Me.hWnd, (Text1.Text)
End Sub
Option Explicit
...
Private varClock As Long
Private Const FadeClock As Long = 3000
...
Private Sub Form_Load()
SetTransparent Me.hWnd, 0
varClock = 0
Timer1.Enabled = True
End Sub
...
Private Sub Timer1_Timer()
Dim T As Long
varClock = varClock + Timer1.Interval
T = 255& * (varClock / FadeClock)
If T > 255 Then T = 255
SetTransparent Me.hWnd, T
If varClock => FadeClock Then
Timer1.Enabled = False
varClock = 0
End If
End Sub
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 86