pesan WM_CHAR

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

Parameters

wParam

Kode karakter kunci.

lParam

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

Bit Meaning
0-15 Jumlah pengulangan untuk pesan saat ini. Nilainya adalah berapa kali penekanan tombol direpetik otomatis 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. Nilai tergantung pada OEM.
24 Menunjukkan apakah kunci adalah tombol yang diperluas, seperti tombol ALT dan CTRL kanan yang muncul pada keyboard tombol 101- atau 102 yang ditingkatkan. Nilainya adalah 1 jika merupakan kunci yang diperluas; jika tidak, itu adalah 0.
25-27 Dipesan; jangan gunakan.
28 Bendera mode menu. Nilainya adalah 1 jika menu aktif; jika tidak, nilainya adalah 0.
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.

Mengembalikan nilai

Aplikasi harus mengembalikan nol jika memproses pesan ini.

Example

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.

Remarks

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, pesan WM_CHAR 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 berurutan tinggi hanya berlaku untuk pesan WM_KEYDOWN terbaru yang mendahului postingan pesan WM_CHAR .

Untuk keyboard 101 dan 102 tombol yang ditingkatkan, tombol yang diperluas adalah ALT kanan dan tombol CTRL kanan di 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.

Requirements

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

Baca juga