bab 2-window region

11
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

Upload: nieko-widyansyah

Post on 05-Jul-2015

223 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: BAB 2-Window Region

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

Page 2: BAB 2-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

Page 3: BAB 2-Window Region

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

Page 4: BAB 2-Window Region

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.

Page 5: BAB 2-Window Region

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

Page 6: BAB 2-Window Region

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

Page 7: BAB 2-Window Region

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,

Page 8: BAB 2-Window Region

Bab 2 : Control ActiveX Form / Windows Region

Page 9: BAB 2-Window 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