Bagikan melalui


Bilah Bahasa (Layanan Teks)

Menerapkan Objek Bilah Bahasa

Untuk mendukung penambahan item ke bilah bahasa, layanan teks harus menerapkan objek yang mendukung antarmuka ITfSource dan salah satu elemen kontrol ITfLangBarItem. Saat item diinstal, bilah bahasa menginstal Sink ITfLangBarItemSink dengan memanggil item ITfSource::AdviseSink dengan IID_ITfLangBarItemSink. Item menggunakan antarmuka ITfLangBarItemSink untuk memberi tahu bilah bahasa perubahan, misalnya saat item disembunyikan, ditampilkan, diaktifkan, atau dinonaktifkan.

Empat jenis item bilah bahasa dapat diinstal dan masing-masing antarmuka yang diperlukan dibuat dari ITfLangBarItem. Berikut ini adalah kemungkinan elemen kontrol ITfLangBarItem.

Elemen Deskripsi
Kancing Tombol bilah bahasa berfungsi sebagai tombol perintah, kontrol pengalih, atau menu pada bilah bahasa. Objek harus mendukung antarmuka ITfLangBarItemButton.
Balon Balon bilah bahasa berfungsi sebagai pemberitahuan pop-up pada bilah bahasa. Objek harus mendukung antarmuka ITfLangBarItemBalloon.
Bitmap Bitmap bilah bahasa berfungsi sebagai elemen statis pada bilah bahasa yang menampilkan bitmap. Objek harus mendukung antarmuka ITfLangBarItemBitmap.
Tombol Bitmap Tombol bitmap bilah bahasa berfungsi sebagai elemen tombol pada bilah bahasa yang menampilkan teks dan bitmap. Objek harus mendukung antarmuka ITfLangBarItemBitmapButton.

 

Gaya Tombol

Elemen tombol dapat berfungsi sebagai salah satu dari berikut ini. Fungsi item tombol ditentukan oleh bendera yang diatur dalam dwStyle anggota struktur TF_LANGBARITEMINFO dalam metode ITfLangBarItem::GetInfo.

Elemen Deskripsi
Kancing Tombol berfungsi sebagai tombol perintah standar. Gaya tombol ini diidentifikasi oleh gaya TF_LBI_STYLE_BTN_BUTTON. ITfLangBarItemButton::OnClick dipanggil saat item diklik. ITfLangBarItemButton::InitMenu dan ITfLangBarItemButton::OnMenuSelect tidak digunakan.
Tombol Alihkan Tombol berfungsi sebagai kontrol pengalih yang dapat mempertahankan status diklik, mirip dengan kotak centang. Gaya tombol ini diidentifikasi oleh gaya TF_LBI_STYLE_BTN_TOGGLE. ITfLangBarItemButton::OnClick dipanggil saat item diklik. ITfLangBarItemButton::InitMenu dan ITfLangBarItemButton::OnMenuSelect tidak digunakan.
Menu Tombol berfungsi sebagai menu drop-down. Gaya tombol ini diidentifikasi oleh gaya TF_LBI_STYLE_BTN_MENU. ITfLangBarItemButton::InitMenu dipanggil saat tombol diklik. Saat pengguna memilih item di menu, bilah bahasa memanggil ITfLangBarItemButton::OnMenuSelect dengan pengidentifikasi item menu yang dipilih. ITfLangBarItemButton::OnClickis tidak digunakan.

 

Menerapkan Tombol Menu

Saat pengguna mengklik tombol menu, bilah bahasa memanggil ITfLangBarItemButton::InitMenu. Item menambahkan item ke menu menggunakan antarmuka ITfMenu yang diteruskan ke InitMenu.

Untuk menambahkan submenu ke menu, panggil ITfMenu::AddMenuItem dengan TF_LBMENUF_SUBMENU. Ketika ini selesai, objek ITfMenu baru yang mewakili submenu dikembalikan dalam parameter ppMenu AddMenuItem. Objek menu baru ini digunakan untuk menambahkan item ke submenu.

Saat pengguna memilih item di menu, bilah bahasa memanggil ITfLangBarItemButton::OnMenuSelect dengan pengidentifikasi item menu yang dipilih.

Menambahkan Item ke Bilah Bahasa

Layanan teks harus menambahkan itemnya ke bilah bahasa saat metode ITfTextInputProcessor::Aktifkan dipanggil dan menghapusnya saat metode ITfTextInputProcessor::D eactivate dipanggil.

Untuk menambahkan item ke bilah bahasa, layanan teks mendapatkan antarmuka ITfLangBarItemMgr dengan memanggil ITfThreadMgr::QueryInterface dengan IID_ITfLangBarItemMgr. Layanan teks kemudian memanggil ITfLangBarItemMgr::AddItem dengan penunjuk ke objek item bilah bahasa.

Layanan teks harus menghapus item saat dinonaktifkan. Layanan teks menggunakan antarmuka ITfLangBarItemMgr yang sama yang digunakan untuk menambahkan item atau mendapatkan instans antarmuka lain. Layanan teks kemudian memanggil ITfLangBarItemMgr::RemoveItem dengan penunjuk antarmuka item untuk dihapus.

Memperluas Item Bilah Bahasa Sistem

TSF menyediakan kemampuan untuk menambahkan item menu ke menu bilah bahasa yang ada. Ini memungkinkan layanan teks untuk menambahkan item ke menu layanan teks lain tanpa harus menambahkan tombol terpisah ke toolbar. Ini juga memungkinkan item menu diatur ke dalam grup logis. Misalnya, layanan teks yang menyediakan fitur tambahan ke layanan teks ucapan standar dapat menambahkan item ke menu layanan teks ucapan daripada menambahkan tombol menu tingkat atasnya sendiri.

Layanan teks menyediakan ekstensi menu bilah bahasa dengan menerapkan objek yang mendukung antarmuka ITfSystemLangBarItemSink. Antarmuka ini berfungsi persis seperti antarmuka ITfLangBarItemButton untuk tombol menu. Saat menu ditampilkan, layanan teks yang diperluas memanggil ITfSystemLangBarItemSink::InitMenu. Ekstensi menambahkan item ke menu menggunakan antarmuka ITfMenu yang diteruskan ke InitMenu. Saat pengguna memilih item yang ditambahkan oleh ekstensi, layanan teks yang diperluas memanggil ITfSystemLangBarItemSink::OnMenuSelect dengan pengidentifikasi item menu yang dipilih.

Untuk menginstal ekstensi menu bilah bahasa, layanan teks menyelesaikan langkah-langkah berikut.

  1. Dapatkan antarmuka ITfLangBarItem agar item diperluas dengan memanggil ITfLangBarItemMgr::GetItem dengan GUID agar item diperluas.
  2. Dapatkan antarmuka ITfSource agar item diperluas dengan memanggil ITfLangBarItem::QueryInterface dengan IID_ITfSource.
  3. Panggil ITfSource::AdviseSink dengan IID_ITfSystemLangBarItemSink dan pointer ke objek ITfSystemLangBarItemSink. Jika ITfSource::AdviseSink gagal, layanan teks tidak mendukung ekstensi menu.

ITfSource::UnadviseSinkITfSource::AdviseSink

Ekstensi Menu Bilah Bahasa Pendukung

Layanan teks dapat mengaktifkan layanan teks lain untuk menambahkan item ke menu bilah bahasanya seperti yang ditunjukkan di atas. Layanan teks yang harus menerbitkan GUID-nya sehingga item dapat diperoleh dengan memanggil ITfLangBarItemMgr::GetItem.

Untuk mendukung ekstensi menu, layanan teks harus mendukung antarmuka ITfSource. Langkah-langkah berikut mengaktifkan dukungan untuk satu atau beberapa ekstensi menu.

  1. Ketika ITfSource::AdviseSink dengan IID_ITfSystemLangBarItemSink dipanggil, layanan teks harus menyimpan antarmuka ITfSystemLangBarItemSink dan mengembalikan nilai cookie yang akan mengidentifikasi ekstensi.
  2. Ketika ITfLangBarItemButton::InitMenu dipanggil, layanan teks memanggil ekstensi ITfSystemLangBarItemSink::InitMenu metode. Layanan teks harus menerapkan cara untuk mengidentifikasi item menu yang ditambahkan oleh ekstensi dibandingkan dengan item yang ditambahkan oleh layanan teks itu sendiri.
  3. Saat ITfLangBarItemButton::OnMenuSelect dipanggil dengan pengidentifikasi item menu milik ekstensi, layanan teks memanggil ekstensi ITfSystemLangBarItemSink::OnMenuSelect metode.
  4. Ketika ITfSource::UnadviseSink dipanggil dengan cookie yang sesuai, layanan teks akan menghapus ekstensi menu.

Cara Menyiapkan Kerangka Kerja Layanan Teks

Bilah Bahasa (Aplikasi)