String Komposisi
String komposisi adalah teks saat ini di jendela komposisi. Ini adalah teks yang dikonversi IME menjadi karakter akhir. Setiap string komposisi terdiri dari satu atau beberapa "klausa". Klausa adalah kombinasi karakter terkecil yang dapat dikonversi IME menjadi karakter akhir. Untuk mendapatkan dan mengatur string komposisi, aplikasi masing-masing memanggil fungsi ImmGetCompositionString dan ImmSetCompositionString .
Saat pengguna memasukkan teks di jendela komposisi, IME melacak status string komposisi. Status ini mencakup informasi atribut, informasi klausa, informasi pengetikan, dan posisi kursor. Aplikasi dapat mengambil status komposisi dengan menggunakan fungsi ImmGetCompositionString .
Informasi atribut dirender dalam array nilai 8-bit yang menentukan status karakter dalam string komposisi. Semua karakter dari satu klausa harus memiliki atribut yang sama. Array menyertakan satu nilai untuk setiap byte dalam string, termasuk masing-masing satu byte untuk byte prospek dan kedua dari setiap karakter byte ganda dalam string. Untuk setiap nilai dalam array, bit 0 hingga 3 bisa menjadi salah satu kombinasi dari nilai berikut.
Nilai | Makna |
---|---|
ATTR_INPUT | Karakter yang dimasukkan oleh pengguna. IME belum mengonversi karakter ini. |
ATTR_INPUT_ERROR | Karakter kesalahan yang tidak dapat dikonversi oleh IME. Misalnya, IME tidak dapat mengumpulkan beberapa konsonan. |
ATTR_TARGET_CONVERTED | Karakter dipilih oleh pengguna lalu dikonversi oleh IME. |
ATTR_CONVERTED | Karakter yang telah dikonversi IME. |
ATTR_TARGET_NOTCONVERTED | Karakter sedang dikonversi. Pengguna telah memilih karakter ini tetapi IME belum mengonversinya. |
ATTR_FIXEDCONVERTED | Karakter yang tidak akan dikonversi IME lagi. |
Semua nilai lainnya dicadangkan. Dalam bahasa Jepang, setiap karakter yang tidak terkonversi yang memiliki atribut ATTR_INPUT adalah karakter hiragana, katakana, atau alfanumerik. Dalam bahasa Korea, atribut ini mewakili karakter Hangul yang belum dikonversi oleh IME. Dalam Bahasa Tionghoa Tradisional dan Tionghoa Sederhana, setiap IME dapat membatasi karakternya dalam beberapa rentang.
Informasi klausa yang disertakan dalam status string komposisi adalah array nilai 32-bit yang menentukan posisi klausa dalam string komposisi. Array menyertakan satu nilai untuk setiap klausul dan nilai akhir yang menentukan panjang string lengkap. Setiap nilai dalam array menentukan offset, dalam byte, dari awal string hingga klausa. Nilai pertama selalu 0 karena klausa pertama selalu dimulai di awal string. Misalnya, jika string memiliki dua klausa, informasi klausul memiliki tiga nilai: nilai pertama adalah 0, nilai kedua adalah offset klausul kedua, dan nilai ketiga adalah panjang string. Untuk Unicode, posisi klausa dihitung dalam karakter Unicode, dan panjang string adalah ukuran dalam karakter Unicode.
Informasi pengetikan yang disertakan dalam status string komposisi adalah string karakter yang dihentikan null yang mewakili karakter yang dimasukkan pengguna di keyboard.
Posisi kursor yang disertakan dalam status string komposisi adalah nilai yang menunjukkan posisi kursor relatif terhadap karakter dalam string komposisi. Nilainya adalah offset, dalam byte, dari awal string. Jika nilai ini adalah 0, kursor segera sebelum karakter pertama dalam string. Jika nilai sama dengan panjang string, kursor segera setelah karakter terakhir. Jika nilainya adalah 1, kursor tidak ada. Untuk Unicode, posisi dan panjang diukur dalam karakter Unicode.
Aplikasi Anda dapat mengatur string komposisi atau elemen status komposisi dengan menggunakan fungsi ImmSetCompositionString . Untuk memastikan bahwa jendela komposisi memperbarui penampilannya berdasarkan perubahan ini, fungsi ini memungkinkan aplikasi untuk mengirim pesan pemberitahuan ke jendela. Aplikasi yang mengatur kombinasi elemen status komposisi biasanya menonaktifkan pemberitahuan untuk semua kecuali panggilan terakhir ke fungsi ini sehingga hanya satu pesan pemberitahuan yang dihasilkan untuk jendela komposisi.
Terakhir, kontrol edit mendukung dua pesan untuk mengubah penanganan string komposisi oleh IME. Untuk informasi selengkapnya, lihat EM_GETIMESTATUS dan EM_SETIMESTATUS. Untuk informasi selengkapnya tentang kontrol edit, lihat Edit Kontrol.
Topik terkait