Comment créer une ComboBox MFC avec recherche
-
19-08-2019 - |
Question
J'ai besoin d'une liste déroulante dans une application Windows MFC dotée d'une fonction de recherche. Cela devrait fonctionner de sorte que si vous commencez à taper quelque chose qui correspond à un ou plusieurs éléments de la liste, la liste déroulante devrait dérouler et afficher ces éléments. Un peu comme les champs de recherche populaires basés sur ajax sur le Web
est-ce que vous - connaissez-vous un contrôle fournissant cette fonctionnalité? - avoir un lien vers des informations sur la manière de créer cette fonctionnalité moi-même? - avez-vous des idées sur la façon de faire cela que vous pourriez partager?
La solution
trouvé ceci:
http://www.codeguru.com/cpp/ contrôles / combobox / article.php / c1807 /
a renommé la classe car CComboBoxEx fait maintenant partie de MFC et a ajouté un appel ShowDropDown () à OnEditUpdate ().
Autres conseils
C’est une FAQ Win32 api. Voir Adv. Win32 api ng news: //194.177.96.26/comp.os.ms-windows.programmer.win32 (vous n'avez pas du tout besoin de CBN_EDITCHANGE. C'est automatique avec api)
Accès complet à la zone d'édition de la liste déroulante:
CEdit *pEdit = (CEdit *)pComboBox->GetWindow(GW_CHILD);
CEdit * pEdit = (CEdit *) pComboBox - > GetWindow (GW_CHILD);
Puis-je accéder à la partie ListBox de la même manière? Besoin d'effacer le contenu de la liste, par exemple en utilisant ResetContent.
Fournissez un gestionnaire pour l'événement CBN_EDITCHANGE
. Votre gestionnaire sera & # 246; être appelé à chaque fois que l'utilisateur change le texte dans le champ de saisie.
Dans ce gestionnaire, appelez la méthode CComboBox :: FindString ()
pour voir si le texte saisi existe dans l'une de vos entrées de liste déroulante. Si tel est le cas, appelez CComboBox :: SetCurSel ()
pour le sélectionner.