Comment activer la saisie semi-automatique manuellement
Pour obtenir un contrôle plus détaillé du comportement de saisie semi-automatique ou pour ajouter une source personnalisée de chaînes d’autocomplétion, vous devez gérer l’objet autocomplétion vous-même. Vous pouvez activer la saisie semi-automatique manuellement des manières suivantes.
Instructions
Création d’un objet de saisie semi-automatique simple
Les étapes suivantes montrent comment créer et initialiser un objet d’autocomplétion simple. Un objet d’autocomplétion simple complète les chaînes d’une source unique. La vérification des erreurs a été omise intentionnellement dans cet exemple.
Créez l’objet de saisie semi-automatique.
IAutoComplete *pac; HRESULT hr = CoCreateInstance(CLSID_AutoComplete, NULL, CLSCTX_INPROC_SERVER, IID_PPV_ARGS(&pac));
Créez la source de saisie semi-automatique. Vous pouvez utiliser une source d’autocomplétion prédéfinie ou écrire votre propre source personnalisée.
Le code suivant utilise l’une des sources d’autocomplétion prédéfinies.
IUnknown *punkSource; hr = CoCreateInstance(CLSID_ACListISF, NULL, CLSCTX_INPROC_SERVER, IID_PPV_ARGS(&punkSource));
Le code suivant utilise une source d’autocomplétion personnalisée. Vous pouvez écrire votre propre source de saisie semi-automatique en implémentant un objet qui expose l’interface IEnumString . L’objet peut également implémenter éventuellement les interfaces IACList et IACList2 .
CCustomAutoCompleteSource *pcacs = new CCustomAutoCompleteSource(); hr = pcacs->QueryInterface(IID_PPV_ARGS(&punkSource)); if(SUCCEEDED(hr)) { // ... } pcacs->Release();
Définissez les options de la source de saisie semi-automatique (facultatif).
Vous pouvez personnaliser le comportement de la source d’autocomplétion en définissant ses options si la source expose l’interface IACList2 . Lorsque vous utilisez les sources d’autocomplétion prédéfinies, seul CLSID_ACListISF exporte IACList2. Pour obtenir la liste complète des options et leurs valeurs, consultez IACList2::SetOptions.
IACList2 *pal2; hr = punkSource->QueryInterface(IID_PPV_ARGS(&pal2)); if (SUCCEEDED(hr)) { hr = pal2->SetOptions(ACLO_FILESYSONLY); pal2->Release(); }
Initialisez l’objet autocomplétion.
Dans cet exemple, hwndEdit est le handle de la fenêtre de contrôle d’édition pour laquelle la saisie semi-automatique doit être activée. Consultez IAutoComplete::Init pour obtenir une description des deux derniers paramètres inutilisés.
hr = pac->Init(hwndEdit, punkSource, NULL, NULL);
Définissez les options de l’objet autocomplétion (facultatif).
Vous pouvez personnaliser le comportement de l’objet de saisie semi-automatique en définissant ses options. Pour obtenir la liste complète des options et leurs valeurs, consultez la documentation pour IACList2::SetOptions.
IAutoComplete2 *pac2; hr = pac->QueryInterface(IID_PPV_ARGS(&pac2)); if (SUCCEEDED(hr)) { hr = pac2->SetOptions(ACO_AUTOSUGGEST); pac2->Release(); }
Relâchez les objets.
Notes
L’objet de saisie semi-automatique reste attaché au contrôle d’édition même après sa mise en production. Si vous prévoyez de devoir accéder à ces objets ultérieurement(si vous souhaitez modifier les options de saisie semi-automatique ultérieurement, par exemple), il n’est pas nécessaire de les libérer à ce stade.
punkSource->Release(); pac->Release();
Création d’un objet d’autocomplétion composée
Un objet d’autocomplétion composée correspond à des chaînes provenant de plusieurs sources. Par exemple, la barre d’adresses Windows Internet Explorer utilise un objet d’autocomplétion composée, car l’utilisateur peut commencer à taper le nom d’un fichier ou d’une URL. La plupart des étapes impliquées dans la création d’un objet d’autocomplétion composée sont identiques aux étapes décrites dans « Création d’un objet autocomplétion simple ». Ces étapes sont indiquées en tant que telles.
Créez l’objet de saisie semi-automatique. Cela est identique à l’étape 1 ci-dessus.
Créez le gestionnaire d’objets sources composés de saisie semi-automatique.
L’objet source composé autocomplétion permet de combiner plusieurs sources d’autocomplétion en une seule source d’autocomplétion.
IObjMgr *pom; hr = CoCreateInstance(CLSID_ACLMulti, NULL, CLSCTX_INPROC_SERVER, IID_PPV_ARGS(&pom));
Créez et définissez des options pour chacune des sources d’autocomplétion. Répétez les étapes 2 et 3 ci-dessus pour chaque source.
Attachez chaque source de saisie semi-automatique au gestionnaire d’objets source.
hr = pom->Append(punkSource1); hr = pom->Append(punkSource2);
Initialisez l’objet autocomplétion.
Cela est identique à l’étape 4 ci-dessus, sauf qu’au lieu de transmettre la source de saisie semi-automatique simple à IAutoComplete::Init, vous passez le gestionnaire d’objets source composé.
hr = pac->Init(hwndEdit, pom, NULL, NULL);
Définissez les options de l’objet de saisie semi-automatique. Il s’agit de l’étape 5 ci-dessus.
Relâchez les objets.
Comme dans le cas simple, vous pouvez libérer les objets dès que vous avez terminé de les utiliser, mais vous pouvez également les conserver pour modifier les options ultérieurement.
pac->Release(); pom->Release(); // Release each individual source. punkSource1->Release(); punkSource2->Release();