Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Di Windows Vista, Panel Input PC Tablet mengintegrasikan kemampuan Lengkapi Otomatis baru yang memungkinkan daftar Lengkapi Otomatis aplikasi diperbarui secara real time karena tinta pengguna dikenali di Panel Input. Selain itu, daftar Lengkapi Otomatis aplikasi diposisikan di lokasi yang nyaman untuk pengguna Panel Input. Tanpa Lengkapi Otomatis Panel Masukan, menggunakan fitur Lengkapi Otomatis dengan Panel Masukan adalah proses yang sulit, mengharuskan pengguna memasukkan satu per satu karakter dan menggeser Panel Masukan untuk mengakses saran Lengkapi Otomatis. Dengan integrasi, Autocomplete adalah alat canggih untuk pengguna PC Tablet yang mempercepat dan meningkatkan kemudahan memasukkan teks dengan Panel Input.
Ada tiga opsi tentang bagaimana aplikasi dapat memanfaatkan integrasi Input Panel Autocomplete. Aplikasi yang berisi fungsionalitas Lengkapi Otomatis yang dibangun menggunakan Shell Autocomplete (melalui antarmukaIAutoComplete) atau .NET Framework Autocomplete (melalui AutoCompleteMode Enumeration) menerima integrasi Input Panel Lengkapi Otomatis tanpa perlu perubahan kode. Aplikasi yang menyertakan bidang teks Lengkapi Otomatis kustom dapat menggunakan API Lengkapi Otomatis Panel Input untuk mendapatkan fungsionalitas yang sama.
Dalam semua kasus, Anda dapat melakukan modifikasi ini ke daftar Lengkapi Otomatis aplikasi tanpa menduplikasi atau memodifikasi UI atau logika prediksi yang digunakan oleh aplikasi untuk menghasilkan daftar Lengkapi Otomatis. Daftar Lengkapi Otomatis terus digambar atau dirender oleh aplikasi dan konten daftar Lengkapi Otomatis sama seperti jika teks diketik langsung ke bidang edit.
Integrasi Panel Input Lengkapi Otomatis didukung pada sistem operasi Windows Vista atau versi yang lebih baru. Integrasi Lengkapi Otomatis Panel Input terintegrasi ke dalam Autocomplete Shell mulai dari Windows Vista dan ke dalam pengembangan Windows Forms mulai dari versi .NET Framework 3.0. Meskipun IAutoComplete dan AutoCompleteMode keduanya berjalan pada versi Windows sebelumnya, integrasi Lengkapi Otomatis Panel Input tidak didukung pada Microsoft Windows XP Tablet PC Edition atau sistem operasi yang lebih lama. Jika Anda menjalankan Panel Input Lengkapi Otomatis pada versi PC Tablet yang lebih lama, aplikasi kembali ke perilaku pra-integrasi.
Alasan untuk Mengintegrasikan Daftar Lengkapi Otomatis Aplikasi dengan Panel Masukan
Integrasi daftar Lengkapi Otomatis aplikasi memungkinkan kemudahan dan kecepatan maksimum input untuk pengguna yang memasukkan teks ke dalam bidang teks yang menyertakan fungsionalitas Lengkapi Otomatis. Selain itu, aplikasi yang mencakup integrasi Input Panel Autocomplete segera muncul seolah-olah dikembangkan dengan mempertimbangkan Tablet PC, membuat aplikasi lebih menarik bagi pengguna Tablet PC.
Cara Panel Input dan Daftar Lengkapi Otomatis Berinteraksi tanpa Integrasi
Menggunakan Panel Input untuk memasukkan teks ke dalam bidang teks yang menyertakan daftar Lengkapi Otomatis tetapi tidak terintegrasi dengan Panel Input:
- Pengguna menempatkan fokus di bidang teks dan membuka Panel Input.
- Pengguna menulis satu atau dua karakter.
- Pengguna mengetuk Sisipkan. Panel Input memasukkan teks ke dalam bidang teks aplikasi. Daftar Lengkapi Otomatis dari aplikasi muncul dan kemungkinan besar sebagian atau sepenuhnya tertutup oleh Panel Masukan.
- Pengguna menyeret panel input untuk mengungkap daftar pelengkapan otomatis aplikasi.
- Dengan asumsi entri yang benar disertakan dalam daftar Lengkapi Otomatis, pengguna sekarang dapat memilih entri tersebut; jika tidak, pengguna harus mengulangi langkah 2 dan 3.
Ini jelas merupakan proses yang rumit. Harapan pengguna tentang cara kerja daftar Lengkapi Otomatis tidak terpenuhi, dan kemampuan mereka untuk menyelesaikan tugas menjadi terganggu.
Bagaimana Panel Input dan Interaksi Daftar Pelengkapan Otomatis Meningkat dengan Adanya Integrasi
Menggunakan Panel Input untuk memasukkan teks ke dalam bidang teks yang menyertakan daftar Lengkapi Otomatis yang terintegrasi dengan Panel Input:
- Pengguna menempatkan fokus di bidang teks dan membuka Panel Input.
- Pengguna menulis satu atau dua karakter. Daftar Lengkapi Otomatis aplikasi muncul tepat di atas atau tepat di bawah Panel Input saat pengguna menulis teks.
- Pengguna memilih entri dari daftar Lengkapi Otomatis; entri disisipkan langsung ke bidang teks aplikasi, atau pengguna mengulangi langkah 2 hingga entri yang benar muncul.
Karena integrasi, daftar Lengkapi Otomatis muncul dan diperbarui saat pengguna menulis di Panel Input. Selain itu, daftar diposisikan sehingga nyaman bagi pengguna untuk mengakses saat menulis dan tidak dikaburkan oleh Panel Input. Terakhir, ketika pengguna memilih item dari daftar Lengkapi Otomatis, item disisipkan langsung ke bidang entri teks aplikasi, sehingga memungkinkan pengguna untuk melewati langkah menyisipkan teks dari Panel Input.
Komponen Lengkapi Otomatis Standar yang menyertakan Integrasi Lengkapi Otomatis pada Panel Input
Baik IAutoComplete dan AutoCompleteMode menyertakan integrasi bawaan Panel Input Lengkapi Otomatis. Aplikasi yang menggunakan salah satu komponen Lengkapi Otomatis standar ini dapat memanfaatkan fungsionalitas Lengkapi Otomatis Panel Input dengan sedikit atau tanpa pekerjaan tambahan. Selain itu, sementara Panel Input Lengkapi Otomatis hanya didukung pada Windows Vista atau versi baru sistem operasi Windows, aplikasi yang dibangun menggunakan IAutoComplete sebelum rilis Windows Vista mendapatkan integrasi Lengkapi Otomatis Panel Input secara otomatis ketika dijalankan pada Windows Vista. Bagian berikut berisi informasi lebih lanjut tentang elemen tertentu IAutoComplete dan AutoCompleteMode yang menyertakan integrasi Lengkapi Otomatis untuk Panel Input.
Shell Autocomplete dengan Integrasi Panel Input Lengkapi Otomatis
Aplikasi yang menggunakan IAutoComplete mendapatkan integrasi Input Panel Lengkapi Otomatis secara gratis. Meskipun API Shell Autocomplete disertakan dalam Windows 2000 dan seterusnya, integrasi Input Panel Autocomplete hanya didukung pada Windows Vista dan versi yang lebih baru. Namun, aplikasi yang dibangun sebelum peluncuran Windows Vista yang menggunakan IAutoComplete secara otomatis mendapatkan integrasi Lengkapi Otomatis pada Panel Input saat dijalankan di Windows Vista.
Untuk memanfaatkan Tablet Autocomplete dengan cara ini, Anda harus menggunakan objek pelengkapan otomatis (CLSID_Autocomplete). Jika Anda ingin menyediakan fungsionalitas lengkapi otomatis untuk URL atau nama file, gunakan fungsiSHAutoComplete untuk membuat objek lengkapi otomatis.
Selain IAutoComplete, Anda dapat menerapkan IAutoComplete2 atau IAutoCompleteDropDownsecara langsung dan tetap mendapatkan integrasi Lengkapi Otomatis Panel Input secara otomatis.
Integrasi Pelengkapan Otomatis Panel Input dengan Aplikasi .NET Framework
Mulai dari .NET Framework 3.0, kotak teks Formulir Windows menyertakan Pelengkapan Otomatis. Kotak teks Windows Forms Autocomplete dibangun di atas Shell Autocomplete, yang berarti integrasi Autocomplete Papan Input sudah terintegrasi. .NET Framework 3.0 didukung pada edisi Windows yang dirilis sebelum Windows Vista. Namun, karena integrasi Lengkapi Otomatis Panel Input hanya didukung pada Windows Vista atau versi yang lebih baru, integrasi Lengkapi Otomatis Panel Input hanya berfungsi dalam aplikasi .NET Framework 3.0 saat diinstal pada Windows Vista atau versi yang lebih baru.
Aplikasi yang ingin memanfaatkan integrasi Autocomplete Panel Input di .NET Framework 3.0 harus menggunakan Windows Forms TextBox dan mengaktifkan properti AutoCompleteMode. Anda tidak perlu melakukan pekerjaan tambahan selain membuat Windows Forms Autocomplete berfungsi untuk memanfaatkan integrasi Input Panel Lengkapi Otomatis.
Menggunakan API Lengkapi Otomatis untuk Panel Input Secara Langsung
Pengembang kotak teks Lengkapi Otomatis kustom perlu bekerja langsung dengan API Lengkapi Otomatis dari Panel Input untuk memperoleh pengalaman input teks yang lebih baik melalui integrasi dengan Lengkapi Otomatis dari Panel Input dalam aplikasi mereka. API Pelengkapan Otomatis Panel Input disertakan sebagai bagian dari sistem operasi Windows Vista dan sebagai bagian dari Tablet Platform SDK versi 1.9 atau yang lebih baru. Antarmuka Lengkapi Otomatis Panel Input adalah antarmuka berbasis COM.
Bagian berikut menjelaskan cara kerja antarmuka ini secara rinci untuk aplikasi C++. Namun, antarmuka COM ini dapat diimplementasikan dalam sebagian besar bahasa, termasuk C#, melalui penggunaan COM Interop.
Untuk menerapkan integrasi Lengkapi Otomatis Panel Input dalam kotak teks Lengkapi Otomatis kustom, dua antarmuka yang diperlukan adalah antarmuka ITipAutocompleteProvider Interface dan antarmuka ITipAutocompleteClient . Definisi untuk antarmuka ini ditemukan di TipAutoComplete.h dan TipAutoComplete_i.c.
Pertama, aplikasi harus menentukan dan membuat instans kelas penyedia Lengkapi Otomatis, yang mengimplementasikan ITipAutocompleteProvider untuk setiap bidang entri teks yang menyertakan daftar Lengkapi Otomatis. Kelas ini mengelola sisi aplikasi dari integrasi Lengkapi Otomatis. Semua permintaan Lengkapi Otomatis dari Panel Input dibuat dari klien Lengkapi Otomatis ke aplikasi melalui penyedia Lengkapi Otomatis aplikasi. Penyedia Lengkapi Otomatis aplikasi harus memiliki akses ke HWND untuk daftar Lengkapi Otomatis aplikasi dan HWIND untuk bidang entri teks terkait. Selain itu, metode ITipAutocompleteProvider berikut harus diimplementasikan:
ITipAutocompleteProvider::UpdatePendingText Method: Metode ini digunakan oleh klien Autocomplete untuk memberi tahu aplikasi teks yang telah ditulis pengguna ke dalam Panel Input. Setelah menerima pemberitahuan ini, penyedia bertanggung jawab untuk membuat daftar Lengkapi Otomatis seolah-olah teks telah ditik ke dalam bidang entri teks aplikasi. String diteruskan ke penyedia Lengkapi Otomatis melalui ITipAutocompleteProvider::UpdatePendingText Method hanya menyertakan teks yang saat ini ada di Panel Input. Oleh karena itu, jika ada teks tambahan di bidang entri teks, penyedia bertanggung jawab untuk menambahkannya dengan benar ke teks yang dikirim oleh klien. String melewati ITipAutocompleteProvider::UpdatePendingText Method harus diperlakukan sebagai pengganti untuk pilihan saat ini di bidang . Jika tidak ada pilihan saat ini, maka seharusnya ditempatkan pada posisi titik penyisipan saat ini. Setelah daftar Lengkapi Otomatis dibuat, penyedia harus memanggil ITipAutocompleteProvider::Tampilkan Metode dengan meneruskan TRUE untuk menampilkan daftar Lengkapi Otomatis. Aplikasi tidak boleh melakukan cache panggilan ke UpdatePendingText melainkan memperlakukan setiap panggilan tambahan ke UpdatePendingText sebagai pembatalan panggilan sebelumnya untuk menghindari flashing UI daftar Lengkapi Otomatis yang kedaluarsa. Contoh kode berikut mengilustrasikan praktik ini.
HRESULT SampleProvider::UpdatePendingText(BSTR bstrPendingText) { //Discard previously cached pending text from Input Panel m_bstrPending.Empty(); //Store the new pending text from Input Panel as m_bstrPending m_bstrPending = bstrPendingText; //Get the text from the field in two chunks. The characters to //the left of the selection and the characters to the right. CComBSTR bstrLeftContext = //Text to the left of the selection CComBSTR bstrRightContext = //Text to the right of the selection //Discard previously cached complete text m_bstrCompleteText.Empty(); //Append to the field text from the left of the selection //the text from Input Panel and then append to that //the field text to the right of the selection m_bstrCompleteText.Append(bstrLeftContext); m_bstrCompleteText.Append(m_bstrPending); m_bstrCompleteText.Append(bstrRigtContext); //Update the app's AC list based on m_bstrCompleteText //... //Show the updated AC list by calling the provider's Show method Show(true); return S_OK; }ITipAutocompleteProvider::Tampilkan Metode: Metode ini dipanggil dari UpdatePendingText, tetapi juga dapat dipanggil oleh klien Lengkapi Otomatis kapan saja. Setelah menerima panggilan ini, penyedia Lengkapi Otomatis harus menyembunyikan atau menampilkannya sesuai dengan parameter yang ditunjukkan. Sebelum menampilkan daftar Lengkapi Otomatis, penyedia Lengkapi Otomatis diharapkan untuk berkonsultasi dengan klien Lengkapi Otomatis tentang tempat memposisikan daftar Lengkapi Otomatis. Informasi selengkapnya tentang penempatan daftar Lengkapi Otomatis muncul nanti di artikel ini.
Selanjutnya, aplikasi harus menggunakan fungsi Active Template Library (ATL) CoCreateInstance untuk menghasilkan instansAntarmuka ITipAutocompleteClientdengan id kelas CLSID_TipAutoCompleteClient sebagai server dalam proses, lalu mendaftarkan penyedia dengan klien. Klien Autocomplete ITipAutocompleteClient::AdviseProvider Method mendaftarkan penyedia kepada klien agar klien dapat memanggil objek penyedia Autocomplete dari aplikasi. Jika tiptsf.dll tidak ada pada sistem, fungsi CoCreateInstance gagal dan mengembalikan REGDB_E_CLASSNOTREG. Pada titik ini aplikasi dapat membuang objek ITipAutocompleteProvider dan melanjutkan seolah-olah Panel Input tidak ada, karena tidak ada pada sistem seperti itu.
Aplikasi dapat memilih untuk membuat satu instans ITipAutocompleteClient atau satu instans per bidang teks. Opsi pertama mengharuskan penyedia dicabut pendaftarannya dan didaftarkan kembali setiap kali fokus diubah. Informasi selengkapnya tentang membatalkan pendaftaran penyedia Lengkapi Otomatis muncul nanti dalam topik ini.
Ada beberapa langkah yang terlibat dalam memposisikan daftar Pelengkapan Otomatis yang harus dikoordinasikan antara penyedia Pelengkapan Otomatis (aplikasi) dan klien Pelengkapan Otomatis (Panel Input). Sebelum daftar Lengkapi Otomatis ditampilkan, baik karena panggilan ke metode Tampilkan penyedia Autocomplete atau karena pengguna memasukkan teks menggunakan keyboard, penyedia diharuskan untuk berkonsultasi dengan klien mengenai di mana harus memosisikan daftar Lengkapi Otomatis. Penyedia harus mengambil langkah-langkah berikut:
GunakanMetode ITipAutocompleteClient::RequestShowUIklien Lengkapi Otomatis untuk menentukan apakah Panel Input siap untuk menampilkan daftar Lengkapi Otomatis. RequestShowUI mengambil parameter HWND yang merupakan HWND untuk jendela daftar Lengkapi Otomatis, dan metode mengembalikan TRUE atau FALSE untuk menunjukkan apakah itu adalah status di mana daftar Lengkapi Otomatis dapat ditampilkan. Jika klien mengembalikan FALSE, penyedia tidak boleh mencoba menampilkan daftar Lengkapi Otomatis.
Panggil RequestShowUI untuk mengatur handle jendela daftar unggulan Lengkapi Otomatis sebelum Anda memanggil metode ITipAutocompleteClient::PreferredRects. Kegagalan untuk melakukannya akan menyebabkan kesalahan E_INVALIDARG saat memanggil PreferredRects.
Jika RequestShowUI mengembalikan TRUE, penyedia harus menghitung persegi panjang koordinat layar default dari daftar Lengkapi Otomatis berdasarkan lokasi bidang entri teks, lalu memanggil Metode ITipAutocompleteClient::P referredRects klien Autocomplete. Ini memungkinkan klien Lengkapi Otomatis menyesuaikan persegi panjang agar daftar Lengkapi Otomatis tidak tumpang tindih dengan Panel Input. Metode PreferredRects mengambil empat parameter:
- RECT rcACList: Persegi panjang koordinat layar default dari daftar Lengkapi Otomatis.
- RECT rcField: Persegi panjang koordinat layar dari bidang entri teks yang sesuai.
- RECT *prcModifiedACList: Persegi panjang koordinat layar yang telah disesuaikan untuk Autocomplete
- BOOL *pfShowAbove: Parameter ini menunjukkan kepada penyedia apakah posisi persegi panjang prcModifiedACList meletakkan daftar Lengkapi Otomatis di atas atau di bawah Panel Input. Aplikasi dapat menggunakan informasi ini untuk menggambar elemen UI dengan benar seperti mengubah ukuran handel dan bilah gulir. Penyedia awalnya harus meneruskan ke arah bahwa daftar Lengkapi Otomatis akan diposisikan relatif terhadap bidang entri teks dengan rcACList. Klien tidak mengubah pfShowAbove jika prcModifiedACList diatur sama dengan rcACList.
Gunakan nilai pengembalian dari prcModifiedACList dan pfShowAbove dalam argumen keluar untuk memposisikan serta menampilkan jendela daftar Lengkapi Otomatis. Jika Panel Input tidak digunakan, RequestShowUI selalu mengembalikan TRUE dan prcModifiedACList selalu sama dengan rcACList. pfShowAbove juga tidak berubah, hasilnya adalah bahwa panggilan tidak memiliki pengaruh pada perilaku aplikasi. Contoh kode berikut mengilustrasikan praktik ini.
HRESULT SampleProvider::Show(BOOL fShow)
{
//Ask the AC client if it is OK to show the Autocomplete list.
BOOL fAllowShowing = FALSE;
m_spACClient->RequestShowUI(m_hWndList, &fAllowShowing);
if (fShow && fAllowingShowing)
{
// Create the parameters required to call PreferredRects
RECT rcField = //Rectangle for app's text field
RECT rcACList = //Default rectangle for app's AC list
RECT rcModifiedACList = {0, 0, 0, 0};
BOOL fShowAbove = TRUE;
//Ask the AC client to modify the position of the AC list
m_spACClient->PreferredRects(&rcACList, &rcField,
&rcModifiedACList, &fShowAbove);
//Show the Autocomplete UI at the modified preferred rectangle
//from rcModifiedACList and the directional info provide by
//fShowAbove
//...
}
else
{
//Hide the Autocomplete list and clean up
//...
}
return S_OK;
}
Saat pengguna memilih item dalam daftar Lengkapi Otomatis, penyedia perlu memanggil ITipAutocompleteClient::Metode UserSelection klien selain menyisipkan teks item yang dipilih ke bidang entri teks. Panel Input menggunakan pemberitahuan ini untuk membuang semua teks tersisa yang belum disisipkan dari Panel Input.
Akhirnya, ketika penyedia tidak lagi diperlukan, penyedia harus dilepas dari klien Autocomplete dengan menggunakan metode ITipAutocompleteClient::UnadviseProvider untuk mencabut pendaftaran penyedia. Penyedia mungkin perlu didaftarkan ulang karena salah satu dari dua alasan: karena bidang entri teks yang terkait dengan penyedia telah dihapus, atau karena aplikasi memilih untuk membuat hanya satu klien Lengkapi Otomatis, bukan satu per bidang entri teks. Dalam hal ini penyedia harus tidak terdaftar setiap kali fokus dialihkan dari bidang teks.
Kesimpulan
Integrasi Panel Input Lengkapi Otomatis adalah alat yang ampuh untuk meningkatkan pengalaman pengguna di aplikasi Windows yang menyertakan daftar Lengkapi Otomatis pada PC Tablet. Tanpa integrasi, pengguna Panel Input diharuskan melalui proses melelahkan memasukkan teks satu karakter sekaligus dan memposisikan ulang Panel Input untuk menggunakan Lengkapi Otomatis. Dengan integrasi, daftar Pelengkapan Otomatis muncul di lokasi yang nyaman saat pengguna menulis dengan pena di Panel Input, sehingga meningkatkan kecepatan dan kemudahan entri teks. Dalam aplikasi yang menyertakan fungsionalitas Lengkapi Otomatis yang dibangun di atas Shell Autocomplete atau .NET Framework 3.0 Autocomplete, integrasi Input Panel Autocomplete adalah fitur gratis dan menarik. Selain itu, serangkaian antarmuka berbasis COM sederhana disediakan untuk memungkinkan pengalaman terintegrasi yang sama untuk aplikasi yang memilih untuk menggunakan kontrol Lengkapi Otomatis kustom.
Topik terkait