Bagikan melalui


WM_CHAR pesan

Diposting ke jendela dengan fokus keyboard saat pesan WM_KEYDOWN diterjemahkan oleh fungsi TranslateMessage . Pesan WM_CHAR berisi kode karakter tombol yang ditekan.

#define WM_CHAR                         0x0102

Parameter

wParam

Kode karakter kunci.

lParam

Jumlah berulang, kode pemindaian, bendera extended-key, kode konteks, bendera status kunci sebelumnya, dan bendera status transisi, seperti yang ditunjukkan dalam tabel berikut.

Bit Makna
0-15 Jumlah pengulangan untuk pesan saat ini. Nilainya adalah berapa kali penekanan tombol di-autorepeated sebagai akibat dari pengguna yang menahan kunci. Jika penekanan tombol ditahan cukup lama, beberapa pesan akan dikirim. Namun, jumlah pengulangan tidak kumulatif.
16-23 Kode pemindaian. Nilainya tergantung pada OEM.
24 Menunjukkan apakah kunci adalah kunci yang diperluas, seperti tombol ALT dan CTRL kanan yang muncul pada keyboard 101- atau 102-tombol yang disempurnakan. Nilainya adalah 1 jika merupakan kunci yang diperluas; jika tidak, itu adalah 0.
25-28 Dipesan; jangan gunakan.
29 Kode konteks. Nilainya adalah 1 jika tombol ALT ditahan saat tombol ditekan; jika tidak, nilainya adalah 0.
30 Status kunci sebelumnya. Nilainya adalah 1 jika kunci tidak berfungsi sebelum pesan dikirim, atau 0 jika kunci naik.
31 Status transisi. Nilainya adalah 1 jika kunci sedang dirilis, atau 0 jika tombol sedang ditekan.

Untuk detail selengkapnya, lihat Bendera Pesan Keystroke.

Menampilkan nilai

Aplikasi harus mengembalikan nol jika memproses pesan ini.

Contoh

LRESULT CALLBACK WndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
    switch (message)
    {
   
    // ...

    case WM_CHAR:
        OnKeyPress(wParam);
        break;

    default:
        return DefWindowProc(hwnd, message, wParam, lParam);
    }
    return 0;
}

Contoh dari Sampel Klasik Windows di GitHub.

Keterangan

Pesan WM_CHAR menggunakan unit kode UTF-16 (Format Transformasi Unicode 16-bit) di wParam-nya jika versi Unicode dari fungsi RegisterClass digunakan untuk mendaftarkan kelas jendela. Jika tidak, sistem menyediakan karakter di halaman kode proses saat ini, yang dapat diatur ke UTF-8 di Windows Versi 1903 (Pembaruan Mei 2019) dan yang lebih baru. Untuk informasi selengkapnya, lihat Mendaftarkan Kelas Jendela dan Menggunakan halaman kode UTF-8 di aplikasi Windows.

Dimulai dengan Windows Vista, WM_CHAR pesan dapat mengirim pasangan pengganti UTF-16 ke jendela Unicode. Gunakan makro IS_HIGH_SURROGATE, IS_LOW_SURROGATE, dan IS_SURROGATE_PAIR untuk mendeteksi kasus tersebut, jika perlu.

Belum tentu ada korespondensi satu-ke-satu antara tombol yang ditekan dan pesan karakter yang dihasilkan, sehingga informasi dalam kata urutan tinggi parameter lParam umumnya tidak berguna untuk aplikasi. Informasi dalam kata urutan tinggi hanya berlaku untuk pesan WM_KEYDOWN terbaru yang mendahului postingan pesan WM_CHAR .

Untuk keyboard 101 dan 102 tombol yang disempurnakan, tombol yang diperluas adalah ALT kanan dan tombol CTRL kanan pada bagian utama keyboard; tombol INS, DEL, HOME, END, PAGE UP, PAGE DOWN dan panah di kluster di sebelah kiri keypad numerik; dan tombol bagi (/) dan ENTER di keypad numerik. Beberapa keyboard lain mungkin mendukung bit extended-key dalam parameter lParam .

Pesan WM_UNICHAR sama dengan WM_CHAR, kecuali menggunakan UTF-32. Ini dirancang untuk mengirim atau memposting karakter Unicode ke jendela ANSI, dan dapat menangani karakter Bidang Tambahan Unicode.

Persyaratan

Persyaratan Nilai
Klien minimum yang didukung
Windows 2000 Professional [hanya aplikasi desktop]
Server minimum yang didukung
Windows 2000 Server [hanya aplikasi desktop]
Header
Winuser.h (termasuk Windows.h)

Lihat juga