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