CFileDialog::CFileDialog
Appelez cette fonction pour construire une boîte de dialogue standard de fichiers Windows.
explicit CFileDialog(
BOOL bOpenFileDialog,
LPCTSTR lpszDefExt = NULL,
LPCTSTR lpszFileName = NULL,
DWORD dwFlags = OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,
LPCTSTR lpszFilter = NULL,
CWnd* pParentWnd = NULL,
DWORD dwSize = 0,
BOOL bVistaStyle = TRUE
);
Paramètres
[in] bOpenFileDialog
Le paramètre qui spécifie le type de boîte de dialogue à créer.Placez-le à TRUE pour construire une boîte de dialogue Ouvrir .Placez-la à FALSE pour construire une boîte de dialogue Sauvegarde de fichier comme .[in] lpszDefExt
L'extension de nom de fichier par défaut.Si l'utilisateur n'inclut pas d'extension (une qui a une association sur l'ordinateur de l'utilisateur) dans la zone de nom de fichier, l'extension spécifiée par lpszDefExt est automatiquement ajoutée au nom de fichier.Si ce paramètre est NULL, aucune extension n'est ajoutée.[in] lpszFileName
Le nom de fichier initial qui apparaît dans la zone de nom de fichier.Si NULL, aucun nom de fichier initial s'affiche.[in] dwFlags
Une combinaison d'une ou plusieurs balises que vous pouvez utiliser pour personnaliser la boîte de dialogue.Pour une description de ces indicateurs, consultez la structure d' OPENFILENAME dans Kit de développement logiciel Windows.Si vous modifiez le membre de structure d' m_ofn.Flags, utilisez un opérateur de bits OR dans vos modifications pour contenir le comportement par défaut intact.[in] lpszFilter
Une série de paires de chaîne qui spécifient des filtres que vous pouvez appliquer au fichier.Si vous spécifiez des filtres de fichiers, seuls les fichiers qui les critères de filtre de correspondance sembleront dans la liste de fichiers.Consultez la section Notes pour plus d'informations sur l'utilisation des filtres de fichiers.[in] pParentWnd
Un pointeur vers le parent ou la fenêtre propriétaire de la boîte de dialogue Fichier.[in] dwSize
La taille de la structure d' OPENFILENAME .Cette valeur dépend de la version du système d'exploitation.MFC a utilisé ce paramètre pour déterminer le type approprié de la boîte de dialogue de créer (par exemple, les nouvelles boîtes de dialogue d' Windows 2000 au lieu de boîtes de dialogue NT4).La taille par défaut de 0 signifie que le code MFC détermine la taille correcte de boîte de dialogue à utiliser en fonction de la version du système d'exploitation sur lequel le programme est exécuté.[in] bVistaStyle
Notez ce paramètre est disponible dans Visual Studio 2008 et versions ultérieures et est entraîne la boîte de dialogue nouveau style à être utilisé uniquement si vous exécutez dans Windows Vista ou version ultérieure.Le paramètre qui spécifie le style de la boîte de dialogue Fichier.Placez-le à TRUE pour utiliser les nouvelles boîtes de dialogue Fichier de style de Vista.Sinon, le style ancien des boîtes de dialogue est utilisé.Consultez la section Notes pour plus d'informations sur l'exécution sous Vista.
Notes
Ouvrir Ou la boîte de dialogue Sauvegarde de fichier comme est construit, selon la valeur d' bOpenFileDialog.
Spécifier une extension par défaut à l'aide de lpszDefExt peut ne pas produire le comportement que vous attendez, car il est rarement prévisible les extensions ont des associations de fichiers sur l'ordinateur de l'utilisateur.Si vous avez besoin de plus de contrôle d'ajouter d'extension par défaut, vous pouvez dériver votre propre classe d' CFileDialog, et remplacez la méthode d' CFileDialog::OnFileNameOK pour exécuter votre propre gestion d'extension.
Pour permettre à l'utilisateur de sélectionner plusieurs fichiers, définissez l'indicateur d' OFN_ALLOWMULTISELECT avant d'appeler DoModal.Vous devez fournir votre propre mémoire tampon de nom de fichier pour stocker la liste retournée de noms de fichier en.Faites ceci en remplaçant m_ofn.lpstrFile par un pointeur vers une mémoire tampon que vous avez alloué, après avoir construit CFileDialog, mais avant d'appeler DoModal.En outre, vous devez définir m_ofn.nMaxFile avec le nombre de caractères dans la mémoire tampon pointée pointe vers m_ofn.lpstrFile.Si vous définissez le nombre maximal de fichiers à sélectionner à n, la taille de la mémoire tampon est nécessaire n* (_MAX_PATH + 1) + 1.Par exemple :
#define MAX_CFileDialog_FILE_COUNT 99
#define FILE_LIST_BUFFER_SIZE ((MAX_CFileDialog_FILE_COUNT * (MAX_PATH + 1)) + 1)
CString fileName;
wchar_t* p = fileName.GetBuffer( FILE_LIST_BUFFER_SIZE );
CFileDialog dlgFile(TRUE);
OPENFILENAME& ofn = dlgFile.GetOFN( );
ofn.Flags |= OFN_ALLOWMULTISELECT;
ofn.lpstrFile = p;
ofn.nMaxFile = FILE_LIST_BUFFER_SIZE;
dlgFile.DoModal();
fileName.ReleaseBuffer();
wchar_t* pBufEnd = p + FILE_LIST_BUFFER_SIZE - 2;
wchar_t* start = p;
while( ( p < pBufEnd ) && ( *p ) )
p++;
if( p > start )
{
_tprintf(_T("Path to folder where files were selected: %s\r\n\r\n"), start );
p++;
int fileCount = 1;
while( ( p < pBufEnd ) && ( *p ) )
{
start = p;
while( ( p < pBufEnd ) && ( *p ) )
p++;
if( p > start )
_tprintf(_T("%2d. %s\r\n"), fileCount, start );
p++;
fileCount++;
}
}
Pour permettre à l'utilisateur de redimensionner une boîte de dialogue de style explorateur en utilisant la souris ou du clavier, définissez l'indicateur d' OFN_ENABLESIZING .La définition de cette balise est nécessaire uniquement si vous fournissez une procédure de raccordement ou un modèle personnalisé.La balise fonctionne uniquement avec une boîte de dialogue de style explorateur ; les boîtes de dialogue à l'ancienne ne peuvent pas être redimensionnées.
Le paramètre d' lpszFilter est utilisé pour déterminer le type de nom de fichier que fichier doit être affiché dans la liste des fichiers.La première chaîne en paires de chaîne décrit le filtre ; la deuxième chaîne indique l'extension de nom de fichier à utiliser.Plusieurs extensions peuvent être spécifiées à l'aide d'un point-virgule (« ; » caractère) comme séparateur.Les conseils de chaîne avec deux « | » caractère, suivi d'un caractère d' NULL .Vous pouvez également utiliser un objet d' CString pour ce paramètre.
Par exemple, Microsoft Excel permet aux utilisateurs d'ouvrir des fichiers portant les extensions .xlc (graphique) ou .xls (feuille de calcul), entre autres.Le filtre pour Excel peut être écrit comme suit :
static TCHAR BASED_CODE szFilter[] = _T("Chart Files (*.xlc)|*.xlc|")
_T("Worksheet Files (*.xls)|*.xls|Data Files (*.xlc;*.xls)|")
_T("*.xlc; *.xls|All Files (*.*)|*.*||");
Toutefois, si vous prévoyez d'utiliser cette chaîne pour mettre à jour directement la structure d' OPENFILENAME, vous devez délimiter vos chaînes avec le caractère NULL, « \ 0 ", au lieu des barres verticales ("|").
Le paramètre d' bVistaStyle s'applique uniquement en exécutant sous Windows Vista.Dans les versions antérieures de windows, ce paramètre est ignoré.Si bVistaStyle a la valeur TRUE, lorsque vous compilez un programme avec Visual Studio 2008 ou version ultérieure, le style Boîte de dialogue Fichier de Vista est utilisé.Sinon, le style précédent Boîte de dialogue Fichier MFC est utilisé.Consultez CFileDialog de classe pour plus d'informations.
Les modèles de boîte de dialogue ne sont pas pris en charge sur des boîtes de dialogue en fonction bVistaStyle
Exemple
Consultez l'exemple pour CFileDialog::DoModal.
Configuration requise
Header:afxdlgs.h