CFileDialog, classe

Encapsule la boîte de dialogue commune utilisée pour les opérations d’ouverture de fichier ou d’enregistrement de fichier.

Syntaxe

class CFileDialog : public CCommonDialog

Membres

Constructeurs publics

Nom Description
CFileDialog ::CFileDialog Construit un objet CFileDialog.

Méthodes publiques

Nom Description
CFileDialog ::AddCheckButton Ajoute un bouton case activée à la boîte de dialogue.
CFileDialog ::AddComboBox Ajoute une zone de liste modifiable à la boîte de dialogue.
CFileDialog ::AddControlItem Ajoute un élément à un contrôle conteneur dans la boîte de dialogue.
CFileDialog ::AddEditBox Ajoute une zone d’édition à la boîte de dialogue.
CFileDialog ::AddMenu Ajoute un menu à la boîte de dialogue.
CFileDialog ::AddPlace Surcharge. Ajoute un dossier à la liste des emplacements disponibles pour que l’utilisateur ouvre ou enregistre des éléments.
CFileDialog ::AddPushButton Ajoute un bouton à la boîte de dialogue.
CFileDialog ::AddRadioButtonList Ajoute un groupe de boutons d’option (également appelé case d’option) à la boîte de dialogue.
CFileDialog ::AddSeparator Ajoute un séparateur à la boîte de dialogue.
CFileDialog ::AddText Ajoute du contenu texte à la boîte de dialogue.
CFileDialog ::ApplyOFNToShellDialog Mises à jour l’état de la CFileDialog correspondance entre les paramètres et les indicateurs stockés dans la m_ofn variable membre.
CFileDialog ::D oModal Affiche la boîte de dialogue et permet à l’utilisateur d’effectuer une sélection.
CFileDialog ::EnableOpenDropDown Active une liste déroulante sur le bouton Ouvrir ou Enregistrer dans la boîte de dialogue.
CFileDialog ::EndVisualGroup Arrête l’ajout d’éléments à un groupe visuel dans la boîte de dialogue.
CFileDialog ::GetCheckButtonState Obtient l’état actuel d’un bouton case activée (case activée box) dans la boîte de dialogue.
CFileDialog ::GetControlItemState Obtient l’état actuel d’un élément dans un contrôle conteneur trouvé dans la boîte de dialogue.
CFileDialog ::GetControlState Obtient la visibilité actuelle et les états activés d’un contrôle donné.
CFileDialog ::GetEditBoxText Obtient le texte actuel dans un contrôle de zone d’édition.
CFileDialog ::GetFileExt Retourne l’extension du fichier sélectionné.
CFileDialog ::GetFileName Retourne le nom de fichier du fichier sélectionné.
CFileDialog ::GetFileTitle Retourne le titre du fichier sélectionné.
CFileDialog ::GetFolderPath Récupère le chemin d’accès du dossier ou du répertoire actuellement ouvert pour une boîte de dialogue Ouvrir ou Enregistrer sous commun dans l’Explorateur.
CFileDialog ::GetIFileDialogCustomize Récupère l’objet COM interne pour un objet personnalisé CFileDialog .
CFileDialog ::GetIFileOpenDialog Récupère l’objet COM interne d’une CFileDialog boîte de dialogue Ouvrir un fichier.
CFileDialog ::GetIFileSaveDialog Récupère l’objet COM interne d’une CFileDialog boîte de dialogue Enregistrer un fichier.
CFileDialog ::GetNextPathName Retourne le chemin complet du fichier sélectionné suivant.
CFileDialog ::GetOFN Récupère la OPENFILENAME structure de l’objet CFileDialog .
CFileDialog ::GetPathName Retourne le chemin complet du fichier sélectionné.
CFileDialog ::GetReadOnlyPref Renvoie l’état en lecture seule du fichier sélectionné.
CFileDialog ::GetResult Obtient le choix que l’utilisateur a effectué dans la boîte de dialogue.
CFileDialog ::GetResults Obtient les choix de l’utilisateur dans une boîte de dialogue qui autorise plusieurs sélections.
CFileDialog ::GetSelectedControlItem Obtient un élément particulier à partir des contrôles de conteneur spécifiés dans la boîte de dialogue.
CFileDialog ::GetStartPosition Retourne la position du premier élément de la liste de noms de fichier.
CFileDialog ::HideControl Masque le contrôle spécifié dans une boîte de dialogue Ouvrir ou Enregistrer sous sous dans l’Explorateur.
CFileDialog ::IsPickFoldersMode Détermine si la boîte de dialogue active en mode sélecteur de dossiers.
CFileDialog ::MakeProminent Place un contrôle dans la boîte de dialogue afin qu’il se distingue par rapport aux autres contrôles ajoutés.
CFileDialog ::RemoveControlItem Supprime un élément d’un contrôle conteneur dans la boîte de dialogue.
CFileDialog ::SetCheckButtonState Définit l’état actuel d’un bouton case activée (boîte de case activée) dans la boîte de dialogue.
CFileDialog ::SetControlItemState Définit l’état actuel d’un élément dans un contrôle conteneur trouvé dans la boîte de dialogue.
CFileDialog ::SetControlItemText Définit le texte d’un élément de contrôle. Par exemple, le texte qui accompagne une case d’option ou un élément dans un menu.
CFileDialog ::SetControlLabel Définit le texte associé à un contrôle, tel que le texte du bouton ou une étiquette de zone d’édition.
CFileDialog ::SetControlState Définit la visibilité actuelle et les états activés d’un contrôle donné.
CFileDialog ::SetControlText Définit le texte du contrôle spécifié dans une boîte de dialogue Ouvrir ou Enregistrer sous le style Explorateur.
CFileDialog ::SetDefExt Définit l’extension de nom de fichier par défaut pour une boîte de dialogue Ouvrir ou Enregistrer sous le style Explorateur.
CFileDialog ::SetEditBoxText Définit le texte actuel dans un contrôle de zone d’édition.
CFileDialog ::SetProperties Fournit une banque de propriétés qui définit les valeurs par défaut à utiliser pour l'élément en cours d'enregistrement.
CFileDialog ::SetSelectedControlItem Définit l’état sélectionné d’un élément particulier dans un groupe de boutons d’option ou une zone de liste modifiable trouvée dans la boîte de dialogue.
CFileDialog ::SetTemplate Définit le modèle de boîte de dialogue de l’objet CFileDialog .
CFileDialog ::StartVisualGroup Déclare un groupe visuel dans la boîte de dialogue. Les appels suivants à n’importe quelle méthode « add » ajoutent ces éléments à ce groupe.
CFileDialog ::UpdateOFNFromShellDialog Mises à jour les données stockées dans la m_ofn variable membre pour correspondre à l’état actuel de la boîte de dialogue fichier.

Méthodes protégées

Nom Description
CFileDialog ::OnButtonClicked Appelé lorsque le bouton est cliqué.
CFileDialog ::OnCheckButtonToggled Appelé lorsque la zone de case activée est case activée ed/un case activée ed.
CFileDialog ::OnControlActivating Appelé lorsque le contrôle est actif.
CFileDialog ::OnFileNameChange Gère le message WM_NOTIFY CDN_SELCHANGE.
CFileDialog ::OnFileNameOK Valide le nom de fichier entré dans la boîte de dialogue.
CFileDialog ::OnFolderChange Gère le message WM_NOTIFY CDN_FOLDERCHANGE.
CFileDialog ::OnInitDone Gère le message WM_NOTIFY CDN_INITDONE.
CFileDialog ::OnItemSelected Appelé lorsque l’élément de conteneur est sélectionné.
CFileDialog ::OnLBSelChangedNotify Vous permet d’effectuer des actions personnalisées lorsque la sélection de fichiers change.
CFileDialog ::OnShareViolation Gère les violations de partage.
CFileDialog ::OnTypeChange Gère le message WM_NOTIFY CDN_TYPECHANGE.

Membres de données publics

Nom Description
CFileDialog ::m_ofn Structure Windows OPENFILENAME . Fournit l’accès aux paramètres de boîte de dialogue de fichier de base.

Notes

Les boîtes de dialogue de fichiers courantes vous permettent d’implémenter des boîtes de dialogue de sélection de fichiers, par exemple, Ouvrir un fichier et enregistrer sous de manière cohérente avec les normes Windows.

Vous pouvez utiliser CFileDialog comme c’est le cas avec le constructeur fourni, ou vous pouvez dériver votre propre classe de boîte de dialogue à partir d’un constructeur et écrire un constructeur en fonction de CFileDialog vos besoins. Dans les deux cas, ces boîtes de dialogue se comportent comme des boîtes de dialogue MFC standard, car elles sont dérivées de la classe CCommonDialog. CFileDialog s’appuie sur le fichier COMMDLG.DLL inclus dans Windows.

L’apparence et les fonctionnalités de CFileDialog Windows Vista ou ultérieure diffèrent des versions antérieures de Windows. La valeur par défaut CFileDialog utilise automatiquement le nouveau style Windows Vista ou ultérieur sans modification du code si un programme est compilé et exécuté sous Windows Vista ou version ultérieure. Utilisez le paramètre bVistaStyle dans le constructeur pour remplacer manuellement cette mise à jour automatique. L’exception à la mise à jour automatique est des boîtes de dialogue personnalisées. Ils ne seront pas convertis en nouveau style. Pour plus d’informations sur le constructeur, consultez CFileDialog ::CFileDialog.

Remarque

Le système d’ID de contrôle diffère de Windows Vista ou version ultérieure des versions antérieures de Windows lorsque vous utilisez un CFileDialog. Vous devez mettre à jour toutes les références aux CFileDialog contrôles dans le code avant de pouvoir porter votre projet à partir d’une version antérieure de Windows.

Certaines CFileDialog méthodes ne sont pas prises en charge sous Windows Vista ou version ultérieure. Pour plus d’informations sur la prise en charge de la méthode, consultez la rubrique de méthode individuelle. En outre, les fonctions héritées suivantes ne sont pas prises en charge sous Windows Vista ou version ultérieure :

Les messages Windows de la CFileDialog classe varient en fonction du système d’exploitation que vous utilisez. Par exemple, Windows XP ne prend pas en charge CDialog ::OnCancel et CDialog ::OnOK pour la CFileDialog classe. Toutefois, Windows Vista et les systèmes d’exploitation ultérieurs les prennent en charge. Pour plus d’informations sur les différents messages générés et l’ordre dans lequel ils sont reçus, consultez L’exemple CFileDialog : Journalisation de l’ordre des événements.

Pour utiliser un CFileDialog objet, commencez par créer l’objet à l’aide du CFileDialog constructeur. Une fois la boîte de dialogue construite, vous pouvez définir ou modifier des valeurs dans la structure CFileDialog ::m_ofn pour initialiser les valeurs ou les états des contrôles de boîte de dialogue. La m_ofn structure est de type OPENFILENAME. Pour plus d’informations, consultez la structure OPENFILENAME dans le Kit de développement logiciel (SDK) Windows.

Après avoir initialisé les contrôles de boîte de dialogue, appelez la méthode CFileDialog ::D oModal pour afficher la boîte de dialogue afin que l’utilisateur puisse taper le chemin d’accès et le nom du fichier. DoModal retourne si l’utilisateur a cliqué sur le bouton OK (IDOK) ou Cancel (IDCANCEL). Si DoModal retourne IDOK, vous pouvez utiliser l’une des CFileDialog fonctions membres publiques pour récupérer les informations placées par l’utilisateur.

Remarque

Sous Windows Vista ou version ultérieure, plusieurs appels à IFileDialog ::SetFileTypes provoquent une erreur. Le deuxième appel à SetFileTypes toute instance d’une CFileDialog instance retourne E_UNEXPECTED dans Windows Vista ou version ultérieure. Certaines CFileDialog fonctions de méthode appellent SetFileTypes. Par exemple, deux appels pour CFileDialog::DoModal la même instance d’une CFileDialog assertion génèrent.

CFileDialog inclut plusieurs membres protégés qui vous permettent d’effectuer une gestion personnalisée des violations de partage, de la validation du nom de fichier et de la notification de modification de zone de liste. Ces membres protégés sont des fonctions de rappel que la plupart des applications n’ont pas à utiliser, car la gestion par défaut est effectuée automatiquement. Les entrées de mappage de messages pour ces fonctions ne sont pas requises, car elles sont des fonctions virtuelles standard.

Vous pouvez utiliser la fonction Windows CommDlgExtendedError pour déterminer si une erreur s’est produite lors de l’initialisation de la boîte de dialogue et pour en savoir plus sur l’erreur.

La destruction des CFileDialog objets est gérée automatiquement. Vous n’avez pas besoin d’appeler CDialog ::EndDialog.

Pour permettre à l’utilisateur de sélectionner plusieurs fichiers, définissez l’indicateur OFN_ALLOWMULTISELECT avant d’appeler DoModal. Vous devez fournir votre propre mémoire tampon de nom de fichier pour prendre en charge la liste renvoyée de plusieurs noms de fichiers. Pour ce faire, remplacez m_ofn.lpstrFile par un pointeur vers une mémoire tampon que vous avez allouée, après avoir construit le CFileDialog, mais avant d’appeler DoModal.

En outre, vous devez définir m_ofn.nMaxFile en utilisant le nombre de caractères dans la mémoire tampon pointée par m_ofn.lpstrFile. Si vous définissez le nombre maximal de fichiers à sélectionner n, la taille de mémoire tampon requise est n * (_MAX_PATH + 1) + 1. Le premier élément retourné dans la mémoire tampon est le chemin d’accès au dossier dans lequel les fichiers ont été sélectionnés. Pour les boîtes de dialogue windows Vista ou ultérieures, les chaînes de répertoire et de nom de fichier sont terminées par null, avec un caractère Null supplémentaire après le nom du dernier fichier. Ce format permet aux boîtes de dialogue de style Explorateur de retourner des noms de fichiers longs qui incluent des espaces. Pour les boîtes de dialogue de style ancien, les chaînes de répertoire et de nom de fichier sont séparées par des espaces et la fonction utilise des noms de fichiers courts pour les noms de fichiers avec des espaces.

L’exemple suivant montre comment utiliser une mémoire tampon pour récupérer et répertorier plusieurs noms de fichiers.

#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 modifier la taille de la mémoire tampon en réponse à l’utilisateur sélectionnant plusieurs noms de fichiers, vous devez dériver une nouvelle classe et CFileDialog remplacer la méthode CFileDialog ::OnFileNameChange .

Si vous dérivez une nouvelle classe de , vous pouvez utiliser un mappage de CFileDialogmessages pour gérer les messages. Pour étendre la gestion des messages par défaut, dérivez une classe de CFileDialog, ajoutez un mappage de messages à la nouvelle classe et fournissez des fonctions membres pour les nouveaux messages. Vous n’avez pas besoin de fournir une fonction de hook pour personnaliser la boîte de dialogue.

Pour personnaliser la boîte de dialogue, dérivez une classe, fournissez un modèle de boîte de CFileDialogdialogue personnalisé et ajoutez un mappage de messages pour traiter les messages de notification à partir des contrôles étendus. Transmettez tous les messages non traités à la classe de base. Vous n’avez pas besoin de personnaliser la fonction de hook.

Lorsque vous utilisez le style Windows Vista ou ultérieur du CFileDialogmodèle, vous ne pouvez pas utiliser les mappages de messages et les modèles de boîte de dialogue. Au lieu de cela, vous devez utiliser les interfaces COM pour des fonctionnalités similaires.

Pour plus d’informations sur l’utilisation CFileDialog, consultez Classes de dialogue courantes.

Hiérarchie d'héritage

CObject

CCmdTarget

CWnd

CDialog

CCommonDialog

CFileDialog

Spécifications

En-tête : afxdlgs.h

CFileDialog ::AddCheckButton

Ajoute un bouton case activée à la boîte de dialogue.

HRESULT AddCheckButton(
    DWORD dwIDCtl,
    const CString& strLabel,
    BOOL bChecked);

Paramètres

dwIDCtl
ID du bouton case activée à ajouter.

strLabel
Nom du bouton case activée.

bChecked
Valeur booléenne indiquant l’état actuel du bouton case activée. TRUE si case activée ed ; FALSE sinon

Notes

CFileDialog ::AddComboBox

Ajoute une zone de liste modifiable à la boîte de dialogue.

HRESULT AddComboBox(DWORD dwIDCtl);

Paramètres

dwIDCtl
ID de la zone de liste modifiable à ajouter.

Notes

CFileDialog ::AddControlItem

Ajoute un élément à un contrôle conteneur dans la boîte de dialogue.

HRESULT AddControlItem(
    DWORD dwIDCtl,
    DWORD dwIDItem,
    const CString& strLabel);

Paramètres

dwIDCtl
ID du contrôle conteneur auquel ajouter l’élément.

dwIDItem
ID de l’élément.

strLabel
Texte de l’élément.

Notes

CFileDialog ::AddEditBox

Ajoute une zone d’édition à la boîte de dialogue.

HRESULT AddEditBox(
    DWORD dwIDCtl,
    const CString& strText);

Paramètres

dwIDCtl
ID de la zone d’édition à ajouter.

strText
Nom de la zone d’édition.

Notes

CFileDialog ::AddMenu

Ajoute un menu à la boîte de dialogue.

HRESULT AddMenu(
    DWORD dwIDCtl,
    const CString& strLabel);

Paramètres

dwIDCtl
ID du menu à ajouter.

strLabel
Nom du menu.

Notes

CFileDialog ::AddPlace

Ajoute un dossier à la liste des emplacements disponibles pour que l’utilisateur ouvre ou enregistre des éléments.

void AddPlace(
    LPCWSTR lpszFolder,
    FDAP fdap = FDAP_TOP) throw();

void AddPlace(
    IShellItem* psi,
    FDAP fdap = FDAP_TOP) throw();

Paramètres

lpszFolder
Chemin d’accès au dossier à mettre à la disposition de l’utilisateur. Il ne peut s’agir que d’un dossier.

fdap
Spécifie l’emplacement du dossier dans la liste.

Psi
Pointeur vers un IShellItem qui représente le dossier à rendre accessible à l’utilisateur. Il ne peut s’agir que d’un dossier.

Notes

CFileDialog ::AddPushButton

Ajoute un bouton à la boîte de dialogue.

HRESULT AddPushButton(
    DWORD dwIDCtl,
    const CString& strLabel);

Paramètres

dwIDCtl
ID du bouton à ajouter.

strLabel
Nom du bouton.

Notes

CFileDialog ::AddRadioButtonList

Ajoute un groupe de boutons d’option (également appelé case d’option) à la boîte de dialogue.

HRESULT AddRadioButtonList(DWORD dwIDCtl);

Paramètres

dwIDCtl
ID du groupe de boutons d’option à ajouter.

Notes

CFileDialog ::AddSeparator

Ajoute un séparateur à la boîte de dialogue.

HRESULT AddSeparator(DWORD dwIDCtl);

Paramètres

dwIDCtl
ID de l’ajout du séparateur.

Notes

CFileDialog ::AddText

Ajoute du texte à la boîte de dialogue.

HRESULT AddText(
    DWORD dwIDCtl,
    const CString& strText);

Paramètres

dwIDCtl
ID du texte à ajouter.

strText
Nom du texte.

Notes

CFileDialog ::ApplyOFNToShellDialog

Mises à jour l’état actuel du CFileDialog basé sur les valeurs stockées dans la structure de m_ofn données.

void ApplyOFNToShellDialog();

Notes

Dans les versions de Windows antérieures à Windows Vista, la structure de données OPENFILENAME membre a été synchronisée en continu avec l’état du CFileDialogfichier . Toutes les modifications apportées à la variable membre m_ofn ont été immédiatement reflétées dans l’état de la boîte de dialogue. En outre, les modifications apportées à l’état de la boîte de dialogue mettent immédiatement à jour la m_ofn variable membre.

Dans Windows Vista ou version ultérieure, les valeurs de la variable membre et de l’état m_ofnCFileDialog du fichier ne sont pas garanties pour être synchronisées. Cette fonction force l’état de la CFileDialog mise à jour pour qu’il corresponde à la m_ofn structure. Windows appelle cette fonction automatiquement pendant CFileDialog ::D oModal.

Pour plus d’informations sur l’utilisation de la CFileDialog classe sous Windows Vista ou version ultérieure, consultez la classe CFileDialog.

Exemple

Consultez l’exemple de CFileDialog ::UpdateOFNFromShellDialog.

CFileDialog ::CFileDialog

Appelez cette fonction pour construire une boîte de dialogue de fichier Windows standard.

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

bOpenFileDialog
[in] Paramètre qui spécifie le type de boîte de dialogue à créer. Définissez-le sur TRUE pour construire une boîte de dialogue Ouvrir un fichier. Définissez-le sur FALSE pour construire une boîte de dialogue Enregistrer sous de fichier.

lpszDefExt
[in] Extension de nom de fichier par défaut. Si l’utilisateur n’inclut pas d’extension connue (une association sur l’ordinateur de l’utilisateur) dans la zone Nom de fichier, l’extension spécifiée par lpszDefExt est automatiquement ajoutée au nom de fichier. Si ce paramètre a la valeur NULL, aucune extension n’est ajoutée.

lpszFileName
[in] Nom de fichier initial qui apparaît dans la zone Nom de fichier. Si la valeur EST NULL, aucun nom de fichier initial n’apparaît.

dwFlags
[in] Combinaison d’un ou plusieurs indicateurs que vous pouvez utiliser pour personnaliser la boîte de dialogue. Pour obtenir une description de ces indicateurs, consultez la structure OPENFILENAME dans le Kit de développement logiciel (SDK) Windows. Si vous modifiez le membre de structure m_ofn.Flags , utilisez un opérateur OR au niveau du bit dans vos modifications pour conserver le comportement par défaut intact.

lpszFilter
[in] Série de paires de chaînes qui spécifient des filtres que vous pouvez appliquer au fichier. Si vous spécifiez des filtres de fichiers, seuls les fichiers qui correspondent aux critères de filtre apparaissent dans la liste Fichiers. Pour plus d’informations sur l’utilisation des filtres de fichiers, consultez la section Remarques.

pParentWnd
[in] Pointeur vers la fenêtre parent ou propriétaire de la boîte de dialogue fichier.

dwSize
[in] Taille de la OPENFILENAME structure. 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 boîte de dialogue à créer. La taille par défaut de 0 signifie que le code MFC détermine la taille de boîte de dialogue appropriée à utiliser en fonction de la version du système d’exploitation sur laquelle le programme est exécuté.

bVistaStyle
[in] Notez que ce paramètre est disponible dans Visual Studio 2008 et versions ultérieures et entraîne l’utilisation de la boîte de dialogue nouveau style uniquement si vous exécutez Windows Vista ou une version ultérieure.

Paramètre qui spécifie le style de la boîte de dialogue fichier. Définissez-le sur TRUE pour utiliser les nouvelles boîtes de dialogue de fichier de style Vista. Sinon, l’ancien style de boîtes de dialogue sera utilisé. Pour plus d’informations sur l’exécution sous Vista, consultez la section Remarques.

Notes

Une boîte de dialogue Ouvrir un fichier ou Enregistrer sous est construite en fonction de la valeur de bOpenFileDialog.

La spécification d’une extension par défaut à l’aide de lpszDefExt peut ne pas produire le comportement attendu, car il est rarement prévisible que les extensions ont des associations de fichiers sur l’ordinateur de l’utilisateur. Si vous avez besoin d’un contrôle supplémentaire sur l’ajout d’une extension par défaut, vous pouvez dériver votre propre classe et CFileDialogremplacer la CFileDialog::OnFileNameOK méthode pour effectuer votre propre gestion des extensions.

Pour permettre à l’utilisateur de sélectionner plusieurs fichiers, définissez l’indicateur OFN_ALLOWMULTISELECT avant d’appeler DoModal. Vous devez fournir votre propre mémoire tampon de nom de fichier pour stocker la liste renvoyée de plusieurs noms de fichiers. Pour ce faire, remplacez m_ofn.lpstrFile par un pointeur vers une mémoire tampon que vous avez allouée, après avoir construit le 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 par m_ofn.lpstrFile. Si vous définissez le nombre maximal de fichiers à sélectionner sur n, la taille de mémoire tampon nécessaire est 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 à l’aide de la souris ou du clavier, définissez l’indicateur OFN_ENABLESIZING. La définition de cet indicateur est nécessaire uniquement si vous fournissez une procédure de hook ou un modèle personnalisé. L’indicateur fonctionne uniquement avec une boîte de dialogue de style Explorateur ; Les boîtes de dialogue de style ancien ne peuvent pas être redimensionnées.

Le paramètre lpszFilter est utilisé pour déterminer le type de nom de fichier qu’un fichier doit être affiché dans la liste des fichiers. La première chaîne de la paire de chaînes 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 délimiteur. La chaîne se termine par deux caractères de barre verticale (||), suivis d’un caractère NULL. Vous pouvez également utiliser un objet CString pour ce paramètre.

Par exemple, Microsoft Excel permet aux utilisateurs d’ouvrir des fichiers qui ont des 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 envisagez d’utiliser cette chaîne pour mettre directement à jour la OPENFILENAME structure, vous devez délimiter vos chaînes avec le caractère Null, '\0'au lieu des barres verticales ('|').

Le paramètre bVistaStyle s’applique uniquement lors de l’exécution sous Windows Vista ou version ultérieure. Sous 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, la boîte de dialogue nouveau fichier de style Vista est utilisée. Sinon, la boîte de dialogue de fichier de style MFC précédente sera utilisée.

Les modèles de dialogue ne sont pas pris en charge sur les dialogues basés sur bVistaStyle

Exemple

Consultez l’exemple de CFileDialog ::D oModal.

CFileDialog ::D oModal

Appelez cette fonction pour afficher la boîte de dialogue Fichier commun Windows et autoriser l’utilisateur à parcourir les fichiers et répertoires et à entrer un nom de fichier.

virtual INT_PTR DoModal();

Valeur de retour

IDOK ou IDCANCEL. Si IDCANCEL est retourné, appelez la fonction Windows CommDlgExtendedError pour déterminer si une erreur s’est produite.

IDOK et IDCANCEL sont des constantes qui indiquent si l’utilisateur a sélectionné le bouton OK ou Annuler.

Notes

Si vous souhaitez initialiser les différentes options de boîte de dialogue de fichier en définissant les membres de la m_ofn structure, vous devez le faire avant d’appeler DoModal, mais une fois l’objet de dialogue construit.

Par exemple, si vous souhaitez autoriser l’utilisateur à sélectionner plusieurs fichiers, définissez l’indicateur OFN_ALLOWMULTISELECT avant d’appeler DoModal, comme illustré dans l’exemple de code de cette rubrique.

Lorsque l’utilisateur clique sur les boutons OK ou Annuler de la boîte de dialogue, ou sélectionne l’option Fermer dans le menu de contrôle de la boîte de dialogue, le contrôle est retourné à votre application. Vous pouvez ensuite appeler d’autres fonctions membres pour récupérer les paramètres ou les informations entrées par l’utilisateur dans la boîte de dialogue.

DoModal est une fonction virtuelle substituée à partir de la classe CDialog.

Exemple

void CMyClass::OnFileOpen()
{
   // szFilters is a text string that includes two file name filters:
   // "*.my" for "MyType Files" and "*.*' for "All Files."
   TCHAR szFilters[]= _T("MyType Files (*.my)|*.my|All Files (*.*)|*.*||");

   // Create an Open dialog; the default file name extension is ".my".
   CFileDialog fileDlg(TRUE, _T("my"), _T("*.my"),
      OFN_FILEMUSTEXIST | OFN_HIDEREADONLY, szFilters);
   
   // Display the file dialog. When user clicks OK, fileDlg.DoModal() 
   // returns IDOK.
   if(fileDlg.DoModal() == IDOK)
   {
      CString pathName = fileDlg.GetPathName();
   
      // Implement opening and reading file in here.

      //Change the window's title to the opened file's title.
      CString fileName = fileDlg.GetFileTitle();
   
      SetWindowText(fileName);
   }
}

CFileDialog ::EnableOpenDropDown

Active une liste déroulante sur le bouton Ouvrir ou Enregistrer dans la boîte de dialogue.

HRESULT EnableOpenDropDown(DWORD dwIDCtl);

Paramètres

dwIDCtl
ID de la liste déroulante.

Notes

CFileDialog ::EndVisualGroup

Arrête l’ajout d’éléments à un groupe visuel dans la boîte de dialogue.

HRESULT EndVisualGroup();

Valeur de retour

Retourne S_OK en cas de réussite ; valeur d’erreur sinon.

Notes

CFileDialog ::GetCheckButtonState

Récupère l’état actuel d’un bouton case activée (case activée box) dans la boîte de dialogue.

HRESULT GetCheckButtonState(
    DWORD dwIDCtl,
    BOOL& bChecked);

Paramètres

dwIDCtl
ID de la zone case activée.

bChecked
État de la zone case activée. TRUE indique case activée ed ; FALSE indique non case activée ed.

Notes

CFileDialog ::GetControlItemState

Récupère l’état actuel d’un élément dans un contrôle conteneur trouvé dans la boîte de dialogue.

HRESULT GetControlItemState(
    DWORD dwIDCtl,
    DWORD dwIDItem,
    CDCONTROLSTATEF& dwState);

Paramètres

dwIDCtl
ID du contrôle conteneur.

dwIDItem
ID de l’élément.

dwState
Référence à une variable qui reçoit l’une des valeurs de l’énumération CDCONTROLSTATE qui indique l’état actuel du contrôle.

Notes

CFileDialog ::GetControlState

Récupère la visibilité actuelle et les états activés d’un contrôle donné.

HRESULT GetControlState(
    DWORD dwIDCtl,
    CDCONTROLSTATEF& dwState);

Paramètres

dwIDCtl
ID du contrôle.

dwState
Référence à une variable qui reçoit une ou plusieurs valeurs de l’énumération CDCONTROLSTATE qui indique l’état actuel du contrôle.

Notes

CFileDialog ::GetEditBoxText

Récupère le texte actuel dans un contrôle de zone d’édition.

HRESULT GetEditBoxText(
    DWORD dwIDCtl,
    CString& strText);

Paramètres

dwIDCtl
ID de la zone d’édition.

strText
Valeur du texte.

Notes

CFileDialog ::GetFileExt

Appelez cette fonction pour récupérer l’extension du nom de fichier entré dans la boîte de dialogue.

CString GetFileExt() const;

Valeur de retour

Extension du nom de fichier.

Notes

Par exemple, si le nom du fichier entré est DATA.TXT, GetFileExt retourne « TXT ».

Si m_ofn.Flags l’indicateur OFN_ALLOWMULTISELECT est défini, cette chaîne contient une séquence de chaînes terminées par null, la première chaîne étant le chemin d’accès au répertoire du groupe de fichiers sélectionné, suivie des noms de tous les fichiers sélectionnés par l’utilisateur. Pour récupérer des noms de chemin d’accès de fichier, utilisez les fonctions membres GetStartPosition et GetNextPathName .

CFileDialog ::GetFileName

Appelez cette fonction pour récupérer le nom du nom du nom de fichier entré dans la boîte de dialogue.

CString GetFileName() const;

Valeur de retour

Le nom du fichier.

Notes

Le nom du fichier inclut à la fois le préfixe et l’extension. Par exemple, GetFileName retourne « TEXT. DAT » pour le fichier C :\FILES\TEXT.DAT.

Si m_ofn.Flags l’indicateur OFN_ALLOWMULTISELECT est défini, vous devez appeler GetStartPosition et GetNextPathName pour récupérer un chemin d’accès de fichier.

CFileDialog ::GetFileTitle

Appelez cette fonction pour récupérer le titre du fichier entré dans la boîte de dialogue.

CString GetFileTitle() const;

Valeur de retour

Titre du fichier.

Notes

Le titre du fichier inclut uniquement son préfixe, sans le chemin d’accès ou l’extension. Par exemple, GetFileTitle retourne « TEXT » pour le fichier C :\FILES\TEXT.DAT.

Si m_ofn.Flags l’indicateur OFN_ALLOWMULTISELECT est défini, cette chaîne contient une séquence de chaînes terminées par null, la première chaîne étant le chemin d’accès au répertoire du groupe de fichiers sélectionné, suivie des noms de tous les fichiers sélectionnés par l’utilisateur. Pour cette raison, utilisez les fonctions membres GetStartPosition et GetNextPathName pour récupérer le nom de fichier suivant dans la liste.

Exemple

Consultez l’exemple de CFileDialog ::D oModal.

CFileDialog ::GetFolderPath

Appelez cette fonction membre pour récupérer le chemin d’accès du dossier ou du répertoire actuellement ouvert pour une boîte de dialogue Ouvrir ou Enregistrer sous.

CString GetFolderPath() const;

Valeur de retour

Objet CString contenant le dossier ou le répertoire actuellement ouvert.

Notes

La boîte de dialogue doit avoir été créée avec le style OFN_EXPLORER ; sinon, la méthode échoue avec une assertion.

Vous ne pouvez appeler cette méthode que lorsque la boîte de dialogue est affichée. Une fois la boîte de dialogue fermée, cette fonction ne fonctionnera plus et la méthode échouera avec une assertion.

CFileDialog ::GetIFileDialogCustomize

Récupère un pointeur vers l’objet COM interne d’un CFileDialog donné.

IFileDialogCustomize* GetIFileDialogCustomize();

Valeur de retour

Pointeur vers l’objet COM interne pour le CFileDialog. Il vous incombe de libérer ce pointeur de manière appropriée.

Notes

Utilisez cette fonction uniquement sous Windows Vista ou version ultérieure avec un objet dont bVistaStyle a la valeur TRUE. Si vous utilisez cette fonction lorsque bVistaStyle a la valeur FALSE, elle retourne NULL en mode release et lève une assertion en mode débogage.

Pour plus d’informations sur l’interface IFileDialogCustomize , consultez IFileDialogCustomize.

Exemple

Cet exemple récupère l’objet COM interne. Pour exécuter cet exemple de code, vous devez le compiler sous Windows Vista ou version ultérieure.

// Get the interface pointer
IFileDialogCustomize *customDlgPtr = m_myFileDialogPtr->GetIFileDialogCustomize();

// Make sure that it is not null
if (customDlgPtr != NULL)
{
   //
   // Perform any interface functionality here
   //

   // Release the pointer
   customDlgPtr->Release();
}

CFileDialog ::GetIFileOpenDialog

Récupère un pointeur vers l’objet COM interne pour un objet COM donné CFileDialog.

IFileOpenDialog* GetIFileOpenDialog();

Valeur de retour

Pointeur vers l’objet COM interne pour le CFileDialog. Il vous incombe de libérer ce pointeur de manière appropriée.

Notes

Utilisez cette fonction uniquement sous Windows Vista ou version ultérieure avec un objet dont bVistaStyle a la valeur TRUE. Cette fonction retourne NULL si la CFileDialog boîte de dialogue Ouvrir n’est pas ou si bVistaStyle a la valeur FALSE. Dans ce dernier cas, la fonction retourne uniquement NULL en mode mise en production : en mode débogage, elle lève une assertion.

Pour plus d’informations sur l’interface IFileOpenDialog , consultez IFileOpenDialog.

Exemple

Cet exemple récupère l’objet COM interne. Pour exécuter ce code, vous devez le compiler sous Windows Vista ou version ultérieure.

// Get the interface pointer
IFileOpenDialog * openDlgPtr = m_myFileDialogPtr->GetIFileOpenDialog();

// Make sure that it is not null
if ( openDlgPtr != NULL )
{
    //
    // Perform any interface functionality here
    //

    // Release the pointer
    openDlgPtr->Release();
}

CFileDialog ::GetIFileSaveDialog

Récupère un pointeur vers l’objet COM interne pour un objet COM donné CFileDialog.

IFileSaveDialog* GetIFileSaveDialog();

Valeur de retour

Pointeur vers l’objet COM interne pour le CFileDialog. Il vous incombe de libérer ce pointeur de manière appropriée.

Notes

Utilisez cette fonction uniquement sous Windows Vista ou version ultérieure avec un objet dont bVistaStyle a la valeur TRUE. Cette fonction retourne NULL si la CFileDialog boîte de dialogue Enregistrer n’est pas ou si bVistaStyle a la valeur FALSE. Dans ce dernier cas, la fonction retourne uniquement NULL en mode mise en production : en mode débogage, elle lève une assertion.

Pour plus d’informations sur l’interface IFileSaveDialog , consultez IFileSaveDialog.

Exemple

Cet exemple récupère l’objet COM interne. Pour exécuter cet exemple de code, vous devez le compiler sous Windows Vista ou version ultérieure.

// Get the interface pointer
IFileSaveDialog *saveDlgPtr = m_myFileDialogPtr->GetIFileSaveDialog();

// Make sure that it is not null
if (saveDlgPtr != NULL)
{
   //
   // Perform any interface functionality here
   //

   // Release the pointer
   saveDlgPtr->Release();
}

CFileDialog ::GetNextPathName

Appelez cette fonction pour récupérer le nom de fichier suivant du groupe sélectionné dans la boîte de dialogue.

CString GetNextPathName(POSITION& pos) const;

Paramètres

pos
Référence à une valeur POSITION retournée par un appel précédent GetNextPathName ou GetStartPosition fonction. NULL si la fin de la liste a été atteinte.

Valeur de retour

Chemin d’accès complet du fichier.

Notes

Le chemin d’accès du nom de fichier inclut le titre du fichier ainsi que l’intégralité du chemin d’accès au répertoire. Par exemple, GetNextPathName retourne « C :\FILES\TEXT. DAT » pour le fichier C :\FILES\TEXT.DAT. Vous pouvez utiliser GetNextPathName dans une boucle d’itération avant si vous établissez la position initiale avec un appel à GetStartPosition.

Si la sélection se compose d’un seul fichier, ce nom de fichier est retourné.

CFileDialog ::GetOFN

Récupère la structure associée OPENFILENAME .

const OPENFILENAME& GetOFN() const;

OPENFILENAME& GetOFN();

Valeur de retour

Structure OPENFILENAME .

Notes

Utilisez la deuxième version de cette fonction pour initialiser l’apparence d’une boîte de dialogue Ouvrir un fichier ou Enregistrer sous après sa construction, mais avant qu’elle ne s’affiche avec la DoModal fonction membre. Par exemple, vous pouvez définir le lpstrTitle membre du m_ofn légende que la boîte de dialogue doit avoir.

CFileDialog ::GetPathName

Appelez cette fonction pour récupérer le chemin complet du fichier entré dans la boîte de dialogue.

CString GetPathName() const;

Valeur de retour

Chemin d’accès complet du fichier.

Notes

Le chemin d’accès du nom de fichier inclut le titre du fichier ainsi que l’intégralité du chemin d’accès au répertoire. Par exemple, GetPathName retourne « C :\FILES\TEXT. DAT » pour le fichier C :\FILES\TEXT.DAT.

Si m_ofn.Flags l’indicateur OFN_ALLOWMULTISELECT est défini, cette chaîne contient une séquence de chaînes null-téminées, la première chaîne étant le chemin d’accès au répertoire du groupe de fichiers sélectionné, suivie des noms de tous les fichiers sélectionnés par l’utilisateur. Pour cette raison, utilisez les fonctions membres GetStartPosition et GetNextPathName pour récupérer le nom de fichier suivant dans la liste.

Exemple

Consultez l’exemple de CFileDialog ::D oModal.

CFileDialog ::GetReadOnlyPref

Appelez cette fonction pour déterminer si la boîte de dialogue Lecture seule case activée a été sélectionnée dans les boîtes de dialogue Ouvrir et Enregistrer sous du fichier Windows standard.

BOOL GetReadOnlyPref() const;

Valeur de retour

Non zéro si la zone Lecture seule case activée dans la boîte de dialogue est sélectionnée ; sinon, 0.

Notes

Vous pouvez masquer la zone de case activée en lecture seule en définissant le style OFN_HIDEREADONLY dans le CFileDialog constructeur.

Remarque

Les objets de style CFileDialog Windows Vista ou ultérieur ne prennent pas en charge cette fonction. Toute tentative d’utilisation de cette fonction sur un style CFileDialog Windows Vista ou ultérieur lève CNotSupportedException.

CFileDialog ::GetResult

Récupère le choix que l’utilisateur a effectué dans la boîte de dialogue.

IShellItem* GetResult() throw();

Valeur de retour

Pointeur vers un IShellItem qui représente le choix de l’utilisateur.

Notes

CFileDialog ::GetResults

Récupère les choix de l’utilisateur dans une boîte de dialogue qui autorise plusieurs sélections.

IShellItemArray* GetResults() throw();

Valeur de retour

Pointeur vers un IShellItemArray via lequel les éléments sélectionnés dans la boîte de dialogue sont accessibles.

Notes

CFileDialog ::GetSelectedControlItem

Récupère un élément particulier à partir du contrôle conteneur spécifié dans la boîte de dialogue.

HRESULT GetSelectedControlItem(
    DWORD dwIDCtl,
    DWORD& dwIDItem);

Paramètres

dwIDCtl
ID du contrôle conteneur.

dwIDItem
ID de l’élément sélectionné par l’utilisateur dans le contrôle.

Notes

CFileDialog ::GetStartPosition

Appelez cette fonction membre pour récupérer la position du premier nom de chemin de fichier dans la liste, si m_ofn.Flags l’indicateur OFN_ALLOWMULTISELECT est défini.

POSITION GetStartPosition() const;

Valeur de retour

Valeur POSITION qui peut être utilisée pour l’itération ; NULL si la liste est vide.

CFileDialog ::HideControl

Appelez cette fonction membre pour masquer le contrôle spécifié dans une boîte de dialogue Ouvrir ou Enregistrer sous sous.

void HideControl(int nID);

Paramètres

nID
ID du contrôle à masquer.

Notes

La boîte de dialogue doit avoir été créée avec le style OFN_EXPLORER ; sinon, la fonction échoue avec une assertion.

CFileDialog ::IsPickFoldersMode

Détermine si la boîte de dialogue actuelle est en mode sélecteur de dossiers.

BOOL IsPickFoldersMode() const;

Valeur de retour

TRUE si la boîte de dialogue est en mode sélecteur de dossiers ; sinon FALSE.

Notes

CFileDialog ::m_ofn

m_ofn est une structure de type OPENFILENAME. Les données de cette structure représentent l’état actuel du CFileDialog.

Notes

Utilisez cette structure pour initialiser l’apparence d’une boîte de dialogue Ouvrir un fichier ou Enregistrer sous après la construction, mais avant de l’afficher avec la méthode DoModal . Par exemple, vous pouvez définir le membre lpstrTitle sur m_ofn le légende que vous souhaitez que la boîte de dialogue possède.

Avec le style Windows Vista ou ultérieur de CFileDialog, m_ofn il n’est pas garanti de toujours correspondre à l’état de la boîte de dialogue. Elle est synchronisée avec la boîte de dialogue dans les versions antérieures de Windows. Consultez CFileDialog ::ApplyOFNToShellDialog et CFileDialog ::UpdateOFNFromShellDialog pour plus d’informations sur la synchronisation de la structure et de l’état m_ofnCFileDialog sous Windows Vista ou version ultérieure.

Les boîtes de dialogue de fichier de style Windows Vista ou ultérieure ne prennent pas en charge certains membres et indicateurs du CFileDialogfichier . Par conséquent, ceux-ci n’auront aucun effet.

Voici une liste des membres qui ne sont pas pris en charge par Windows Vista ou version ultérieure :

  • lpstrCustomFilter

  • lpstrInitialDir

  • lCustData

  • lpfnHook

  • lpTemplateName

Les indicateurs suivants ne sont pas pris en charge et n’ont donc aucun effet lorsque vous utilisez le style Windows Vista ou ultérieur de CFileDialog:

  • OFN_ENABLEHOOK

  • OFN_ENABLEINCLUDENOTIFY

  • OFN_ENABLETEMPLATE

  • OFN_ENABLETEMPLATEHANDLE

  • OFN_EXPLORER

  • OFN_EXTENSIONDIFFERENT

  • OFN_HIDEREADONLY

  • OFN_LONGNAMES - toujours activé dans Windows Vista ou version ultérieure

  • OFN_NOLONGNAMES - toujours désactivé dans Windows Vista ou version ultérieure

  • OFN_NONETWORKo UTTON : toujours activé dans Windows Vista ou version ultérieure

  • OFN_READONLY

  • OFN_SHOWHELP

Pour plus d’informations sur cette structure, consultez la structure OPENFILENAME dans le Kit de développement logiciel (SDK) Windows.

CFileDialog ::MakeProminent

Place un contrôle dans la boîte de dialogue afin qu’il se distingue par rapport à d’autres contrôles.

HRESULT MakeProminent(DWORD dwIDCtl);

Paramètres

dwIDCtl
ID du contrôle.

Notes

CFileDialog ::OnButtonClicked

Appelé lorsque le bouton est cliqué.

virtual void OnButtonClicked(DWORD dwIDCtl);

Paramètres

dwIDCtl
ID du bouton.

Notes

CFileDialog ::OnCheckButtonToggled

Appelé lorsque la boîte de case activée est case activée ou non case activée ed.

virtual void OnCheckButtonToggled(
    DWORD dwIDCtl,
    BOOL bChecked);

Paramètres

dwIDCtl
ID de la zone case activée.

bChecked
Activé ou non case activée ed.

Notes

CFileDialog ::OnControlActivating

Appelé lorsque le contrôle est activé.

virtual void OnControlActivating(DWORD dwIDCtl);

Paramètres

dwIDCtl
ID du contrôle.

Notes

CFileDialog ::OnFileNameChange

Remplacez cette méthode si vous souhaitez gérer le message WM_NOTIFY CDN_SELCHANGE.

virtual void OnFileNameChange();

Notes

Le système envoie le message CDN_SELCHANGE lorsque l’utilisateur sélectionne un nouveau fichier ou dossier dans la liste des fichiers de la boîte de dialogue Ouvrir ou Enregistrer sous . Remplacez cette méthode si vous souhaitez effectuer des actions en réponse à ce message.

Le système envoie ce message uniquement si la boîte de dialogue a été créée avec l’indicateur OFN_EXPLORER activé. Pour plus d’informations sur la notification, consultez CDN_SELCHANGE. Pour plus d’informations sur l’indicateur OFN_EXPLORER, consultez la structure OPENFILENAME et les boîtes de dialogue Ouvrir et Enregistrer sous.

CFileDialog ::OnFileNameOK

Remplacez cette fonction uniquement si vous souhaitez fournir une validation personnalisée des noms de fichiers entrés dans une boîte de dialogue de fichier commune.

virtual BOOL OnFileNameOK();

Valeur de retour

1 si le nom de fichier n’est pas un nom de fichier valide ; sinon 0.

Notes

Cette fonction vous permet de rejeter un nom de fichier pour une raison spécifique à l’application. Normalement, vous n’avez pas besoin d’utiliser cette fonction, car l’infrastructure fournit la validation par défaut des noms de fichiers et affiche une boîte de message si un nom de fichier non valide est entré.

Si 1 est retourné, la boîte de dialogue reste affichée pour que l’utilisateur entre un autre nom de fichier. La procédure de dialogue ignore la boîte de dialogue si le retour est 0. Les autres valeurs de retour non nulles sont actuellement réservées et ne doivent pas être utilisées.

CFileDialog ::OnFolderChange

Remplacez cette fonction pour gérer le message WM_NOTIFYCDN_FOLDERCHANGE.

virtual void OnFolderChange();

Notes

Le message de notification est envoyé lorsqu’un nouveau dossier est ouvert dans la boîte de dialogue Ouvrir ou Enregistrer sous.

La notification n’est envoyée que si la boîte de dialogue a été créée avec le style OFN_EXPLORER. Pour plus d’informations sur la notification, consultez CDN_FOLDERCHANGE. Pour plus d’informations sur le style OFN_EXPLORER, consultez la structure OPENFILENAME et les boîtes de dialogue Ouvrir et Enregistrer sous.

CFileDialog ::OnInitDone

Remplacez cette fonction pour gérer le message WM_NOTIFY CDN_INITDONE.

virtual void OnInitDone();

Notes

Le système envoie ce message de notification lorsque le système a terminé l’organisation des contrôles dans la boîte de dialogue Ouvrir ou Enregistrer sous pour créer de la place pour les contrôles de la boîte de dialogue enfant.

Le système envoie cela uniquement si la boîte de dialogue a été créée avec le style OFN_EXPLORER. Pour plus d’informations sur la notification, consultez CDN_INITDONE. Pour plus d’informations sur le style OFN_EXPLORER, consultez la structure OPENFILENAME et les boîtes de dialogue Ouvrir et Enregistrer sous.

Remarque

Les boîtes de dialogue de fichier de style Windows Vista ou ultérieure ne prennent pas en charge cette fonction. Toute tentative d’utilisation de cette fonction sur une boîte de dialogue de fichier de style Windows Vista ou ultérieure lève CNotSupportedException.

CFileDialog ::OnItemSelected

Appelé lorsque l’élément de conteneur est sélectionné.

virtual void OnItemSelected(
    DWORD dwIDCtl,
    DWORD dwIDItem);

Paramètres

dwIDCtl
ID du contrôle conteneur.

dwIDItem
ID de l’élément.

Notes

CFileDialog ::OnLBSelChangedNotify

Cette fonction est appelée chaque fois que la sélection actuelle dans une zone de liste est sur le point de changer.

virtual void OnLBSelChangedNotify(
    UINT nIDBox,
    UINT iCurSel,
    UINT nCode);

Paramètres

nIDBox
ID de la zone de liste ou de la zone de liste modifiable dans laquelle la sélection s’est produite.

iCurSel
Index de la sélection actuelle.

nCode
Code de notification de contrôle. Ce paramètre doit avoir l’une des valeurs suivantes :

  • CD_LBSELCHANGE Spécifie iCurSel est l’élément sélectionné dans une zone de liste à sélection unique.

  • CD_LBSELSUB Spécifie que iCurSel n’est plus sélectionné dans une zone de liste de sélection multiple.

  • CD_LBSELADD Spécifie que iCurSel est sélectionné dans une zone de liste à sélection multiple.

  • CD_LBSELNOITEMS Spécifie qu’aucune sélection n’existe dans une zone de liste à sélection multiple.

Notes

Remplacez cette fonction pour fournir une gestion personnalisée des modifications de sélection dans la zone de liste. Par exemple, vous pouvez utiliser cette fonction pour afficher les droits d’accès ou la date de dernière modification de chaque fichier que l’utilisateur sélectionne.

CFileDialog ::OnShareViolation

Remplacez cette fonction pour fournir une gestion personnalisée des violations de partage.

virtual UINT OnShareViolation(LPCTSTR lpszPathName);

Paramètres

lpszPathName
Chemin d’accès du fichier sur lequel la violation de partage s’est produite.

Valeur de retour

L’une des valeurs suivantes :

  • OFN_SHAREFALLTHROUGH Le nom de fichier est retourné à partir de la boîte de dialogue.

  • OFN_SHARENOWARN Aucune action supplémentaire n’est nécessaire.

  • OFN_SHAREWARN L’utilisateur reçoit le message d’avertissement standard pour cette erreur.

Notes

Normalement, vous n’avez pas besoin d’utiliser cette fonction, car l’infrastructure fournit des case activée par défaut des violations de partage et affiche une boîte de message si une violation de partage se produit.

Si vous souhaitez désactiver la violation de partage case activée ing, utilisez l’opérateur OR au niveau du bit pour combiner l’indicateur OFN_SHAREAWARE avec m_ofn.Flags.

CFileDialog ::OnTypeChange

Remplacez cette fonction pour gérer le message WM_NOTIFYCDN_TYPECHANGE.

virtual void OnTypeChange();

Notes

Le message de notification est envoyé lorsque l’utilisateur sélectionne un nouveau type de fichier dans la liste des types de fichiers dans la boîte de dialogue Ouvrir ou Enregistrer sous.

La notification n’est envoyée que si la boîte de dialogue a été créée avec le style OFN_EXPLORER. Pour plus d’informations sur la notification, consultez CDN_TYPECHANGE. Pour plus d’informations sur le style OFN_EXPLORER, consultez la structure OPENFILENAME et les boîtes de dialogue Ouvrir et Enregistrer sous.

CFileDialog ::RemoveControlItem

Supprime un élément d’un contrôle conteneur dans la boîte de dialogue.

HRESULT RemoveControlItem(
    DWORD dwIDCtl,
    DWORD dwIDItem);

Paramètres

dwIDCtl
ID du contrôle conteneur à partir duquel supprimer l’élément.

dwIDItem
ID de l’élément.

Notes

CFileDialog ::SetCheckButtonState

Définit l’état actuel d’un bouton case activée (boîte de case activée) dans la boîte de dialogue.

HRESULT SetCheckButtonState(
    DWORD dwIDCtl,
    BOOL bChecked);

Paramètres

dwIDCtl
ID de la zone case activée.

bChecked
État de la zone case activée. TRUE indique case activée ed ; FALSE indique Non case activée ed.

Notes

CFileDialog ::SetControlItemState

Définit l’état actuel d’un élément dans un contrôle conteneur trouvé dans la boîte de dialogue.

HRESULT SetControlItemState(
    DWORD dwIDCtl,
    DWORD dwIDItem,
    CDCONTROLSTATEF dwState);

Paramètres

dwIDCtl
ID du contrôle conteneur.

dwIDItem
ID de l’élément.

dwState
Une ou plusieurs valeurs de l’énumération CDCONTROLSTATE qui indiquent le nouvel état du contrôle.

Notes

CFileDialog ::SetControlItemText

Définit le texte d’un élément de contrôle. Par exemple, le texte qui accompagne une case d’option ou un élément dans un menu.

HRESULT SetControlItemText(
    DWORD dwIDCtl,
    DWORD dwIDItem,
    const CString& strLabel);

Paramètres

dwIDCtl
ID du contrôle conteneur.

dwIDItem
ID de l’élément.

strLabel
Texte de l’élément.

Notes

CFileDialog ::SetControlLabel

Définit le texte associé à un contrôle, tel que le texte du bouton ou une étiquette de zone d’édition.

HRESULT SetControlLabel(
    DWORD dwIDCtl,
    const CString& strLabel);

Paramètres

dwIDCtl
ID du contrôle.

strLabel
Nom du contrôle.

Notes

CFileDialog ::SetControlState

Définit la visibilité actuelle et les états activés d’un contrôle donné.

HRESULT SetControlState(
    DWORD dwIDCtl,
    CDCONTROLSTATEF dwState);

Paramètres

dwIDCtl
ID du contrôle.

dwState
Une ou plusieurs valeurs de l’énumération CDCONTROLSTATE qui indiquent l’état actuel du contrôle.

Notes

CFileDialog ::SetControlText

Appelez cette méthode pour définir le texte du contrôle spécifié dans une boîte de dialogue Ouvrir ou Enregistrer sous de style Explorateur.

void SetControlText(
    int nID,
    LPCSTR lpsz);

void SetControlText(
    int nID,
    const wchar_t *lpsz);

Paramètres

nID
[in] ID du contrôle pour lequel définir le texte.

lpsz
[in] Pointeur vers la chaîne qui contient le texte à définir pour le contrôle.

Notes

Les deux versions de cette fonction sont valides pour les applications qui utilisent Unicode. Toutefois, seule la version avec le type LPCSTR est valide pour les applications qui utilisent ANSI.

Pour utiliser cette méthode, vous devez créer la boîte de dialogue avec le style OFN_EXPLORER. Sinon, la fonction échoue avec une assertion.

CFileDialog ::SetDefExt

Appelez cette fonction pour définir l’extension de nom de fichier par défaut d’une boîte de dialogue Ouvrir ou Enregistrer sous.

void SetDefExt(LPCSTR lpsz);

Paramètres

lpsz
Pointeur vers une chaîne contenant l’extension par défaut à utiliser pour l’objet de boîte de dialogue. Cette chaîne ne doit pas contenir de point (.).

Notes

La boîte de dialogue doit avoir été créée avec le style OFN_EXPLORER ; sinon, la fonction échoue avec une assertion.

CFileDialog ::SetEditBoxText

Définit le texte actuel dans un contrôle de zone d’édition.

HRESULT SetEditBoxText(
    DWORD dwIDCtl,
    const CString& strText);

Paramètres

dwIDCtl
ID de la zone d’édition.

strText
Valeur du texte.

Notes

CFileDialog ::SetProperties

Fournit une banque de propriétés qui définit les valeurs par défaut à utiliser pour l'élément en cours d'enregistrement.

BOOL SetProperties(LPCWSTR lpszPropList);

Paramètres

lpszPropList
Liste de propriétés prédéfinies séparées par un « ; ». Pour obtenir la liste des indicateurs, consultez la section Indicateurs d’OPENFILENAME.

Notes

CFileDialog ::SetSelectedControlItem

Définit l’état sélectionné d’un élément particulier dans un groupe de boutons d’option ou une zone de liste modifiable trouvée dans la boîte de dialogue.

HRESULT SetSelectedControlItem(
    DWORD dwIDCtl,
    DWORD dwIDItem);

Paramètres

dwIDCtl
ID du contrôle conteneur.

dwIDItem
ID de l’élément sélectionné par l’utilisateur dans le contrôle.

Notes

CFileDialog ::SetTemplate

Définit le modèle de boîte de dialogue de l’objet CFileDialog .

void SetTemplate(
    UINT nWin3ID,
    UINT nWin4ID);

void SetTemplate(
    LPCTSTR lpWin3ID,
    LPCTSTR lpWin4ID);

Paramètres

nWin3ID
[in] Contient le numéro d’ID de la ressource de modèle pour l’objet non-Explorateur CFileDialog . Ce modèle est utilisé uniquement sur Windows NT 3.51 ou lorsque le style OFN_EXPLORER n’est pas présent.

nWin4ID
[in] Contient le numéro d’ID de la ressource de modèle pour l’objet Explorateur CFileDialog . Ce modèle est utilisé uniquement sur Windows NT 4.0 et versions ultérieures, Windows 95 et versions ultérieures, ou lorsque le style OFN_EXPLORER est présent.

lpWin3ID
[in] Contient le nom de la ressource de modèle pour l’objet non-Explorateur CFileDialog . Ce modèle est utilisé uniquement sur Windows NT 3.51 ou lorsque le style OFN_EXPLORER n’est pas présent.

lpWin4ID
[in] Contient le nom de la ressource de modèle de l’objet Explorateur CFileDialog . Ce modèle est utilisé uniquement sur Windows NT 4.0 et versions ultérieures, Windows 95 et versions ultérieures, ou lorsque le style OFN_EXPLORER est présent.

Notes

Le système n’utilisera qu’un des modèles spécifiés. Le système détermine le modèle à utiliser en fonction de la présence du style OFN_EXPLORER et du système d’exploitation sur lequel l’application s’exécute. En spécifiant à la fois un modèle non-Explorateur et de style Explorateur, il est facile de prendre en charge Windows NT 3.51, Windows NT 4.0 et versions ultérieures, et Windows 95 et versions ultérieures.

Remarque

Les boîtes de dialogue de fichier de style Windows Vista ou ultérieure ne prennent pas en charge cette fonction. Si vous tentez d’utiliser cette fonction dans une boîte de dialogue de fichier de style Windows Vista ou ultérieure, CNotSupportedException est levée. Une alternative consiste à utiliser une boîte de dialogue personnalisée. Pour plus d’informations sur l’utilisation d’un objet personnalisé CFileDialog, consultez IFileDialogCustomize.

CFileDialog ::StartVisualGroup

Déclare un groupe visuel dans la boîte de dialogue. Les appels suivants à n’importe quelle méthode « add » ajoutent ces éléments à ce groupe.

HRESULT StartVisualGroup(
    DWORD dwIDCtl,
    const CString& strLabel);

Paramètres

dwIDCtl
ID du groupe visuel.

strLabel
Nom du groupe.

Notes

CFileDialog ::UpdateOFNFromShellDialog

Mises à jour la m_ofn structure de données du CFileDialog en fonction de l’état actuel de l’objet interne.

void UpdateOFNFromShellDialog();

Notes

Dans les versions de Windows antérieures à Windows Vista, la structure de données OPENFILENAME membre a été synchronisée en continu avec l’état du CFileDialogfichier . Toutes les modifications apportées à la variable membre m_ofn ont directement affecté l’état de la boîte de dialogue. En outre, les modifications apportées à l’état de la boîte de dialogue ont immédiatement mis à jour la variable membre m_ofn.

Dans Windows Vista ou version ultérieure, la m_ofn structure de données n’est pas automatiquement mise à jour. Pour garantir la précision des données dans la m_ofn variable membre, vous devez appeler la UpdateOFNFromShellDialog fonction avant d’accéder aux données. Windows appelle cette fonction automatiquement pendant le traitement de IFileDialog ::OnFileOK.

Pour plus d’informations sur l’utilisation de la CFileDialog classe sous Windows Vista ou version ultérieure, consultez la classe CFileDialog.

Exemple

Cet exemple met à jour le CFileDialog fichier avant de l’afficher. Avant de mettre à jour la m_ofn variable membre, nous devons la synchroniser avec l’état actuel de la boîte de dialogue.

// Update the m_ofn variable
m_myFileDialogPtr->UpdateOFNFromShellDialog();

// Change the title
m_myFileDialogPtr->m_ofn.lpstrTitle = L"New Dialog Title";

// Apply the changes
m_myFileDialogPtr->ApplyOFNToShellDialog();

// Show the window
LRESULT result = m_myFileDialogPtr->DoModal();

Voir aussi

CCommonDialog, classe
Graphique hiérarchique