Bagikan melalui


Menggunakan Fitur Pelengkapan Otomatis

Pelengkapan otomatis memperluas string yang telah dimasukkan sebagian dalam kontrol pengeditan menjadi string lengkap. Misalnya, ketika pengguna mulai memasukkan URL di kontrol Edit alamat yang disematkan di toolbar Windows Internet Explorer, pelengkapan otomatis memperluas string menjadi satu atau beberapa opsi URL lengkap yang konsisten dengan string parsial yang ada. String URL parsial seperti "mikrofon" mungkin diperluas ke "https://www.microsoft.com" atau "https://www.microsoft.com/windows". Pelengkapan otomatis biasanya digunakan dengan kontrol edit atau dengan kontrol yang memiliki kontrol edit yang disematkan, seperti kontrol ComboBoxEx.

Menambahkan Fungsionalitas Lengkapi Otomatis ke Aplikasi Anda

Aplikasi dapat menambahkan fungsionalitas lengkapi otomatis ke kontrol edit dengan dua cara:

  • SHAutoComplete adalah fungsi sederhana yang dapat melengkapi jalur file atau URL secara otomatis.
  • Antarmuka IAutoComplete diekspos oleh objek pelengkapan otomatis (CLSID_AutoComplete). Ini memungkinkan aplikasi untuk menginisialisasi, mengaktifkan, dan menonaktifkan objek. IAutoComplete memungkinkan kontrol lebih besar atas sumber lengkapi otomatis, termasuk kemampuan untuk menambahkan sumber kustom. Sisa topik ini membahas penggunaan IAutoComplete. Lihat Cara Mengaktifkan Pelengkapan Otomatis secara Manual untuk contoh penggunaan tertentu.

Mode Lengkapi Otomatis

Saat menggunakan IAutoComplete, pelengkapan otomatis dapat menampilkan string yang selesai dalam dua mode: autoappend dan autosuggest. Modenya independen; Anda dapat mengaktifkan salah satu atau keduanya. Untuk menentukan mode, panggil IAutoComplete2::SetOptions.

Penambahan Otomatis

Dalam mode autoappend, pelengkapan otomatis menambahkan sisa string kandidat yang paling mungkin ke karakter yang ada, menyoroti karakter yang ditambahkan. Jika pengguna terus memasukkan karakter, mereka ditambahkan ke string parsial yang ada. Jika pengguna menambahkan karakter yang identik dengan karakter yang disorot berikutnya, penyorotan untuk karakter tersebut akan dinonaktifkan. Karakter-karakter yang tersisa akan tetap disorot. Jika pengguna menambahkan karakter yang tidak cocok dengan karakter yang disorot berikutnya, pelengkapan otomatis mencoba menghasilkan string kandidat baru berdasarkan string parsial yang lebih besar dan menambahkan sisa string kandidat baru ke string parsial saat ini. Jika tidak ada string kandidat yang dapat ditemukan, hanya karakter yang di ketik yang muncul dan kotak edit bertingkah seperti biasanya tanpa pelengkapan otomatis. Proses ini berlanjut hingga pengguna menerima string.

Autosuggest

Dalam mode autosuggest, pelengkapan otomatis menampilkan daftar drop-down, dengan satu atau beberapa string lengkap yang disarankan, di bawah kontrol penyuntingan. Pengguna dapat memilih salah satu string yang disarankan atau melanjutkan pengetikan. Saat pengetikan berlangsung, daftar drop-down mungkin dimodifikasi berdasarkan string parsial saat ini. Jika Anda menyetel bendera ACO_SEARCH di IAutoComplete2::SetOptions, fitur pelengkapan otomatis menyediakan opsi di bagian bawah daftar drop-down untuk mencari teks parsial saat ini. Opsi ini ditampilkan meskipun tidak ada string yang disarankan. Jika pengguna memilih opsi pencarian, aplikasi Anda harus meluncurkan mesin pencari untuk membantu pengguna.

Menggunakan Sumber Pelengkapan Otomatis Pradefinisi

Pelengkapan otomatis bergantung pada adanya sumber yang memberikan teks untuk dicocokkan dengan teks yang dimasukkan sebagian oleh pengguna. Anda memiliki opsi untuk menyediakan sumber pelengkapan otomatis kustom, namun beberapa sumber yang paling umum telah disediakan oleh sistem.

CLSID_ACLHistory

Sumber lengkapi otomatis yang cocok dengan daftar URL di daftar Riwayat pengguna.

CLSID_ACLMRU

Sumber pelengkapan otomatis yang sesuai dengan daftar URL dalam daftar yang Baru Digunakan oleh pengguna.

CLSID_ACListISF

Sumber pelengkapan otomatis yang cocok dengan item di ruang nama Shell: file di komputer pengguna serta item dalam folder virtual seperti Panel Kontrol.

Ada kalanya, daripada segera membebaskan sumber daya, Anda mungkin ingin mempertahankan penunjuk antarmuka ke berbagai objek yang terlibat dalam pelengkapan otomatis. Secara khusus, ini dilakukan ketika Anda ingin menyesuaikan cara kerja autocomplete secara dinamis. Contoh paling umum dari ini terjadi saat menggunakan objek CLSID_ACListISF, yang melengkapi otomatis dari namespace Shell dan memiliki opsi (ACLO_CURRENTDIR) menghitung dari direktori saat ini juga. Misalnya, saat Anda menavigasi ke folder baru, Internet Explorer mengubah direktori bilah Alamat saat ini dan oleh karena itu pengaturan perlu diubah secara dinamis. Ada dua cara untuk menentukan direktori yang harus diperlakukan objek CLSID_ACListISF sebagai direktori saat ini:

Pada bagian berikut, asumsikan bahwa pal adalah sebuah penunjuk ke antarmuka IACList dari sebuah objek CLSID_ACListISF:

  • Menggunakan IPersistFolder:

    Untuk memberi tahu objek CLSID_ACListISF bahwa ITEMIDLIST tertentu harus diperlakukan sebagai direktori saat ini, Anda dapat menggunakan antarmuka IPersistFolder objek. Karena ITEMIDLIST dapat merujuk ke folder virtual, metode ini lebih fleksibel daripada menggunakan ICurrentWorkingDirectory.

    Perhatikan bahwa contoh berikut menggunakan QueryInterface yang di-templat, yang memungkinkan daftar parameter yang disederhanakan.

    IPersistFolder *ppf;
    
    hr = pal2->QueryInterface(IID_PPV_ARGS(&ppf));   
    if (SUCCEEDED(hr))
    {
        hr = ppf->Initialize(pidlCurrentDirectory);
        ppf->Release();
    }
    
  • Menggunakan ICurrentWorkingDirectory:

    Untuk memberi objek CLSID_ACListISF jalur sebagai direktori saat ini, Anda dapat menggunakan antarmuka ICurrentWorkingDirectory objek.

    WCHAR pwszDirectory[MAX_PATH] = L"C:\\Program Files";
    ICurrentWorkingDirectory *pcwd;
    
    hr = pal2->QueryInterface(IID_PPV_ARGS(&pcwd));    
    if (SUCCEEDED(hr))
    {
        hr = pcwd->SetDirectory(pwszDirectory);
        pcwd->Release();
    }