Penyimpanan Teks

Posisi Karakter Aplikasi (ACP)

ACP adalah lokasi karakter, atau karakter, dalam aliran teks yang dinyatakan sebagai jumlah karakter dari awal aliran teks. Karena model ACP berbasis nol, karakter pertama dalam aliran teks memiliki ACP nol. Contohnya:

Text Stream  H | e | l | l | o |   | W | o | r | l | d
ACP          0   1   2   3   4   5   6   7   8   9   10

Penyimpanan teks mengimplementasikan objek yang mendukung antarmuka ITextStoreACP , yang memungkinkan aliran teks diekspresikan dalam ACP. Metode antarmuka ITextStoreACP menggunakan rentang ACP aliran teks untuk memodifikasi teks.

Aplikasi Anchor-Based

Manajer menggunakan metode berbasis ACP secara asli untuk memanipulasi teks. Namun, pendekatan berbasis jangkar tersedia untuk klien Aksesibilitas Aktif Microsoft yang mendukung jangkar, di mana manajer menggunakan metode ITextStoreAnchor dan ITextStoreAnchorSink untuk membungkus metode ITextStoreACP dan ITextStoreACPSink .

Access Control Dokumen

Penyimpanan teks mengontrol akses ke aliran teks dengan menggunakan kunci dokumen. Untuk membaca atau memodifikasi penyimpanan teks, manajer harus terlebih dahulu menginstal sink saran yang mendukung antarmuka ITextStoreACPSink dengan memanggil metode ITextStoreACP::AdviseSink dan meneruskan penunjuk ke sink saran. Sink saran memungkinkan manajer untuk mendapatkan kunci dokumen di penyimpanan teks dan menerima pemberitahuan ketika penyimpanan teks dimodifikasi oleh sesuatu selain manajer, seperti input pengguna melalui aplikasi. Saran sink dibahas nanti dalam topik ini.

Cara Menginisialisasi Penyimpanan Teks

Aplikasi menginisialisasi penyimpanan teks dengan menyelesaikan langkah-langkah berikut:

  1. Buat objek manajer utas berdasarkan antarmuka ITfThreadMgr dengan memanggil fungsi CoCreateInstance dengan penunjuk ke objek manajer utas. Berikut ini adalah contoh kode penerapan objek manajer utas.

    hr = CoCreateInstance (CLSID_TF_ThreadMgr, NULL, CLSCTX_INPROC_SERVER, 
                            IID_ITfThreadMgr, (void**)&pThreadMgr);
    
  2. Aktifkan objek manajer utas dengan memanggil metode ITfThreadMgr::Activate . Metode ini menyediakan pointer ke pengidentifikasi klien yang digunakan untuk membuat objek konteks. Manajer utas digunakan untuk mengimplementasikan objek manajer dokumen.

  3. Buat objek manajer dokumen berdasarkan antarmuka ITfDocumentMgr dengan memanggil metode ITfThreadMgr::CreateDocumentMgr dengan penunjuk ke objek manajer dokumen. Objek manajer dokumen digunakan untuk mengimplementasikan objek konteks yang merupakan penyimpanan teks.

  4. Buat objek konteks dari manajer dokumen dengan memanggil metode ITfDocumentMgr::CreateContext dengan penunjuk ke objek penyimpanan teks dan penunjuk ke pengidentifikasi klien agar tidak mengaktifkan manajer utas. Berikut ini adalah contoh pembuatan objek konteks:

    hr = pDocumentMgr->CreateContext(m_ClientID, 0, (ITextStoreACP*)this, 
                                    &pContext, pEditCookie);
    
  5. Dorong objek konteks ke tumpukan dengan metode ITfDocumentMgr::P ush . Berikut ini adalah contoh mendorong objek konteks ke tumpukan:

    hr = pDocumentMgr->Push(pContext);
    

Cara Mengubah Penyimpanan Teks

Metode ITfDocumentMgr::P ush memanggil ITextStoreACP::AdviseSink dengan pointer ke antarmuka sink saran untuk menginstal sink saran baru atau memodifikasi sink saran yang ada. Sink saran menerima pemberitahuan ketika penyimpanan teks dimodifikasi oleh sesuatu selain manajer, seperti input pengguna ke aplikasi. Aplikasi harus memanggil metode ITfThreadMgrEventSink::OnSetFocus ketika metode input mendapatkan fokus. Pemberitahuan lain ke manajer utas disediakan dengan memanggil metode antarmuka ITextStoreACPSink yang sesuai.

Namun, aplikasi tidak boleh memanggil metode antarmuka ITextStoreACPSink sebagai respons terhadap metode antarmuka ITextStoreACP . Aplikasi hanya boleh memanggil metode antarmuka ITextStoreACPSink ketika penyimpanan teks dimodifikasi oleh sesuatu selain manajer.

Isi penyimpanan teks dapat dimodifikasi dengan status input sementara yang disebut komposisi.

Jangkar

Komposisi

Kunci Dokumen

ITextStoreACPSink

ITextStoreACP

ITextStoreAnchor

ITextStoreAnchorSink

ITfDocumentMgr

ITfThreadMgr

ITfThreadMgrEventSink::OnSetFocus

TfClientId

Aksesibilitas Aktif Microsoft