180 likes | 327 Views
PEMROGRAMAN API. - PERTEMUAN 3 -. API parameter types. Terdapat parameter yang asing seperti VOID , LPCSTR or DWORD . Bila anda familiar dengan C, maka anda mustinya sudah mengetahui tipe tersebut. API parameter types. Contoh lain adalah HWND , HDC , HMENU
E N D
PEMROGRAMAN API - PERTEMUAN 3 -
API parameter types • Terdapat parameter yang asing seperti VOID, LPCSTR or DWORD. • Bila anda familiar dengan C, maka anda mustinya sudah mengetahui tipe tersebut
API parameter types • Contoh lain adalah HWND, HDC, HMENU • Kesemuanya diawali dengan huruf “H”, yang artinya adalah handle untuk tipe object yang berbeda
API parameter types • Misalnya HBITMAP adalah handle untuk BITMAP, HBRUSH adalah handle untuk BRUSH, dan lain-lain • Semuanya dikonversikan ke Long dan harus dipassingkan secara ByVal
API parameter types • Beberapa Type diawali dengan LP. Merupakan singkatan dari Long Pointer. • Jadi LPWORD sebenarnya adalah alokasi memori dimana data disimpan • Ketika anda memassing argumen dengan menggunakan ByRef (default), maka anda sebenarnya memassing alamat
API parameter types • Ingat, bila parameter type anda diawali dengan LP, maka anda harus memassingnya secara ByRef. • Tapi LPARAM adalah sama seperti Lparam, bukan LParam. Artinya dia bukan pointer. Anda harus memassingnya secara ByVal
API parameter types • Untuk type NULL. Biasanya dipassing sebagai ByVal0& atau sebagai vbNullString. • Untuk type VOID. Ingatlah deklarasi haruslah berbentuk Sub.
Any • Beberapa messages mengandung parameter yang dideklarasikan sebagai Any. • Artinya parameter bisa bervariasi • Anda bisa memassing integer, string, user defined types, ataupun yang lainnya • Berikut ini adalah contoh function (SendMessage) yang mengandung parameter bertype Any
Any • Public Declare Function SendMessage Lib "User32" Alias "SendMessageA" ( ByVal Hwnd as Long, ByVal wMsg as Long, ByVal wParam as Long, lParam as Any ) as Long
Any • lParam dideklarasikan ByRef (default) sebagai Any. • Aturan yang harus diikuti bila memassing type berbeda kepada lParam. • Numeric ByVal (As Long, or As Any) • Null ByVal (As Long, or As Any) • String ByRef (As String, or As Any) • Type ByRef (As Any) • array of Type ByRef (As Any)
Any CONTOH: Call SendMessage ( Me.Hwnd, WM_XXXX, 0&, ByVal LongValue )
Any • Tiga parameter pertama adalah standar. Karena dideklarasikan secara ByVal. • Parameter keempat (LongValue) jika dibiarkan, maka akan dilakukan secara ByRef. Sebab VB tidak mengenali parameter apa yang akan dipassing • Oleh karena itu, harus ditulis secara eksplisit ByVal di depannya
Any • Lebih mudah bila kita membuat beberapa versi dari satu fungsi yang sama. • Penting untuk pemanggilan yang berbeda
Any • Public Declare Function SendMessageLng Lib "User32" Alias "SendMessageA" ( ByVal Hwnd as Long, ByVal wMsg as Long, ByVal wParam as Long, ByVal lParam as Long ) as Long
Any • Public Declare Function SendMessageStr Lib "User32" Alias "SendMessageA" ( ByVal Hwnd as Long, ByVal wMsg as Long, ByVal wParam as Long, lParam as String ) as Long
Any • Perhatikan bahwa tipe parameter tidak mengubah API. • Parameter keempat adalah selalu 4-byte. • Ketika kita memassing nilai Long atau Null ByVal, 4-byte value akan dipassing secara langsung ke function.
Any • Namun apabila yang dipassing adalah String atau yang lainnya, maka yang terjadi adalah ByRef • sehingga VB sebenarnya memassing alamat dari variabel tersebut, yaitu nilai 4-byte value.