PEMROGRAMAN API [API parameter types]
API parameter types
p Terdapat
parameter yang asing seperti VOID, LPCSTR or DWORD.
p Bila
anda familiar dengan C, maka anda mustinya sudah mengetahui tipe tersebut
p Contoh
lain adalah HWND, HDC, HMENU
p Kesemuanya
diawali dengan huruf “H”, yang artinya adalah handle untuk tipe object
yang berbeda
p Misalnya
HBITMAP adalah handle untuk BITMAP, HBRUSH adalah handle untuk BRUSH, dan
lain-lain
p Semuanya
dikonversikan ke Long dan harus dipassingkan secara ByVal
p Beberapa
Type diawali dengan LP. Merupakan singkatan dari Long Pointer.
p Jadi
LPWORD sebenarnya adalah alokasi memori dimana data disimpan
p Ketika
anda memassing argumen dengan menggunakan ByRef (default), maka anda sebenarnya
memassing alamat
p Ingat,
bila parameter type anda diawali dengan LP, maka anda harus memassingnya secara
ByRef.
p Tapi
LPARAM adalah sama seperti Lparam, bukan LParam. Artinya dia bukan pointer.
Anda harus memassingnya secara ByVal
p Untuk
type NULL. Biasanya dipassing sebagai ByVal 0& atau sebagai vbNullString.
p Untuk
type VOID. Ingatlah bahwa API tidak mempunyai Sub.
Any
p Beberapa
messages mengandurng parameter yang dideklarasikan sebagai Any.
p Artinya
parameter bisa bervariasi
p Anda
bisa memassing integer, string, user defined types, ataupun yang lainnya
p Berikut
ini adalah contoh function (SendMessage) yang mengandung parameter bertype 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
p lParam
dideklarasikan ByRef (default) sebagai Any.
p Aturan
yang harus diikuti bila memassing type berbeda kepada lParam.
n Numeric
à ByVal (As Long, or As Any)
n Null
à ByVal (As Long, or As
Any)
n String
à ByRef (As String, or As Any)
n Type
à ByRef (As Any)
n array
à of Type ByRef (As Any)
p CONTOH:
Call
SendMessage
( Me.Hwnd,
WM_XXXX,
0&,
ByVal
LongValue
)
p Tiga
parameter pertama adalah standar. Karena dideklarasikan secara ByVal.
p Parameter
keempat (LongValue) jika dibiarkan, maka akan dilakukan secara ByRef. Sebab VB
tidak mengenali parameter apa yang akan dipassing
p Oleh
karena itu, harus ditulis secara eksplisit ByVal di depannya
p Lebih
mudah bila kita membuat beberapa versi dari satu fungsi yang sama.
p Penting
untuk pemanggilan yang berbeda
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
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
p Perhatikan
bahwa tipe parameter tidak mengubah API.
p Parameter
keempat adalah selalu 4-byte.
p Ketika
kita memassing nilai Long atau Null ByVal, 4-byte value akan dipassing secara
langsung ke function.
p Namun
apabila yang dipassing adalah String atau yang lainnya, maka yang terjadi
adalah ByRef
p sehingga
VB sebenarnya memassing alamat dari variabel tersebut, yaitu nilai 4-byte
value.
No comments:
Post a Comment
silahkan membaca dan berkomentar