Bagikan melalui


Fungsi SendMessageCallbackA (winuser.h)

Mengirim pesan yang ditentukan ke jendela atau jendela. Ini memanggil prosedur jendela untuk jendela yang ditentukan dan segera kembali jika jendela milik utas lain. Setelah prosedur jendela memproses pesan, sistem memanggil fungsi panggilan balik yang ditentukan, meneruskan hasil pemrosesan pesan dan nilai yang ditentukan aplikasi ke fungsi panggilan balik.

Sintaks

BOOL SendMessageCallbackA(
  [in] HWND          hWnd,
  [in] UINT          Msg,
  [in] WPARAM        wParam,
  [in] LPARAM        lParam,
  [in] SENDASYNCPROC lpResultCallBack,
  [in] ULONG_PTR     dwData
);

Parameter

[in] hWnd

Jenis: HWND

Handel ke jendela yang prosedur jendelanya akan menerima pesan. Jika parameter ini HWND_BROADCAST ((HWND)0xffff), pesan dikirim ke semua jendela tingkat atas dalam sistem, termasuk jendela yang tidak berperkara yang dinonaktifkan atau tidak terlihat, jendela yang tumpang tindih, dan jendela pop-up; tetapi pesan tidak dikirim ke jendela anak.

[in] Msg

Jenis: UINT

Pesan yang akan dikirim.

Untuk daftar pesan yang disediakan sistem, lihat Pesan yang Ditentukan Sistem.

[in] wParam

Jenis: WPARAM

Informasi khusus pesan tambahan.

[in] lParam

Jenis: LPARAM

Informasi khusus pesan tambahan.

[in] lpResultCallBack

Jenis: SENDASYNCPROC

Penunjuk ke fungsi panggilan balik yang dipanggil sistem setelah prosedur jendela memproses pesan. Untuk informasi selengkapnya, lihat SendAsyncProc.

Jika hWndHWND_BROADCAST ((HWND)0xffff), sistem memanggil fungsi panggilan balik SendAsyncProc sekali untuk setiap jendela tingkat atas.

[in] dwData

Jenis: ULONG_PTR

Nilai yang ditentukan aplikasi untuk dikirim ke fungsi panggilan balik yang ditunjukkan oleh parameter lpCallBack .

Nilai kembali

Jenis: BOOL

Jika fungsi berhasil, nilai yang dikembalikan bukan nol.

Jika fungsi gagal, nilai yang dikembalikan adalah nol. Untuk mendapatkan informasi kesalahan yang diperluas, hubungi GetLastError.

Keterangan

Jika jendela target milik utas yang sama dengan pemanggil, maka prosedur jendela dipanggil secara sinkron, dan fungsi panggilan balik dipanggil segera setelah prosedur jendela kembali. Jika jendela target milik utas yang berbeda dari pemanggil, maka fungsi panggilan balik hanya dipanggil ketika utas yang disebut SendMessageCallback juga memanggil GetMessage, PeekMessage, atau WaitMessage.

Jika Anda mengirim pesan dalam rentang di bawah ini WM_USER ke fungsi pesan asinkron (PostMessage, SendNotifyMessage, dan SendMessageCallback), parameter pesannya tidak dapat menyertakan pointer. Jika tidak, operasi akan gagal. Fungsi akan kembali sebelum utas penerima memiliki kesempatan untuk memproses pesan dan pengirim akan membebaskan memori sebelum digunakan.

Aplikasi yang perlu berkomunikasi menggunakan HWND_BROADCAST harus menggunakan fungsi RegisterWindowMessage untuk mendapatkan pesan unik untuk komunikasi antar aplikasi.

Sistem hanya melakukan marshalling untuk pesan sistem (yang berada dalam rentang 0 hingga (WM_USER-1)). Untuk mengirim pesan lain (pesan >= WM_USER) ke proses lain, Anda harus melakukan marshalling kustom.

Catatan

Header winuser.h mendefinisikan SendMessageCallback sebagai alias yang secara otomatis memilih versi ANSI atau Unicode dari fungsi ini berdasarkan definisi konstanta pra-prosesor UNICODE. Mencampur penggunaan alias encoding-netral dengan kode yang tidak mengodekan-netral dapat menyebabkan ketidakcocokan yang mengakibatkan kesalahan kompilasi atau runtime. Untuk informasi selengkapnya, lihat Konvensi untuk Prototipe Fungsi.

Persyaratan

Persyaratan Nilai
Klien minimum yang didukung Windows 2000 Professional [hanya aplikasi desktop]
Server minimum yang didukung Windows 2000 Server [hanya aplikasi desktop]
Target Platform Windows
Header winuser.h (sertakan Windows.h)
Pustaka User32.lib
DLL User32.dll
Set API ext-ms-win-ntuser-message-l1-1-0 (diperkenalkan dalam Windows 8)

Lihat juga

Konseptual

Pesan dan Antrean Pesan

PostMessage

Referensi

RegisterWindowMessage

SendAsyncProc

SendMessageCallback

SendNotifyMessage