Penggunaan WinAPI untuk memanipulasi bentuk form
Berikut ini adalah cara yang digunakan, untuk melakukan manipulasi bentuk form. Bentuk form yang normalnya kotak dengan memanfaatkan fungsi - fungsi WinAPI maka bentuknya bisa diubah sesuai dengan yang teman - teman inginkan. Bila ingin mencoba, silahkan coba ilustrasi dibawah ini (Tambahkan Syntak Di INIT Form dan silahkan otak - atik angka yg berwarna merah untuk merubah ukuran):
Bentuk Bulat
Declare Long CreateEllipticRgn IN WIN32API Long X1, Long Y1, ;
Long X2, Long Y2
Declare Long SetWindowRgn IN WIN32API Long hWnd, Long hRgn, ;
String bRedraw
SetWindowRgn(thisform.hwnd, ;
CreateEllipticRgn(1,1,100,100), "True")
Bentuk Kotak
Bentuk Kotak dengan Ujung Melengkung
Di Visual Foxpro bahkan tidak hanya form yang bisa dirubah bentuknya, jendela editor Visual Foxpro pun bisa diperlakukan sama, silahkan coba aja copas dan jalankan syntak diatas di Command Window dan ubah bagian syntak thisform.hwnd menjadi _vfp.hwnd. sedangkan bila ingin membuat form yang bentuknya sesuai selera (tidak hanya bulat), bisa pake skenario berikut ini :
Bentuk Bulat
Declare Long CreateEllipticRgn IN WIN32API Long X1, Long Y1, ;
Long X2, Long Y2
Declare Long SetWindowRgn IN WIN32API Long hWnd, Long hRgn, ;
String bRedraw
SetWindowRgn(thisform.hwnd, ;
CreateEllipticRgn(1,1,100,100), "True")
Bentuk Kotak
Declare Long CreateRectRgn IN WIN32API Long X1, Long Y1, ;
Long X2, Long Y2
Declare Long SetWindowRgn IN WIN32API Long hWnd, Long hRgn, ;
Declare Long SetWindowRgn IN WIN32API Long hWnd, Long hRgn, ;
String bRedraw
SetWindowRgn(thisform.hwnd, ;
SetWindowRgn(thisform.hwnd, ;
CreateRectRgn(1,1,100,100), "True")
Bentuk Kotak dengan Ujung Melengkung
Declare Long CreateRoundRectRgn IN WIN32API Long X1, Long Y1, ;
Long X2, Long Y2, Long X3, Long Y3
Declare Long SetWindowRgn IN WIN32API Long hWnd, Long hRgn, ;
Declare Long SetWindowRgn IN WIN32API Long hWnd, Long hRgn, ;
String bRedraw
SetWindowRgn(thisform.hwnd, ;
SetWindowRgn(thisform.hwnd, ;
CreateRoundRectRgn(1,1,100,100,50,50), "True")
Di Visual Foxpro bahkan tidak hanya form yang bisa dirubah bentuknya, jendela editor Visual Foxpro pun bisa diperlakukan sama, silahkan coba aja copas dan jalankan syntak diatas di Command Window dan ubah bagian syntak thisform.hwnd menjadi _vfp.hwnd. sedangkan bila ingin membuat form yang bentuknya sesuai selera (tidak hanya bulat), bisa pake skenario berikut ini :
- Siapkan gambar dengan bentuk tertentu, yang akan dijadikan sebagai bentuk form
- Tambahkan kontrol image ke form, dan arahkan properti picture ke gambar tersebut
- Ubah property BackColor milik form ke warna yang jauh berbeda dengan warna gambar misal warna merah (255.0.0)
- Tambahkan syntak di bawah ini di INIT form
- Tinggal atur property TitleBar di form menjadi 0 - off, property BordeyStyle menjadi 0 - No Border dan jangan lupa jika ingin property ShowWindow tetap bernilai 0 / 1 maka ubah property Desktop menjadi .T., atau kalau tidak ubah saja property ShowWindow ke 2.
DECLARE INTEGER SetLayeredWindowAttributes IN WIN32API ;
INTEGER HWND, INTEGER crKey, ;
INTEGER bAlpha, INTEGER dwFlags
DECLARE INTEGER SetWindowLong IN user32.DLL INTEGER hWnd, ;
INTEGER nIndex, INTEGER dwNewLong DECLARE INTEGER GetWindowLong IN user32.DLL INTEGER hWnd, INTEGER nIndex lnFlags = GetWindowLong(thisform.hwnd, -20)
lnFlags = BITOR(lnFlags, 0x00080000) SetWindowLong(thisform.hwnd, -20, lnFlags) SetLayeredWindowAttributes(thisform.hwnd, ;
RGB(255,0,0), 0, 1)
Pastikan angka 255,0,0 di syntak dan di BackColor adalah sama 5.