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 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 lain (atau prosedur) 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 ditentukan, 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) () 

Di 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 memutus kode 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

   
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 (termasuk 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

GetWindowLong

Referensi

SetClassLong

SetWindowLong

Prosedur Jendela