A preenchimento automático expande cadeias de caracteres que foram parcialmente inseridas em um controle de edição em cadeias de caracteres completas. Por exemplo, quando um usuário começa a inserir uma URL no controle de edição de endereço inserido na barra de ferramentas do Windows Internet Explorer, a preenchimento automático expande a cadeia de caracteres em uma ou mais opções de URL completas consistentes com a cadeia de caracteres parcial existente. Uma cadeia de caracteres de URL parcial, como "mic", pode ser expandida para "https://www.microsoft.com" ou "https://www.microsoft.com/windows". O preenchimento automático normalmente é usado com controles de edição ou com controles que têm um controle de edição inserido, como o controle ComboBoxEx .
Adicionando funcionalidade de preenchimento automático ao seu aplicativo
Um aplicativo pode adicionar a funcionalidade de preenchimento automático a um controle de edição de duas maneiras:
SHAutoComplete é uma função simples que pode preenchimento automático de um caminho de arquivo ou URL.
A interface IAutoComplete é exposta pelo objeto de preenchimento automático (CLSID_AutoComplete). Ele permite que os aplicativos inicializem, habilitem e desabilitem o objeto.
O IAutoComplete permite mais controle sobre fontes de preenchimento automático, incluindo a capacidade de adicionar uma fonte personalizada. O restante deste tópico discute o uso do IAutoComplete. Confira Como habilitar o preenchimento automático manualmente para obter exemplos de uso específicos.
Modos de preenchimento automático
Ao usar IAutoComplete, a preenchimento automático pode exibir a cadeia de caracteres concluída em dois modos: autoaplicativo e sugestão automática. Os modos são independentes; você pode habilitar ou ambos. Para especificar o modo, chame IAutoComplete2::SetOptions.
Autoaplicativo
No modo de autoaplicativo, o preenchimento automático acrescenta o restante da cadeia de caracteres candidata mais provável aos caracteres existentes, realçando os caracteres acrescentados. Se o usuário continuar a inserir caracteres, ele será adicionado à cadeia de caracteres parcial existente. Se o usuário adicionar um caractere idêntico ao próximo caractere realçado, o realce desse caractere será desativado. Os caracteres restantes ainda serão realçados. Se o usuário adicionar um caractere que não corresponde ao próximo caractere realçado, a preenchimento automático tentará gerar uma nova cadeia de caracteres candidata com base na cadeia de caracteres parcial maior e acrescentará o restante da nova cadeia de caracteres candidata à cadeia de caracteres parcial atual. Se nenhuma cadeia de caracteres candidata puder ser encontrada, apenas os caracteres digitado aparecerão e a caixa de edição se comportará como faria sem preenchimento automático. Esse processo continua até que o usuário aceite uma cadeia de caracteres.
Sugestão automática
No modo de sugestão automática, o preenchimento automático exibe uma lista suspensa, com uma ou mais cadeias de caracteres completas sugeridas, abaixo do controle de edição. O usuário pode selecionar uma das cadeias de caracteres sugeridas ou continuar digitando. À medida que a digitação progride, a lista suspensa pode ser modificada com base na cadeia de caracteres parcial atual. Se você definir o sinalizador ACO_SEARCH em IAutoComplete2::SetOptions, o preenchimento automático fornecerá uma opção, na parte inferior da lista suspensa, para pesquisar a cadeia de caracteres parcial atual. Essa opção é exibida mesmo que não haja cadeias de caracteres sugeridas. Se o usuário selecionar a opção de pesquisa, seu aplicativo deverá iniciar um mecanismo de pesquisa para ajudar o usuário.
Usando fontes de preenchimento automático predefinidas
O preenchimento automático depende de ter uma fonte que forneça cadeias de caracteres para corresponder à cadeia de caracteres parcial do usuário. Você tem a opção de fornecer uma fonte de preenchimento automático personalizada, mas várias das fontes mais comuns são fornecidas pelo sistema.
CLSID_ACLHistory
Uma fonte de preenchimento automático que corresponde à lista de URLs na lista Histórico do usuário.
CLSID_ACLMRU
Uma fonte de preenchimento automático que corresponde à lista de URLs na lista Usados Recentemente do usuário.
CLSID_ACListISF
Uma fonte de preenchimento automático que corresponde aos itens no namespace do Shell: arquivos no computador do usuário, bem como itens em pastas virtuais, como Painel de Controle.
Há ocasiões em que, em vez de liberar imediatamente os recursos, talvez você queira manter os ponteiros de interface para os vários objetos envolvidos no preenchimento automático. Em particular, isso é feito quando você deseja ajustar o comportamento de preenchimento automático dinamicamente. A instância mais comum disso ocorre ao usar o objeto CLSID_ACListISF, que é compilado automaticamente do namespace shell e tem a opção (ACLO_CURRENTDIR) de enumeração do diretório atual também. Por exemplo, quando você navega para uma nova pasta, a Internet Explorer altera o diretório atual da barra de endereços e, portanto, as configurações precisam ser alteradas dinamicamente. Há duas maneiras de especificar o diretório que o objeto CLSID_ACListISF deve tratar como o diretório atual:
Para informar ao objeto CLSID_ACListISF que um ITEMIDLIST específico deve ser tratado como o diretório atual, você pode usar a interface IPersistFolder do objeto. Como um ITEMIDLIST pode se referir a uma pasta virtual, esse método é mais flexível do que usar ICurrentWorkingDirectory.
Observe que os exemplos a seguir usam o templatized QueryInterface, que permite uma lista de parâmetros simplificada.
Use o GitHub Copilot para interpretar, depurar e estender o código do projeto para uma estrutura de dados Trie que dá suporte aos recursos de preenchimento automático e sugestão ortográfica.