-PERTEMUAN KEDUA-
Messages Adalah cara dari Windows memberitahu program anda bahwa terjadi sesuatu inputan dan anda harus memprosesnya Messages dari form anda dikirimkan ketika user mengeklik button, menggerakkan mouse keatasnya, ataupun mengetikkan sesuatu.
Messages parameter Semua Messages dikirimkan dengan empat buah parameter, yaitu Window handle adalah handle dari window dari message message identifier adalah tipe dari input (klik, mouse, dll)
Messages parameter Dua buah 32-bit (Long) values. adalah informasi tambahan dari message. Misalnya koordinat mouse
Messages behavior Ketika message dikirimkan kepada user, mungkin user tidak akan melihatnya. Sebab message ditangkap oleh VB Dibaca, kemudian disampaikan kepada user dalam bentuk informasi yang penting- penting saja Dan dalam bentuk yang lebih baik
Messages behavior Misal: ketika user menggerakkan mouse melewati sebuah form, maka Windows mengirim WM_MOUSEMOVE kepada window tersebut, VB mengambil message tadi dan parameternya, kemudian mengeksekusi kode yang berada dalam event Button_MouseMove
Messages behavior Dalam prosesnya, VB mengubah nilai 32-bit kedua dari message (berisi koordinat x dan y dalam pixel, masing-masing 16-bit) menjadi dua type twips.
Messages Return Value Sekarang, misalnya anda membutuhkan koordinat pixel dari mouse. Padahal VB sudah mengkonversinya menjadi twips. Mau tidak mau anda harus mengubahnya kembali menjadi bentuk pixels. Hal yang aneh, sebab windows memberikan apa yang anda butuhkan (pixel) namun VB mengubah “seenaknya” menjadi bentuk lain (twips)
Messages Return Value Pertanyaanya adalah bisakah saya menghindari hal ini?. Jawabnya adalah SubClassing. Namun jangan dilakukan bila tidak benar- benar penting, sebab menyusahkan dan juga melanggar konsep “safe programming” di VB
SendMessage Anda bisa mengirimkan pesan kepada window milik diri anda sendiri dengan menggunakan fungsi SendMessage or PostMessage SendMessage Akan langsung menyebabkan window memproses message secepatnya
PostMessage Sedangkan PostMessage akan dimasukkan terlebih dahulu ke dalam message queue sesudah message lainnya sudah terproses Anda harus menyebutkan window handle yang akan anda kirimi message (message identifier) Bisa dilihat di VB API text Viewer
Some Windows Specifics Windows mengenali semua form, control, menu, menu item, atau apapun dengan melalui handle Ketika aplikasi dijalankan, setiap control didalamnya terdapat handle yang kemudian digunakan untuk memisahkan button dari control-control selainnya Bila ingin melakukan semua operasi dalam button melalui API, anda harus menggunakan handle ini
Some Windows Specifics -2- Darimana mendapatkannya? VB telah menyediakan property Hwnd untuk semua control yang mempunyai handle dalam windows Windows berjalan dengan sistem pixel bukan sistem twips.
Some Windows Specifics -3- Rumus pengkonversi dari twips ke pixels. dan sebaliknya. Menggunakan variabel TwipsPerPixelX dan TwipsPerPixelY: pixXValue = twipXValue \ Screen.TwipsPerPixelX pixYValue = twipYValue \ Screen.TwipsPerPixelY twipXValue = pixXValue * Screen.TwipsPerPixelX twipYValue = pixYValue * Screen.TwipsPerPixelY
Some Windows Specifics -4- Windows menggunakan sistem koordinat yang berbeda dalam function. Hati-hati Syntax error pada bagian API call mungkin menyebabkan VB menjadi crash. Hati-hati!
Some Windows Specifics -5- VB tidak bisa mendebug API, bila program anda berjalan aneh ataupun crash, ceklah bagian pemanggila API pada kode anda. Misalnya kurang sintax ByVal. Salah parameter, ataupun yang lainnya
Where to get the funs descriptions from Untuk mendapatkan penjelasan dari function-function API, gunakan SDK help file ataupun Microsoft SDK documentation Beberapa dokumentasi disertakan langsung dalam bundel. Misalnya di Borland Delphi 3.0 atuapun MS Visual C++. Carilah di Internet