modexplode.bas

来自「很好的教程原代码!」· BAS 代码 · 共 87 行

BAS
87
字号
Attribute VB_Name = "modExplode"
Option Explicit
Type RECT
    Left As Long
    Top As Long
    Right As Long
    Bottom As Long
End Type
 Declare Function GetWindowRect Lib "user32" _
(ByVal hwnd As Long, _
lpRect As RECT _
) As Long
 Declare Function GetDC Lib "user32" (ByVal hwnd As Long) As Long
 Declare Function ReleaseDC Lib "user32" _
(ByVal hwnd As Long, _
ByVal hdc As Long _
) As Long
 Declare Function SetBkColor Lib "gdi32" _
(ByVal hdc As Long, _
ByVal crColor As Long _
) As Long
 Declare Function Rectangle Lib "gdi32" _
(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" _
(ByVal crColor As Long _
) As Long
 Declare Function SelectObject Lib "user32" _
(ByVal hdc As Long, _
ByVal hObject As Long _
) As Long
 Declare Function DeleteObject Lib "gdi32" _
(ByVal hObject As Long _
) As Long
'
' 动态打开窗体
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
    Next i
    X = ReleaseDC(0, TheScreen)
    DeleteObject (Brush)
End Sub
'
'动态关闭窗体
Public Sub ImplodeForm(f As Form, Direction As Integer, Movement As Integer, _
ModalState 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
    Next i
    X = ReleaseDC(0, TheScreen)
    DeleteObject (Brush)
End Sub
'


⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?