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 de vérification à 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 | Met à jour l’état du CFileDialog fichier pour qu’il corresponde aux paramètres et 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 de coche (case à cocher) 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 de coche (case à cocher) 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 | Met à jour les données stockées dans la m_ofn variable membre pour qu’elles correspondent à 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ée lorsque la case à cocher est cochée/décochée. |
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 CFileDialog
messages 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 CFileDialog
dialogue 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 CFileDialog
modè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
CFileDialog
Spécifications
En-tête : afxdlgs.h
CFileDialog ::AddCheckButton
Ajoute un bouton de vérification à la boîte de dialogue.
HRESULT AddCheckButton(
DWORD dwIDCtl,
const CString& strLabel,
BOOL bChecked);
Paramètres
dwIDCtl
ID du bouton de vérification à ajouter.
strLabel
Nom du bouton vérifier.
bChecked
Valeur booléenne indiquant l’état actuel du bouton de vérification. TRUE si elle est cochée ; 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
Met à jour l’état actuel du CFileDialog en fonction des valeurs stockées dans la m_ofn
structure de 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 CFileDialog
fichier . 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_ofn
CFileDialog
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 CFileDialog
remplacer 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 de coche (case à cocher) dans la boîte de dialogue.
HRESULT GetCheckButtonState(
DWORD dwIDCtl,
BOOL& bChecked);
Paramètres
dwIDCtl
ID de la case à cocher.
bChecked
État de la case à cocher. TRUE indique coché ; FALSE indique non coché.
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 de m_ofn
la légende dont vous souhaitez que la boîte de dialogue dispose.
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 case à cocher Lecture seule a été cochée dans les boîtes de dialogue Ouvrir et Enregistrer sous des fichiers Windows standard.
BOOL GetReadOnlyPref() const;
Valeur de retour
Non zéro si la case à cocher Lecture seule dans la boîte de dialogue est cochée ; sinon 0.
Notes
Vous pouvez masquer la case à cocher 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 de m_ofn
la légende dont vous souhaitez que la boîte de dialogue dispose.
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_ofn
CFileDialog
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 CFileDialog
fichier . 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_NONETWORKBUTTON - 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ée lorsque la case à cocher est cochée ou décochée.
virtual void OnCheckButtonToggled(
DWORD dwIDCtl,
BOOL bChecked);
Paramètres
dwIDCtl
ID de la case à cocher.
bChecked
Activé ou désactivé.
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
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 la vérification 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 vérification des violations de partage, 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 de coche (case à cocher) dans la boîte de dialogue.
HRESULT SetCheckButtonState(
DWORD dwIDCtl,
BOOL bChecked);
Paramètres
dwIDCtl
ID de la case à cocher.
bChecked
État de la case à cocher. TRUE indique coché ; FALSE indique Non activé.
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
Met à 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 CFileDialog
fichier . 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();