bab 2-window region
TRANSCRIPT
Bab 2 : Control ActiveX Form / Windows Region
TUGAS III
PEMROGRAMAN API
Di Susun Oleh:
Nieko W 0834015002
Akhmad Shohib 0834015008
Alfiyan 0834015014
Chandra Adi K 0834015021
JURUSAN TEKNIK INFORMATIKA
FAKULTAS TEKNIK INDUSTRI
UNIVERSITAS PEMBANGUNAN NASIONAL “VETERAN” JATIM
2010
Windows Region
BAB Window Region
Bab 2 : Control ActiveX Form / Windows Region
BAB 2
Control ActiveX Form / Windows Region
Dalam bab ini akan membahas masalah Control Activex pada form,
dimana nanti dijelaskan mengenai jenis-jenis manipulasi form, cara
penerapannya pada form, beserta contoh program sehingga
tampilan form bisa menarik.
Setelah mempelajari bab ini, mahasiswa diharapkan mampu:
Memahami tentang Control Activex Form.
Mengetahui macam-macam Control Activex Form.
Mengimplementasikan Control Activex terhadap form yang
dibuat.
Mampu membuat program yang dependencies terhadapt
runtime tersebut.
PENGENALAN WINDOWS REGION
1.1 Sejarah
Region adalah “wilayah/daerah” pada form dalam Windows.
Manipulasi region pada Visual Basic ini menggunakan Library
Gdi32.dll, didalam library Gdi32.dll, menyediakan API untuk
memanipulasi region seperti: membuat region kotak, elips, polygon,
dsb. Selain membuat region, Library ini juga bisa untuk
menggabungkan antara region yang satu dengan yang lain.
Manipulasi form ini pada dasarnya bertujuan membentuk form selain
bentuk default dari windows. Dengan API region ini kita bisa
menciptakan style form yang berbeda.
1.2 Windows Form Region
API manipulation region terbagi menjadi beberapa function untuk
memanipulasi sebuah form yang mana setiap fungsi memiliki fungsi
yang berbeda, jenis-jenisnya yaitu:
• CombineRgn
2Ruang Lingkup Pembahasan
Tujuan
Bab 2 : Control ActiveX Form / Windows Region
• CreateEllipticRgn
• CreateEllipticRgnIndirect
• CreatePolygonRgn
• CreatePolyPolygonRgn
• CreateRectRgn
• CreateRectRgnIndirect
• CreateRoundRectRgn
• OffsetRgn
• PathToRegion
• PtlnRegion
Pembahasan pertama dalam manipulasi form ini kita akan
menggunakan kontrol ActiveX adalah membuat form menjadi
berbentuk elips. Di sini kita akan menggunakan 4 fungsi dari API
Windows,yaitu:
CreateEllipticRgn untuk membentuk objek baru berbentuk
elips/bulat.
SetWindowRgn untuk mengubah bentuk form sesuai objek
yang telah kita bentuk sebelumnya.
DeleteObject untuk menghapus objek yang telah kita bentuk
dari fungsi pertama.
CreateRectRgn untuk membentuk objek sesuai bentuk form
semula.
Cara penulisan CreateEllipticRgn dan CreateRectRgn :
Variabel (bertype long) = CreateEllipticRgn(x1, y1, x2, y2)
Variabel (bertype long) = CreateRectRgn(x1, y1, x2, y2)
Keterangan:
- x1 = koordinat x pojok kiri atas lingkaran
- y1 = koordinat y pojok kiri atas lingkaran
- x2 = koordinat x pojok kanan bawah lingkaran
- y2 = koordinat y pojok kanan bawah lingkaran
Cara penulisan SetWindowRgn :
SetWindowRgn(handle, variabel, True)
Handle di sini maksudnya adalah handle dari form ataupun kontrol
lainnya yang akan diubah atau disesuaikan bentuknya
(untuk form yaitu Form.hwnd).
Sintaks untuk DeleteObject adalah:
DeleteObject(variabel). Oleh karena form kita berubah bentuk
menjadi elips, kita akan kehilangan bar caption dari form sehingga
akan menyulitkan kita untuk menggeser form kita yang tidak memiliki
bar caption. Oleh sebab itu supaya dapat menggesernya maka kita
menggunakan 2 fungsi API, yaitu SendMessage untuk mengirim
pesan tertentu ke window untuk suatu memanggil proses tertentu
dari Windows dan fungsi kedua, yaitu ReleaseCapture untuk
menimbulkan proses tombol mouse.
Keuntungan penggunaan ActiveX di sini adalah saat perancangan
program setelah ActiveX ini dimasukkan ke dalam form program kita
Bab 2 : Control ActiveX Form / Windows Region
maka form sudah dapat terlihat berbentuk elips sehingga kita
dapat mengatur letak kontrol-kontrol yang lain di dalam form kita
tersebut dalam rangka membuat program EXE seperti gambar
berikut ini.
Gambar 1. Form Berbentuk Ellips
1.3 Combine Region
Pengembangan teknik selanjutnya dari teknik di atas adalah
membuat kontrol yang menyebabkan form kita berbentuk seperti
tampilan berikut ini:
Untuk membuatnya, kita
memerlukan satu lagi fungsi
API, yaitu CombineRgn yang
berfungsi menggabungkan
region-region yang telah
terbentuk sebelumnya
berdasarkan pola tertentu.
Aturan penggunaannya
adalah sebagai berikut:
CombineRgn(h, r1, r2, pola)
(italic)
Keterangan:
h = region hasil penggabungan yang harus sudah ada sebelumnya
(bisa r1 atau r2)
r1 = region pertama untuk digabungkan.
r2 = region kedua untuk digabungkan
pola = mode yang digunakan dalam operasi penggabungan dan
merupakan suatu konstanta.
Bab 2 : Control ActiveX Form / Windows Region
Macam-macam pola proses dalam fungsi CombineRgn
Ilustrasi combine
1. http://fat04.wordpress.com , 09 Oktober 2010, 13.34 pm
2. http://www.downloadebookgratis.com , 09 Oktober 2010, 14.02
pm
3. http://id.wikipedia.org/w/index.php?title= Window_region , 09
Oktober 2010, 14.40 pm
4. Software API-Guide download di http://www.allapi.net , 27
September 2010, 19.00 pm
1. Buatlah manipulasion region menggunakan Visual Basic 6
dengan region sesuai dengan gambar dibawah ini,
REFERENSI
Bab 2 : Control ActiveX Form / Windows Region
Berikut source code lengkap untuk membuat gambar di atas
menggunakan fungsi library region yang ada di VB 6.0
Bab 2 : Control ActiveX Form / Windows Region
Private Declare Function CombineRgn Lib "gdi32" (ByVal hDestRgn As Long, ByVal hSrcRgn1 As Long, ByVal hSrcRgn2 As Long, ByVal nCombineMode As Long) As LongPrivate Declare Function CreateEllipticRgn Lib "gdi32" (ByVal X1 As Long, ByVal Y1 As Long, ByVal X2 As Long, ByVal Y2 As Long) As LongPrivate Declare Function CreateRectRgn Lib "gdi32" (ByVal X1 As Long, ByVal Y1 As Long, ByVal X2 As Long, ByVal Y2 As Long) As LongPrivate Declare Function CreateRoundRectRgn Lib "gdi32" (ByVal X1 As Long, ByVal Y1 As Long, ByVal X2 As Long, ByVal Y2 As Long, ByVal X3 As Long, ByVal Y3 As Long) As LongPrivate Declare Function CreatePolygonRgn Lib "gdi32" (lpPoint As Any, ByVal nCount As Long, ByVal nPolyFillMode As Long) As LongPrivate Declare Function CreatePolyPolygonRgn Lib "gdi32" (lpPoint As POINTAPI, lpPolyCounts As Long, ByVal nCount As Long, ByVal nPolyFillMode As Long) As LongPrivate Declare Function SetWindowRgn Lib "user32" (ByVal hwnd As Long, ByVal hRgn As Long, ByVal bRedraw As Boolean) As LongPrivate Declare Sub ReleaseCapture Lib "user32" ()
Const ALTERNATE = 1 ' ALTERNATE and WINDING areConst WINDING = 2 ' constants for FillMode.Dim segi_a3(1 To 3) As COORD, nKoor As Long, a3 As LongDim bintang1(1 To 3) As COORD, ns3a As Long, segi3a As LongDim bintang2(1 To 3) As COORD, nBtg As Long, btg2 As LongDim bintang3(1 To 3) As COORD, nBtg3 As Long, btg3 As LongDim pl(1 To 3) As COORD, npl As Long, p_l As LongDim pel(1 To 3) As COORD, npel As Long, pe_l As LongDim pele(1 To 3) As COORD, npele As Long, pe_le As
Private Type COORD x As Long y As LongEnd TypePrivate Type POINTAPI x As Long y As LongEnd TypePrivate Sub Form_DblClick() 'Untuk menutup form1 ketika didobel klik EndEnd SubPrivate Sub Form_Load() 'bendera luar a0 = CreateRectRgn(0, 100, 999, 500) a1 = CreateEllipticRgn(-30, 60, 450, 200) a2 = CreateEllipticRgn(430, 5, 1000, 170) nKoor = 3 segi_a3(1).x = 450 segi_a3(1).y = 60 segi_a3(2).x = 420 segi_a3(2).y = 94 segi_a3(3).x = 470 segi_a3(3).y = 130 ' Creates region to fill with color. a3 = CreatePolygonRgn(segi_a3(1), nKoor, ALTERNATE) a4 = CreateEllipticRgn(-30, 440, 453, 580) a5 = CreateEllipticRgn(450, 430, 1000, 575) 'lubang dalam sebelah kiri a6 = CreateEllipticRgn(-30, 130, 440, 230) a7 = CreateEllipticRgn(-30, 170, 440, 270) a8 = CreateEllipticRgn(-30, 350, 440, 450) a9 = CreateEllipticRgn(-30, 390, 440, 490) a10 = CreateRectRgn(0, 100, 80, 420) b1 = CreateRectRgn(80, 150, 130, 380)
'lubang dalam sebelah kanan b2 = CreateEllipticRgn(420, 100, 970, 270) b3 = CreateEllipticRgn(420, 60, 970, 230) b4 = CreateEllipticRgn(420, 310, 970, 490) b5 = CreateEllipticRgn(420, 260, 900, 450) b6 = CreateRectRgn(900, 150, 1000, 500) b7 = CreateRectRgn(850, 220, 900, 450) 'variasi b8 = CreateRectRgn(940, 180, 960, 490) kotak_a = CreateRectRgn(60, 100, 170, 120) kotak_b = CreateRectRgn(780, 510, 880, 530) circle_a = CreateEllipticRgn(200, 80, 240, 120) circle_b = CreateEllipticRgn(700, 510, 740, 550) elips_a = CreateEllipticRgn(270, 90, 330, 110) elips_b = CreateEllipticRgn(560, 520, 680, 540) 'bintang ns3a = 3 bintang1(1).x = 275 bintang1(1).y = 290 bintang1(2).x = 200 bintang1(2).y = 240 bintang1(3).x = 350 bintang1(3).y = 240 segi3a = CreatePolygonRgn(bintang1(1), ns3a, ALTERNATE) nBtg = 3 bintang2(1).x = 270 bintang2(1).y = 200 bintang2(2).x = 220 bintang2(2).y = 320 bintang2(3).x = 320 bintang2(3).y = 320 btg2 = CreatePolygonRgn(bintang2(1), ns3a, ALTERNATE)
nBtg3 = 3 bintang3(1).x = 220 bintang3(1).y = 320 bintang3(2).x = 320 bintang3(2).y = 320 bintang3(3).x = 270 bintang3(3).y = 290 btg3 = CreatePolygonRgn(bintang3(1), nBtg3, ALTERNATE) 'Yin & Yang yinyang = CreateEllipticRgn(600, 300, 700, 400) yin = CreateEllipticRgn(630, 340, 680, 410) yin1 = CreateRectRgn(580, 300, 645, 400) yang = CreateEllipticRgn(630, 300, 680, 350) 'penghalus lengkungan npl = 3 pl(1).x = 415 pl(1).y = 195 pl(2).x = 430 pl(2).y = 195 pl(3).x = 440 pl(3).y = 215 p_l = CreatePolygonRgn(pl(1), npl, ALTERNATE)npel = 3 pel(1).x = 424 pel(1).y = 382 pel(2).x = 428 pel(2).y = 375 pel(3).x = 440 pel(3).y = 392 pe_l = CreatePolygonRgn(pel(1), npel, ALTERNATE)npele = 3 pele(1).x = 420 pele(1).y = 420 pele(2).x = 428 pele(2).y = 400 pele(3).x = 440 pele(3).y = 433 pe_le = CreatePolygonRgn(pele(1), npele,
Bab 2 : Control ActiveX Form / Windows Region
Bab 2 : Control ActiveX Form / Windows Region
CombineRgn a0, a0, a1, 2 CombineRgn a0, a0, a3, 4 CombineRgn a0, a0, a5, 2 CombineRgn a0, a0, a6, 4 CombineRgn a0, a0, a7, 2 CombineRgn a0, a0, a8, 4 CombineRgn a0, a0, a9, 2 CombineRgn a0, a0, a100, 2 CombineRgn a0, a0, a10, 2 CombineRgn a0, a0, a4, 4 CombineRgn a0, a0, b1, 4 CombineRgn a0, a0, b4, 4 CombineRgn a0, a0, b5, 2 CombineRgn a0, a0, b2, 4 CombineRgn a0, a0, b3, 2 CombineRgn a0, a0, a2, 4 CombineRgn a0, a0, b6, 2 CombineRgn a0, a0, b7, 4 CombineRgn a0, a0, b8, 4 CombineRgn a0, a0, kotak_a, 4 CombineRgn a0, a0, kotak_b, 4 CombineRgn a0, a0, circle_a, 4 CombineRgn a0, a0, circle_b, 4 CombineRgn a0, a0, elips_a, 4 CombineRgn a0, a0, elips_b, 4 CombineRgn a0, a0, segi3a, 4 CombineRgn a0, a0, btg2, 4 CombineRgn a0, a0, btg3, 2 CombineRgn a0, a0, yinyang, 4 CombineRgn a0, a0, yin, 2
CombineRgn a0, a0, yin1, 2 CombineRgn a0, a0, yang, 4 CombineRgn a0, a0, p_l, 4 CombineRgn a0, a0, pe_l, 2 CombineRgn a0, a0, pe_le, 4 SetWindowRgn Me.hwnd, a0, TrueEnd Sub