Hiệu ứng Form trong Visual Basic 6

Là dân lập trình VB6 chắc hẳn bạn rất thích thú những chức năng dễ sử dụng của nó ví dụ như kéo và thả các đối tượng… Nhưng chắc cũng không ít lần bạn đau đầu khi tìm hiểu những hàm API phục vụ cho thiết kế giao diện form. Trong bài viết này, tôi sẽ giới thiệu đến các bạn hàm API ‘AnimateWindow‘ dùng để tạo các hiệu ứng đặc biệt cho form.

Hàm AnimateWindow được chứa trong thư viện user32.dll. Để sử dụng hàm API này, trước tiên bạn phải khai báo:

Private Declare Function AnimateWindow Lib ‘user32’ (ByVal hwnd As Long, ByVal dwTime As Long, ByVal dwFlags As Long) As Boolean

Câu lệnh gọi hàm AnimateWindows như sau:

AnimateWindow hWnd, dwTime, dwFlags

Chi tiết từng chức năng của câu lệnh:
–    HWnd: cửa sổ tạo hiệu ứng.
–    dwTime: thời gian tạo hiệu ứng (millisecond).
–    dwFlags: loại của hiệu ứng. dwFlag có thể nhận một (hoặc nhiều) trong các giá trị sau.
–    &H20000: làm form trở nên ‘active’ (kích hoạt)
–    &H80000: hiệu ứng ‘fade’ (hiện từ mờ rồi dần trở nên rỏ). Chỉ được sử dụng khi hWnd là cửa sổ onTop.
–    &H10: hiệu ứng tỏa từ giữa form ra ngoài.
–    &H1: hiệu ứng làm form xuất hiện từ trái sang phải.
–    &H2: hiệu ứng làm form xuất hiện từ phải sang trái.
(&H1, &H2 không dùng chung được với &H10 or &H80000).
–    &H4 : hiệu ứng làm form xuất hiện từ trên xuống dưới.
–    &H8 : hiệu ứng làm form xuất hiện từ dưới lên trên.

Dưới đây là chương trình tạo hiệu ứng cho form dùng hàm API trên.

Tạo một project Standard EXE, tạo form đặt tên là frmOptions với các đối tượng như hình 1 (1 frame, 6 OptionButton, 1 Label, 1 TextBox, 1 CommandButton), nhập đoạn code sau:

Option Explicit

Private Sub Command1_Click()

‘Thoát khỏi form trong trường hợp form đã được load

  Unload frmDemo

‘Dừng chương trình 0.2 millisecond

  Pause (0.2)

  Load frmDemo           

  frmDemo.SetFocus

End Sub

Sub Pause(Interval)

Dim Current

  Current = Timer

  Do While Timer – Current < Val(Interval)

    DoEvents

  Loop

End Sub

Private Sub Form_Unload(Cancel As Integer)

  Unload frmDemo

End Sub

Tạo thêm 1 form đặt tên là frmDemo và nhập đoạn code sau:

Option Explicit

Private Declare Function AnimateWindow Lib ‘user32’ (ByVal hwnd As Long, ByVal dwTime As Long, ByVal dwFlags As Long) As Boolean

Private Sub Form_Load()

‘dùng để bẫy lỗi

On Error GoTo starterr

Dim StartUpEffect

‘Nếu option Left to Right được lựa chọn

If frmOptions.optLR.Value Then

    StartUpEffect = &H1    

‘Nếu option Right to Left được lựa chọn

ElseIf frmOptions.optRL.Value Then

    StartUpEffect = &H2

‘Nếu option Top to Bottom được lựa chọn

ElseIf frmOptions.optTB.Value Then

    StartUpEffect = &H4

‘Nếu option Bottom to Top được lựa chọn

ElseIf frmOptions.optBT.Value Then

    StartUpEffect = &H8

‘Nếu option Center được lựa chọn

ElseIf frmOptions.optC.Value Then

    StartUpEffect = &H10

Else

‘Nếu option Fade được lựa chọn

    StartUpEffect = &H80000          

End If

If Trim(frmOptions.Text1.Text) <> ” Then

  ‘Tạo hiệu ứng cho form

  AnimateWindow Me.hwnd, frmOptions.Text1.Text, StartUpEffect 

  DoEvents

  Me.refresh

Else

  MsgBox ‘Please enter a valid number!’, , ‘Error’

End If

Exit Sub

starterr:

MsgBox ‘Please select an effect!’, , ‘Error’

End Sub

Gán frmOptions làm form khởi chạy đầu tiên (Project Properties->Startup Object). Xong, bạn hãy chạy chương trình để thưởng thức những hiệu ứng form đẹp mắt