Fungsi CallWindowProcW (winuser.h)
Meneruskan informasi pesan ke prosedur jendela yang ditentukan.
Sintaks
LRESULT CallWindowProcW(
[in] WNDPROC lpPrevWndFunc,
[in] HWND hWnd,
[in] UINT Msg,
[in] WPARAM wParam,
[in] LPARAM lParam
);
Parameter
[in] lpPrevWndFunc
Jenis: WNDPROC
Prosedur jendela sebelumnya. Jika nilai ini diperoleh dengan memanggil fungsi GetWindowLong dengan parameter nIndex yang diatur ke GWL_WNDPROC atau DWL_DLGPROC, sebenarnya alamat jendela atau prosedur kotak dialog, atau nilai internal khusus yang bermakna hanya untuk CallWindowProc.
[in] hWnd
Jenis: HWND
Handel ke prosedur jendela untuk menerima pesan.
[in] Msg
Jenis: UINT
Pesannya.
[in] wParam
Jenis: WPARAM
Informasi khusus pesan tambahan. Konten parameter ini bergantung pada nilai parameter Msg .
[in] lParam
Jenis: LPARAM
Informasi khusus pesan tambahan. Konten parameter ini bergantung pada nilai parameter Msg .
Nilai kembali
Jenis: LRESULT
Nilai yang dikembalikan menentukan hasil pemrosesan pesan dan bergantung pada pesan yang dikirim.
Keterangan
Gunakan fungsi CallWindowProc untuk subkelas jendela. Biasanya, semua jendela dengan kelas yang sama berbagi satu prosedur jendela. Subkelas adalah jendela atau sekumpulan jendela dengan kelas yang sama yang pesannya dicegat dan diproses oleh prosedur jendela (atau prosedur) lain sebelum diteruskan ke prosedur jendela kelas.
Fungsi SetWindowLong membuat subkelas dengan mengubah prosedur jendela yang terkait dengan jendela tertentu, menyebabkan sistem memanggil prosedur jendela baru alih-alih yang sebelumnya. Aplikasi harus meneruskan pesan apa pun yang tidak diproses oleh prosedur jendela baru ke prosedur jendela sebelumnya dengan memanggil CallWindowProc. Ini memungkinkan aplikasi untuk membuat rantai prosedur jendela.
Jika STRICT didefinisikan, parameter lpPrevWndFunc memiliki jenis data WNDPROC. Jenis WNDPROC dinyatakan sebagai berikut:
LRESULT (CALLBACK* WNDPROC) (HWND, UINT, WPARAM, LPARAM);
Jika STRICT tidak ditentukan, parameter lpPrevWndFunc memiliki jenis data FARPROC. Jenis FARPROC dinyatakan sebagai berikut:
int (FAR WINAPI * FARPROC) ()
Dalam C, deklarasi FARPROC menunjukkan fungsi panggilan balik yang memiliki daftar parameter yang tidak ditentukan. Namun, dalam C++, daftar parameter kosong dalam deklarasi menunjukkan bahwa fungsi tidak memiliki parameter. Perbedaan halus ini dapat merusak kode yang ceroboh. Berikut ini adalah salah satu cara untuk menangani situasi ini:
#ifdef STRICT
WNDPROC MyWindowProcedure
#else
FARPROC MyWindowProcedure
#endif
...
lResult = CallWindowProc(MyWindowProcedure, ...) ;
Untuk informasi lebih lanjut tentang fungsi yang dideklarasikan dengan daftar argumen kosong, lihat Bahasa Pemrograman C++, Edisi Kedua, oleh Bjarne Stroustrup.
Fungsi CallWindowProc menangani konversi Unicode-ke-ANSI. Anda tidak dapat memanfaatkan konversi ini jika Anda memanggil prosedur jendela secara langsung.
Contoh
Misalnya, lihat Subkelas Jendela
Catatan
Header winuser.h mendefinisikan CallWindowProc 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-window-l1-1-4 (diperkenalkan dalam Windows 10, versi 10.0.14393) |
Lihat juga
Konseptual
Referensi