2010-03-18 8 views
2

J'ai CFileDialog et définir le filtre pour cela (Fichiers texte * .txt).
Quand il s'ouvre, je ne vois que des fichiers TXT, c'est vrai. Mais! Quand je tape du texte dans le nom de fichier, l'indice (sous le nom du champ) affiche tous les fichiers (fichiers avec n'importe quelle extension).

Ce comportement peut-il être modifié par un indicateur? Je veux un indice de force pour montrer seulement les fichiers TXT.CFileDialog - Filtre sélectionné et "Hint" montrant tous les fichiers

... 
CFileDialog f(TRUE,NULL,NULL,OFN_HIDEREADONLY|OFN_NOCHANGEDIR,_T("Text files (*.txt)|*.txt|All files (*.*)|*.*||")); 
if(f.DoModal() != IDOK) return; 
... 
+0

Publier du code. –

Répondre

0

Mon expérience avec ce que le filtre de fichier contrôlera ce qui est affiché dans la liste des fichiers, mais quand vous tapez le remplissage automatique des mises en correspondance contre tout dans le répertoire courant. Je ne peux pas penser à un bon moyen de prouver que cela ne peut pas être fait, mais je n'ai rien vu dans les documents MFC ou le code qui vous permettrait de le faire.

Vous pouvez sous-classer CFileDialog et remplacer la fonction CFileDialog :: OnFileNameOK() pour rejeter l'entrée d'un nom de fichier qui ne correspond pas à vos critères. Vous pouvez également obtenir la fonctionnalité souhaitée en remplaçant CFileDialog :: OnFileNameChange() pour rejeter un nom de fichier fourni par l'utilisateur avant de cliquer sur le bouton Ouvrir (ou Enregistrer), mais je ne l'ai pas fait moi-même pour savoir exactement comment faire des exercices.