Aracılığıyla paylaş


Otomatik Tamamlama'yı kullanma

Otomatik tamamlama, bir düzenleme denetimine kısmen girilen dizeleri tam dizelere genişletir. Örneğin, kullanıcı Windows Internet Explorer araç çubuğuna eklenmiş adres düzenleme denetimine bir URL girmeye başladığında, otomatik tamamlama dizeyi var olan kısmi dizeyle tutarlı bir veya daha fazla tam URL seçeneğine genişletir. Kısmi bir URL dizesi, örneğin "mic", "https://www.microsoft.com"" veya "https://www.microsoft.com/windows"" olarak genişletilebilir. Otomatik tamamlama genellikle düzenleme denetimleriyle veya ComboBoxEx denetimi gibi eklenmiş düzenleme denetimine sahip denetimlerle kullanılır.

Uygulamanıza Otomatik Tamamlama İşlevi Ekleme

Bir uygulama, düzenleme denetimine iki şekilde otomatik tamamlama işlevi ekleyebilir:

  • SHAutoComplete, bir dosya yolunu veya URL'yi otomatik olarak tamamlayan basit bir işlevdir.
  • IAutoComplete arabirimi otomatik tamamlama nesnesi (CLSID_AutoComplete) tarafından kullanıma sunulur. Uygulamaların nesneyi başlatmasına, etkinleştirmesine ve devre dışı bırakmasına olanak tanır. IAutoComplete, özel kaynak ekleme özelliği de dahil olmak üzere otomatik tamamlama kaynakları üzerinde daha fazla denetim sağlar. Bu konunun geri kalanında IAutoCompletekullanımı açıklanmaktadır. Belirli kullanım örnekleri için bkz. Otomatik Tamamlamayı El İle Etkinleştirme Yöntemleri.

Otomatik Tamamlama Modları

IAutoCompletekullanırken, otomatik tamamlama tamamlanan dizeyi iki modda görüntüleyebilir: otomatik uygulama ve otomatik öneri. Modlar bağımsızdır; veya her ikisini de etkinleştirebilirsiniz. Modu belirtmek için IAutoComplete2::SetOptionsöğesini çağırın.

otomatik ekleme

Otomatik uygulama modunda otomatik tamamlama, en olası aday dizenin geri kalanını mevcut karakterlere ekler ve eklenen karakterleri vurgular. Kullanıcı karakter girmeye devam ederse, var olan kısmi dizeye eklenir. Kullanıcı bir sonraki vurgulanan karakterle aynı bir karakter eklerse, bu karakterin vurgulanması kapatılır. Kalan karakterler yine vurgulanır. Kullanıcı bir sonraki vurgulanan karakterle eşleşmeyen bir karakter eklerse, otomatik tamamlama daha büyük kısmi dizeyi temel alan yeni bir aday dize oluşturmayı dener ve yeni aday dizenin kalan kısmını geçerli kısmi dizeye ekler. Aday dize bulunamazsa, yalnızca yazılan karakterler görüntülenir ve düzenleme kutusu otomatik tamamlama olmadan olduğu gibi davranır. Kullanıcı bir dizeyi kabul edene kadar bu işlem devam eder.

Otomatik Öneri

Otomatik öneri modunda, otomatik tamamlama, düzenleme alanının altında bir veya daha fazla önerilen tam ifadeler içeren bir açılır liste görüntüler. Kullanıcı önerilen dizelerden birini seçebilir veya yazmaya devam edebilir. Yazma ilerledikçe, açılan liste geçerli kısmi dizeye göre değiştirilebilir. IAutoComplete2::SetOptionsiçinde ACO_SEARCH bayrağını ayarlarsanız, otomatik tamamlama açılan listenin en altında geçerli kısmi dizeyi aramak için bir seçenek sağlar. Önerilen dizeler olmasa bile bu seçenek görüntülenir. Kullanıcı arama seçeneğini seçerse, uygulamanızın kullanıcıya yardımcı olacak bir arama altyapısı başlatması gerekir.

Önceden Tanımlanmış Otomatik Tamamlama Kaynaklarını Kullanma

Otomatik tamamlama, kullanıcının kısmi metniyle eşleşecek metinler sağlayan bir veri kaynağına bağlıdır. Özel bir otomatik tamamlama kaynağı sağlama seçeneğiniz vardır, ancak en yaygın kaynaklardan bazıları sistem tarafından sağlanır.

CLSID_ACLHistory

Kullanıcının Geçmiş listesindeki URL listesiyle eşleşen otomatik tamamlama kaynağı.

CLSID_ACLMRU

Kullanıcının Son Kullanılanlar listesindeki URL listesiyle eşleşen otomatik tamamlama kaynağı.

CLSID_ACListISF

Shell ad alanı içindeki öğelerle eşleşen otomatik tamamlama kaynağı: kullanıcının bilgisayarındaki dosyalar ve Denetim Masası gibi sanal klasörlerdeki öğeler.

Kaynakları hemen boşaltmak yerine, otomatik tamamlamada yer alan çeşitli nesnelere yönelik arabirim işaretçilerini korumak isteyebileceğiniz durumlar olabilir. Özellikle, otomatik tamamlama davranışını dinamik olarak ayarlamak istediğinizde bu yapılır. Bu durumun en yaygın örneği, Shell ad alanından otomatik olarak tamamlanan ve aynı zamanda geçerli dizinden de numaralandırma seçeneği (ACLO_CURRENTDIR) sunan CLSID_ACListISF nesnesi kullanılırken ortaya çıkar. Örneğin, yeni bir klasöre gittiğinizde, Internet Explorer Adres çubuğunun geçerli dizinini değiştirir ve bu nedenle ayarların dinamik olarak değiştirilmesi gerekir. CLSID_ACListISF nesnesinin geçerli dizin olarak ele alması gereken dizini belirtmenin iki yolu vardır:

Aşağıda, pal bir CLSID_ACListISF nesnesinin IACList arabirimine bir işaretçi olduğunu varsayalım:

  • IPersistFolderkullanma:

    CLSID_ACListISF nesnesine belirli bir ITEMIDLIST geçerli dizin olarak ele alınması gerektiğini söylemek için nesnenin IPersistFolder arabirimini kullanabilirsiniz. ITEMIDLIST bir sanal klasöre başvurabildiğinden, bu yöntem ICurrentWorkingDirectorykullanmaktan daha esnektir.

    Aşağıdaki örneklerde, basitleştirilmiş bir parametre listesi sağlayan templatized QueryInterface kullanıldığına dikkat edin.

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

    CLSID_ACListISF nesnesine geçerli dizin olarak bir yol vermek için nesnenin ICurrentWorkingDirectory arabirimini kullanabilirsiniz.

    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();
    }