borderAndreaVB free resources for Visual Basic developersborder

AndreaVB Visual Basic and VB.NET source code resources - Copyright © 1999-2008 Andrea Tincani
:: Show/Hide a Form with an Explode/Implode animation

AndreaVB Monthly Tip Award

Author  

Don Joshua Pinto

Language  

VB4, VB5, VB6

Operating Systems  

Windows 95, 98,2000 and NT
API Declarations
'Insert the following code to your module:

#If Win16 Then
    Type RECT
        Left As Integer
        Top As Integer
        Right As Integer
        Bottom As Integer
    End Type
#Else
    Type RECT
        Left As Long
        Top As Long
        Right As Long
        Bottom As Long
    End Type
#End If

#If Win16 Then
    Declare Sub GetWindowRect Lib "user.dll" (ByVal hwnd As Integer, lpRect As RECT)

    Declare Function GetDC Lib "user.dll" (ByVal hwnd As Integer) As Integer

    Declare Function ReleaseDC Lib "user.dll" (ByVal hwnd As Integer, ByVal hdc As _
        Integer) As Integer

    Declare Sub SetBkColor Lib "gdi.dll" (ByVal hdc As Integer, ByVal crColor As Long)

    Declare Sub Rectangle Lib "gdi.dll" (ByVal hdc As Integer, ByVal X1 As Integer, _
        ByVal Y1 As Integer, ByVal X2 As Integer, ByVal Y2 As Integer)

    Declare Function CreateSolidBrush Lib "gdi.dll" (ByVal crColor As Long) As Integer

    Declare Sub DeleteObject Lib "gdi.dll" (ByVal hObject As Integer)
#Else
    Declare Function GetWindowRect Lib "user32.dll" (ByVal hwnd As Long, _
        lpRect As RECT) As Long

    Declare Function GetDC Lib "user32.dll" (ByVal hwnd As Long) As Long

    Declare Function ReleaseDC Lib "user32.dll" (ByVal hwnd As Long, ByVal _
        hdc As Long) As Long

    Declare Function SetBkColor Lib "gdi32.dll" (ByVal hdc As Long, ByVal _
        crColor As Long) As Long

    Declare Function Rectangle Lib "gdi32.dll" (ByVal hdc As Long, ByVal X1 As Long, _
        ByVal Y1 As Long, ByVal X2 As Long, ByVal Y2 As Long) As Long

    Declare Function CreateSolidBrush Lib "gdi32.dll" (ByVal crColor As Long) As Long

    Declare Function DeleteObject Lib "gdi32.dll" (ByVal hObject As Long) As Long
#End If
Module
Sub ExplodeForm(f As Form, Movement As Integer)
    Dim myRect As RECT
    Dim formWidth%, formHeight%, i%, X%, Y%, Cx%, Cy%
    Dim TheScreen As Long
    Dim Brush As Long
    
    GetWindowRect f.hwnd, myRect
    formWidth = (myRect.Right - myRect.Left)
    formHeight = myRect.Bottom - myRect.Top
    TheScreen = GetDC(0)
    Brush = CreateSolidBrush(f.BackColor)
    For i = 1 To Movement
        Cx = formWidth * (i / Movement)
        Cy = formHeight * (i / Movement)
        X = myRect.Left + (formWidth - Cx) / 2
        Y = myRect.Top + (formHeight - Cy) / 2
        Rectangle TheScreen, X, Y, X + Cx, Y + Cy
        DoEvents
    Next i
    X = ReleaseDC(0, TheScreen)
    DeleteObject (Brush)
End Sub

Public Sub ImplodeForm(f As Form, Movement As Integer)
    Dim myRect As RECT
    Dim formWidth%, formHeight%, i%, X%, Y%, Cx%, Cy%
    Dim TheScreen As Long
    Dim Brush As Long
    
    GetWindowRect f.hwnd, myRect
    formWidth = (myRect.Right - myRect.Left)
    formHeight = myRect.Bottom - myRect.Top
    TheScreen = GetDC(0)
    Brush = CreateSolidBrush(f.BackColor)
    For i = Movement To 1 Step -1
        Cx = formWidth * (i / Movement)
        Cy = formHeight * (i / Movement)
        X = myRect.Left + (formWidth - Cx) / 2
        Y = myRect.Top + (formHeight - Cy) / 2
        Rectangle TheScreen, X, Y, X + Cx, Y + Cy
        DoEvents
    Next i
    X = ReleaseDC(0, TheScreen)
    DeleteObject (Brush)
End Sub
Usage
Option Explicit

'Insert this code to your form:
          
Private Sub Command1_Click()
    'Replace all the '500' below with the Speed of the Explode\Implode Effect.
    Call ImplodeForm(Me, 500)
    End
    Set Form1 = Nothing
End Sub

Private Sub Form_Load()
    Call ExplodeForm(Me, 500)
End Sub

Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer)
    Call ImplodeForm(Me, 500)
End Sub
:: Navigation

Home

Form Tips

Previous Tip

Next Tip

:: Search this site
Google
:: Related Topics
icon 16-03-2007 Re: load form from button by eira_ak
icon 29-08-2006 Re: Creating a application that no one can remove and terminate by iopit69
icon 30-06-2006 Re: Mdi minimize,maximize by yronium
icon 30-06-2006 Mdi minimize,maximize by vbLearner
icon 20-05-2006 Re: How do I Pass Data to another Form? by yronium
:: Sponsored Links



Partners: Il portale per lui e lei | Download Actual Software | Free Software Download
borderAndreaVB free resources for Visual Basic developersborder

borderAndreaVB Visual Basic and VB.NET source code resources - Copyright © 1999-2008 Andrea Tincaniborder