Komposisi
Komposisi adalah status input sementara yang memungkinkan layanan teks untuk menentukan baik ke aplikasi maupun pengguna bahwa teks input masih dalam status perubahan. Aplikasi dapat dan harus mendapatkan informasi atribut tampilan tentang komposisi dan menggunakan informasi ini untuk menampilkan status komposisi kepada pengguna.
Salah satu contoh penggunaan komposisi adalah selama input ucapan. Saat pengguna berbicara, layanan teks ucapan membuat komposisi. Komposisi ini akan tetap utuh sampai seluruh input ucapan selesai. Ketika sesi berakhir, layanan teks ucapan mengakhiri komposisi.
Aplikasi menggunakan kehadiran dan tidak adanya komposisi untuk menentukan cara menampilkan teks dan apa, jika ada, pemrosesan harus dilakukan pada teks. Misalnya, jika pengguna menggunakan mesin ucapan untuk memasukkan teks, aplikasi tidak boleh melakukan pemeriksaan ejaan atau tata bahasa pada teks komposisi apa pun. Teks dianggap tidak lengkap sampai komposisi dihentikan.
Layanan teks membuat komposisi dengan memanggil ITfContextComposition::StartComposition. Layanan teks dapat secara opsional mengimplementasikan objek ITfCompositionSink yang menerima pemberitahuan peristiwa komposisi. StartComposition mengembalikan objek ITfComposition yang dirujuk oleh layanan teks dan digunakan untuk memodifikasi dan mengakhiri komposisi. Layanan teks mengakhiri komposisi dengan memanggil ITfComposition::EndComposition.
Jika layanan teks akan membuat komposisi, layanan teks juga harus mendukung atribut tampilan untuk memungkinkan aplikasi menampilkan teks yang merupakan bagian dari komposisi secara berbeda dari teks standar. Untuk informasi selengkapnya, lihat Menyediakan Atribut Tampilan.
Aplikasi dapat memantau pembuatan, perubahan, dan penghentian komposisi dengan menginstal sink ITfContextOwnerCompositionSink . Ketika komposisi dimulai, ITfContextOwnerCompositionSink::OnStartComposition dipanggil. Demikian juga, ketika komposisi diubah atau dihentikan, ITfContextOwnerCompositionSink::OnUpdateComposition dan ITfContextOwnerCompositionSink::OnEndComposition masing-masing akan dipanggil.
Berikut ini adalah prosedur umum untuk memperbarui dokumen menggunakan komposisi.
- ITextStoreACP::InsertTextAtSelection atau ITextStoreAnchor::InsertTextAtSelection biasanya digunakan untuk menyisipkan teks awal ke dalam komposisi.
- Komposisi dimulai dengan panggilan ke ITfContextComposition::StartComposition, menggunakan rentang teks yang dikembalikan oleh InsertTextAtSelection.
- Ketika menerima input baru seperti entri ucapan atau keyboard, aplikasi memperbarui komposisi dengan ITextStoreACP::SetText atau ITextStoreAnchor::SetText.
- Ketika aplikasi menentukan bahwa sudah waktunya untuk mengakhiri komposisi, aplikasi memanggil ITfComposition::EndComposition.
Aplikasi harus menggunakan atribut tampilan yang disediakan oleh layanan teks untuk memodifikasi tampilan teks setiap saat dan bukan hanya ketika komposisi aktif. Untuk informasi selengkapnya, lihat Menggunakan Atribut Tampilan.
Jika perlu, aplikasi dapat mengakhiri komposisi dengan memanggil ITfContextOwnerCompositionServices::TerminateComposition.