Saat memprogram di Windows, kita sering menemukan banyak fungsi yang sudah diimplementasikan oleh sistem Windows. Jika dapat dipanggil secara langsung, hal ini dapat menghemat banyak penulisan program dan meningkatkan efisiensi pengoperasian program. Dalam banyak kasus, kita dapat menggunakan "Ctrl + Mampu memanggil fungsi-fungsi sistem ini dalam suatu program menghilangkan kebutuhan untuk khawatir tentang bagaimana mengimplementasikan operasi ini. Setelah penjelajahan terus-menerus, saya akhirnya menemukan bahwa SendMessage dan PostMessage dapat melakukan tugas penting ini. Ini adalah sebuah harta karun, jadi saya tidak sabar untuk memperkenalkannya kepada semua teman saya.
Kedua fungsi API ini dapat dengan mudah ditemukan menggunakan "API Browser" VB5:
DeklarasikanFunctionSendMessageLib "user32" Alias "SendMessageA"_(ByValhwndAsLong,ByValwMsgAsLong,ByValwParamAsLong,_lParamAsAny)AsLong
DeklarasikanFunctionPostMessageLib "user32" Alias "PostMessageA"_(ByValhwndAsLong,ByValwMsgAsLong,ByValwParamAsLong,_ByVallParamAsLong)AsLong
Fungsi kedua fungsi ini hampir sama, hanya saja SendMessage langsung memanggil fungsi Windows untuk mengirim pesan. Fungsi ini kembali hanya setelah pesan selesai diproses, sedangkan PostMessage menambahkan pesan ke antrian pesan di formulir Pesan ini akan ditangani selama penanganan acara normal pada suatu waktu di masa mendatang. Berikut ini hanya menggunakan SendMessage sebagai contoh.
Meskipun ada empat parameter dalam fungsi tersebut, yang utama adalah dua parameter pertama: hwnd dan wMsg. Hwnd adalah sebuah pegangan. Setiap formulir dan kontrol dalam aplikasi Microsoft Windows memiliki pegangannya. Pegangan tersebut dapat menunjukkan objek operasi dari fungsi tersebut;
Berikut ini contoh spesifik yang digunakan untuk mengilustrasikan cara menggunakan SendMessage untuk mengimplementasikan fungsi "potong", "salin", "tempel", "batalkan" dan "hapus":
Tempatkan kotak teks Text1 dan lima tombol di formulir untuk menjalankan lima fungsi di atas, dan tulis program berikut.
Opsi Eksplisit
PRivateDeclareFunctionSendMessageLib "user32" Alias "SendMessageA"_(ByValhwndAsLong,ByValwMsgAsLong,ByValwParamAsLong,lParamAsAny)AsLong
KonstWM_CUT=&H300
KonstWM_COPY=&H301
KonstWM_PAST=&H302
KonstWM_CLEAR=&H303
KonstWM_UNDO=&H304
DimfbAsPanjang
PrivateSubcmdClear_Click()
fb=Pesan Pos(Teks1.hwnd,WM_CLEAR,0,0)
Sub Akhir
PrivateSubcmdCopy_Click()
fb=KirimPesan(Teks1.hwnd,WM_COPY,0,0)
Sub Akhir
PribadiSubcmdCut_Click()
fb=KirimPesan(Teks1.hwnd,WM_CUT,0,0)
Sub Akhir
PrivateSubcmdPast_Click()
fb=KirimPesan(Teks1.hwnd,WM_PAST,0,0)
Sub Akhir
PrivateSubcmdUndo_Click()
fb=KirimPesan(Teks1.hwnd,WM_UNDO,0,0)
Sub Akhir
Selain TextBox, SendMessage juga dapat beroperasi pada RitchTextBox dan ComboBox, dll., selama parameter hwnd diubah. ->