Edit Konteks
Aplikasi
Untuk membuat konteks pengeditan, aplikasi memanggil ITfDocumentMgr::CreateContext.
Layanan Teks
Layanan teks sering menggunakan konteks pengeditan yang saat ini aktif. Konteks edit yang saat ini aktif adalah konteks edit di bagian atas tumpukan manajer dokumen aktif. Untuk mendapatkan konteks aktif saat ini, layanan teks memanggil ITfThreadMgr::GetFocus untuk mendapatkan manajer dokumen aktif dan kemudian memanggil ITfDocumentMgr::GetTop untuk mendapatkan konteks edit di bagian atas tumpukan.
Dalam beberapa kasus, layanan teks memerlukan konteks editnya sendiri. Untuk membuat konteks pengeditan, layanan teks memanggil ITfDocumentMgr::CreateContext.
Edit Cookie
Banyak metode, seperti ITfRange::SetText, memerlukan cara untuk mengidentifikasi konteks edit yang memiliki kunci dokumen baca-saja atau baca/tulis . Kunci dokumen diperoleh melalui negosiasi antara manajer TSF dan aplikasi. Layanan teks tidak dapat melakukan negosiasi ini secara langsung. Layanan teks hanya dapat memperoleh kunci dengan meminta mengedit sesi dengan konteks tertentu dan akses baca-saja atau baca/tulis. Ketika sesi edit diberikan, layanan teks disediakan dengan mengedit cookie yang mengidentifikasi konteks edit dengan akses yang diminta. Cookie ini kemudian diteruskan ke metode untuk mengidentifikasi konteks edit dengan akses yang tepat.
ITfDocumentMgr::CreateContext juga menyediakan cookie edit kepada pembuat konteks. Cookie ini memiliki akses baca-saja dan tidak ada cara untuk mengubah tingkat akses. Sebenarnya, manajer TSF tidak menegosiasikan kunci dokumen untuk cookie edit ini. Cookie ditandai sebagai baca-saja secara internal, tetapi dokumen tidak benar-benar dikunci. Misalnya, jika pembuat konteks memanggil ITfContext::GetSelection dengan cookie edit yang dikembalikan oleh ITfDocumentMgr::CreateContext , ini menghasilkan aplikasi ITextStoreACP::GetSelection atau ITextStoreAnchor::GetSelection dipanggil. Sebelum mendapatkan pilihan, aplikasi akan menentukan apakah kunci dokumen ada. Karena tidak ada kunci, aplikasi akan gagal dengan TS_E_NOLOCK. Artinya, jika aplikasi memanggil metode dengan cookie ini yang mengakibatkan salah satu metode penyimpanan teks aplikasi dipanggil, aplikasi harus menangani kasus ini secara internal karena aplikasi tidak akan benar-benar memiliki kunci dokumen.
Jika pembuat konteks memerlukan cookie edit dengan akses baca/tulis, pembuat konteks harus membuat sesi editnya sendiri.
Topik terkait