Anda di halaman 1dari 9

Bab 2 : Control ActiveX Form / Windows Region

TUGAS III PEMROGRAMAN API

Windows Region

Di Susun Oleh: Nieko W Akhmad Shohib Alfiyan Chandra Adi K 0834015002 0834015008 0834015014 0834015021

JURUSAN TEKNIK INFORMATIKA FAKULTAS TEKNIK INDUSTRI UNIVERSITAS PEMBANGUNAN NASIONAL VETERAN JATIM 2010

BAB Window Region

Bab 2 : Control ActiveX Form / Windows Region

BAB 2 Control ActiveX Form / Windows Region

PENGENALAN WINDOWS REGION

Ruang Lingkup Pembahasan

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.

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,

Tujuan

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 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. 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: bentuk default dari windows. Dengan API region ini kita bisa menciptakan style form yang berbeda.

Bab 2 : Control ActiveX Form / Windows Region

CombineRgn CreateEllipticRgn CreateEllipticRgnIndirect CreatePolygonRgn CreatePolyPolygonRgn CreateRectRgn CreateRectRgnIndirect CreateRoundRectRgn OffsetRgn PathToRegion PtlnRegion

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

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 :

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. 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
Gambar 1. Form Berbentuk Ellips

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

Bab 2 : Control ActiveX Form / Windows Region

pola = mode yang digunakan dalam operasi penggabungan dan merupakan suatu konstanta. Macam-macam pola proses dalam fungsi CombineRgn

1. http://fat04.wordpress.com, 09 Oktober 2010, 13.34 pm 2. http://www.downloadebookgratis.com, 09 Oktober 2010, 14.02


pm Ilustrasi combine

3. http://id.wikipedia.org/w/index.php?title=Window_region,
Oktober 2010, 14.40 pm

09

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 Long Private Declare Function CreateEllipticRgn Lib "gdi32" Private Type COORD ByVal Y1 As Long, ByVal X2 As (ByVal X1 As Long, x As ByVal Long, Long Y2 As Long) As Long y As Long Private Declare Function CreateRectRgn Lib "gdi32" End Type As Long, ByVal Y1 As Long, ByVal X2 As (ByVal X1 Private ByValPOINTAPI Long, Type Y2 As Long) As Long x As Long Private Declare Function CreateRoundRectRgn Lib y As Long "gdi32" (ByVal X1 As Long, ByVal Y1 As Long, ByVal End Type X2 As Long, ByVal Y2 As Long, ByVal X3 As Long, Private Sub Form_DblClick() ByVal Y3 As Long) As Long 'Untuk menutup form1 CreatePolygonRgn Private Declare Functionketika didobel klik Lib End "gdi32" (lpPoint As Any, ByVal nCount As Long, ByVal End Sub nPolyFillMode As Long) As Long Private Sub Form_Load() CreatePolyPolygonRgn Lib Private Declare Function 'bendera luar "gdi32" (lpPoint As POINTAPI, lpPolyCounts As Long, a0 = CreateRectRgn(0, 100, 999, 500) ByVal nCount As Long, ByVal nPolyFillMode As Long) a1 = CreateEllipticRgn(-30, 60, 450, 200) As Long a2 = CreateEllipticRgn(430, 5, 1000, 170) Private Declare Function SetWindowRgn Lib "user32" (ByVal hwnd As Long, ByVal hRgn As Long, ByVal nKoor = 3 bRedraw As Boolean) As Long segi_a3(1).x = 450 Private Declare Sub ReleaseCapture Lib "user32" () segi_a3(1).y = 60 segi_a3(2).x = 420 Const ALTERNATE = 1 ' ALTERNATE and WINDING are segi_a3(2).y = 94 Const WINDING = 2 ' constants for FillMode. segi_a3(3).x To 3) Dim segi_a3(1= 470 As COORD, nKoor As Long, a3 As segi_a3(3).y = 130 Long ' Creates region to fill with color. Dim bintang1(1 To 3) As COORD, ns3a As Long, a3 = As Long segi3aCreatePolygonRgn(segi_a3(1), nKoor, ALTERNATE) Dim bintang2(1 To 3) As COORD, nBtg As Long, btg2 a4 = CreateEllipticRgn(-30, 440, 453, 580) As Long a5 bintang3(1 To 3) As COORD, 1000, 575) Dim = CreateEllipticRgn(450, 430,nBtg3 As Long, btg3 'lubang dalam sebelah kiri As Long a6 pl(1 To 3) As COORD, npl As 440, p_l As Dim = CreateEllipticRgn(-30, 130,Long, 230) Long a7 pel(1 To 3) As COORD, npel As Long, pe_l Dim = CreateEllipticRgn(-30, 170, 440, 270) As a8 = Long CreateEllipticRgn(-30, 350, 440, 450) a9 pele(1 To 3) As COORD, npele As 490) Dim = CreateEllipticRgn(-30, 390, 440,Long, pe_le As a10 = CreateRectRgn(0, 100, 80, 420) b1 = CreateRectRgn(80, 150, 130, 380)

'lubang b2 = b3 = b4 = b5 = b6 = b7 =

dalamnBtg3 = 3 sebelah kanan CreateEllipticRgn(420, 100, 970, 270) bintang3(1).x = 220 CreateEllipticRgn(420, 60, 970, 230) bintang3(1).y = 320 CreateEllipticRgn(420, 310, 970, 490) bintang3(2).x = 320 CreateEllipticRgn(420, 260, 900, 450) bintang3(2).y = 320 CreateRectRgn(900, 150, 1000, 500) bintang3(3).x = 270 CreateRectRgn(850, 220, 900, 450) bintang3(3).y = 290 btg3 = CreatePolygonRgn(bintang3(1), nBtg3, ALTERNATE)

'variasi b8 = CreateRectRgn(940, 180, 960, 490) 'Yin & Yang kotak_a = CreateRectRgn(60, 100, 170, 120) 300, 700, 400) yinyang = CreateEllipticRgn(600, kotak_b = CreateRectRgn(780, 510, 880, 340, 680, 410) yin = CreateEllipticRgn(630, 530) circle_a = CreateEllipticRgn(200, 80, 240, 120) yin1 = CreateRectRgn(580, 300, 645, 400) circle_b = CreateEllipticRgn(700, 510, 740, 300, 680, 350) yang = CreateEllipticRgn(630, 550) elips_a = CreateEllipticRgn(270, 90, 330, 110) elips_b = CreateEllipticRgn(560, 520, 680, 540) 'penghalus lengkungan npl = 3 'bintang pl(1).x = 415 ns3a = 3 pl(1).y = 195 bintang1(1).x = 275 430 pl(2).x = bintang1(1).y = 290 195 pl(2).y = bintang1(2).x = 200 440 pl(3).x = bintang1(2).y = 240 215 pl(3).y = bintang1(3).x = = CreatePolygonRgn(pl(1), npl, ALTERNATE) p_l 350 bintang1(3).y = 240 npel = 3 segi3a = CreatePolygonRgn(bintang1(1), ns3a, pel(1).x = 424 ALTERNATE) pel(1).y = 382

pel(2).x = 428 nBtg = 3 pel(2).y = 375 bintang2(1).x = 270 = 440 pel(3).x bintang2(1).y = 200 = 392 pel(3).y bintang2(2).x = 220 pe_l = CreatePolygonRgn(pel(1), npel, ALTERNATE) bintang2(2).y = = 3 npele 320 bintang2(3).x = 320 = 420 pele(1).x bintang2(3).y = 320 = 420 pele(1).y btg2 = CreatePolygonRgn(bintang2(1), ns3a, pele(2).x = 428 ALTERNATE) pele(2).y = 400 pele(3).x = 440 pele(3).y = 433

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 CombineRgn CombineRgn CombineRgn CombineRgn a0, a0, a0, a0, a0, a0, a0, a0, a0, a0, a5, a6, a7, a8, a9, 2 4 2 4 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, True End Sub

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 CombineRgn CombineRgn CombineRgn CombineRgn CombineRgn CombineRgn CombineRgn CombineRgn CombineRgn CombineRgn CombineRgn CombineRgn CombineRgn CombineRgn CombineRgn CombineRgn a0, a0, a0, a0, a0, a0, a0, a0, a0, a0, a0, a0, a0, a0, a0, a0, a0, a0, a0, a0, a0, a0, a0, a0, a0, a0, a0, a0, a0, a0, a0, a0, a0, a0, b2, 4 b3, 2 a2, 4 b6, 2 b7, 4 b8, 4 kotak_a, 4 kotak_b, 4 circle_a, 4 circle_b, 4 elips_a, 4 elips_b, 4 segi3a, 4 btg2, 4 btg3, 2 yinyang, 4 yin, 2

Anda mungkin juga menyukai