OPENFILENAMEW, structure (commdlg.h)
[À compter de Windows Vista, les boîtes de dialogue Ouvrir et Enregistrer sous boîtes de dialogue courantes ont été remplacées par la boîte de dialogue Élément commun. Nous vous recommandons d’utiliser l’API de boîte de dialogue Élément commun au lieu de ces boîtes de dialogue à partir de la bibliothèque de boîtes de dialogue commune.]
Contient des informations que les fonctions GetOpenFileName et GetSaveFileName utilisent pour initialiser un Ouvrir ou boîte de dialogue Enregistrer sous. Une fois que l’utilisateur ferme la boîte de dialogue, le système retourne des informations sur la sélection de l’utilisateur dans cette structure.
Syntaxe
typedef struct tagOFNW {
DWORD lStructSize;
HWND hwndOwner;
HINSTANCE hInstance;
LPCWSTR lpstrFilter;
LPWSTR lpstrCustomFilter;
DWORD nMaxCustFilter;
DWORD nFilterIndex;
LPWSTR lpstrFile;
DWORD nMaxFile;
LPWSTR lpstrFileTitle;
DWORD nMaxFileTitle;
LPCWSTR lpstrInitialDir;
LPCWSTR lpstrTitle;
DWORD Flags;
WORD nFileOffset;
WORD nFileExtension;
LPCWSTR lpstrDefExt;
LPARAM lCustData;
LPOFNHOOKPROC lpfnHook;
LPCWSTR lpTemplateName;
LPEDITMENU lpEditInfo;
LPCSTR lpstrPrompt;
void *pvReserved;
DWORD dwReserved;
DWORD FlagsEx;
} OPENFILENAMEW, *LPOPENFILENAMEW;
Membres
lStructSize
Type : DWORD
Longueur, en octets, de la structure.
Utilisez sizeof (OPENFILENAME)
pour ce paramètre.
hwndOwner
Type : HWND
Handle de la fenêtre propriétaire de la boîte de dialogue. Ce membre peut être n’importe quel handle de fenêtre valide, ou il peut être null si la boîte de dialogue n’a aucun propriétaire.
hInstance
Type : HINSTANCE
Si l’indicateur de
lpstrFilter
Type : LPCTSTR
Mémoire tampon contenant des paires de chaînes de filtre terminées par null. La dernière chaîne de la mémoire tampon doit être arrêtée par deux caractères NULL.
La première chaîne de chaque paire est une chaîne d’affichage qui décrit le filtre (par exemple, « Fichiers texte »), et la deuxième chaîne spécifie le modèle de filtre (par exemple, «.TXT »). Pour spécifier plusieurs modèles de filtre pour une chaîne d’affichage unique, utilisez un point-virgule pour séparer les modèles (par exemple, «.TXT ;.DOC ;. BAK"). Une chaîne de modèle peut être une combinaison de caractères de nom de fichier valides et du caractère générique astérisque (*). N’incluez pas d’espaces dans la chaîne de modèle.
Le système ne modifie pas l’ordre des filtres. Il les affiche dans la zone de liste déroulante types de fichiers dans l’ordre spécifié dans lpstrFilter.
Si lpstrFilter est NULL, la boîte de dialogue n’affiche aucun filtre.
Dans le cas d’un raccourci, si aucun filtre n’est défini, GetOpenFileName et GetSaveFileName récupérer le nom du fichier .lnk, et non sa cible. Ce comportement est identique à la définition de l’indicateur de OFN_NODEREFERENCELINKS dans le membre Indicateurs. Pour récupérer la cible d’un raccourci sans filtrage, utilisez la chaîne "All Files\0*.*\0\0"
.
lpstrCustomFilter
Type : LPTSTR
Mémoire tampon statique qui contient une paire de chaînes de filtre terminées par null pour préserver le modèle de filtre choisi par l’utilisateur. La première chaîne est votre chaîne d’affichage qui décrit le filtre personnalisé, et la deuxième chaîne est le modèle de filtre sélectionné par l’utilisateur. La première fois que votre application crée la boîte de dialogue, vous spécifiez la première chaîne, qui peut être n’importe quelle chaîne vide. Lorsque l’utilisateur sélectionne un fichier, la boîte de dialogue copie le modèle de filtre actuel dans la deuxième chaîne. Le modèle de filtre conservé peut être l’un des modèles spécifiés dans la mémoire tampon lpstrFilter, ou il peut s’agir d’un modèle de filtre typé par l’utilisateur. Le système utilise les chaînes pour initialiser le filtre de fichier défini par l’utilisateur la prochaine fois que la boîte de dialogue est créée. Si le membre nFilterIndex est égal à zéro, la boîte de dialogue utilise le filtre personnalisé.
Si ce membre est NULL, la boîte de dialogue ne conserve pas les modèles de filtre définis par l’utilisateur.
Si ce membre n’est pas NULL, la valeur du membre nMaxCustFilter doit spécifier la taille, en caractères, de la mémoire tampon lpstrCustomFilter.
nMaxCustFilter
Type : DWORD
Taille, en caractères, de la mémoire tampon identifiée par lpstrCustomFilter. Cette mémoire tampon doit comporter au moins 40 caractères. Ce membre est ignoré si
nFilterIndex
Type : DWORD
Index du filtre actuellement sélectionné dans le contrôle Types de fichiers. La mémoire tampon pointée par lpstrFilter contient des paires de chaînes qui définissent les filtres. La première paire de chaînes a une valeur d’index de 1, la deuxième paire 2, et ainsi de suite. Un index de zéro indique le filtre personnalisé spécifié par lpstrCustomFilter. Vous pouvez spécifier un index sur l’entrée pour indiquer la description initiale du filtre et le modèle de filtre pour la boîte de dialogue. Lorsque l’utilisateur sélectionne un fichier, nFilterIndex retourne l’index du filtre actuellement affiché. Si
lpstrFile
Type : LPTSTR
Nom de fichier utilisé pour initialiser le nom de fichier contrôle d’édition. Le premier caractère de cette mémoire tampon doit être NULL si l’initialisation n’est pas nécessaire. Lorsque la fonction GetOpenFileName ou GetSaveFileName retourne correctement, cette mémoire tampon contient l’indicateur de lecteur, le chemin, le nom de fichier et l’extension du fichier sélectionné.
Si l’indicateur OFN_ALLOWMULTISELECT est défini et que l’utilisateur sélectionne plusieurs fichiers, la mémoire tampon contient le répertoire actif suivi des noms de fichiers des fichiers sélectionnés. Pour les boîtes de dialogue de style Explorateur, les chaînes de répertoire et de nom de fichier sont null séparées, avec un caractère NULL supplémentaire après le nom du dernier fichier. Pour les boîtes de dialogue de style ancien, les chaînes sont séparées par des espaces et la fonction utilise des noms de fichiers courts pour les noms de fichiers avec des espaces. Vous pouvez utiliser la fonction FindFirstFile pour effectuer une conversion entre les noms de fichiers longs et courts. Si l’utilisateur sélectionne un seul fichier, la chaîne
Si la mémoire tampon est trop petite, la fonction retourne faux et la fonction CommDlgExtendedError retourne FNERR_BUFFERTOOSMALL. Dans ce cas, les deux premiers octets de la mémoire tampon lpstrFile
nMaxFile
Type : DWORD
Taille, en caractères, de la mémoire tampon pointée par lpstrFile. La mémoire tampon doit être suffisamment grande pour stocker le chemin d’accès et la chaîne ou les chaînes de nom de fichier, y compris la fin caractère NULL. Les fonctions GetOpenFileName et GetSaveFileName retournent FALSE si la mémoire tampon est trop petite pour contenir les informations de fichier. La mémoire tampon doit comporter au moins 256 caractères.
lpstrFileTitle
Type : LPTSTR
Nom et extension de fichier (sans informations de chemin d’accès) du fichier sélectionné. Ce membre peut être NULL.
nMaxFileTitle
Type : DWORD
Taille, en caractères, de la mémoire tampon pointée par lpstrFileTitle. Ce membre est ignoré si lpstrFileTitle est NULL.
lpstrInitialDir
Type : LPCTSTR
Répertoire initial. L’algorithme permettant de sélectionner le répertoire initial varie sur différentes plateformes.
Windows 7 :
- Si lpstrInitialDir a la même valeur que la première fois que l’application a utilisé un Ouvrir ou boîte de dialogue Enregistrer sous, le chemin d’accès le plus récemment sélectionné par l’utilisateur est utilisé comme répertoire initial.
- Sinon, si lpstrFile contient un chemin d’accès, ce chemin est le répertoire initial.
- Sinon, si lpstrInitialDir n’est pas NULL, il spécifie le répertoire initial.
- Si lpstrInitialDir est NULL et que le répertoire actif contient tous les fichiers des types de filtres spécifiés, le répertoire initial est le répertoire actif.
- Sinon, le répertoire initial est le répertoire des fichiers personnels de l’utilisateur actuel.
- Sinon, le répertoire initial est le dossier Desktop.
- Si lpstrFile contient un chemin d’accès, ce chemin est le répertoire initial.
- Sinon, lpstrInitialDir spécifie le répertoire initial.
- Sinon, si l’application a utilisé un Ouvrir ou boîte de dialogue Enregistrer sous dans le passé, le chemin d’accès le plus récemment utilisé est sélectionné comme répertoire initial. Toutefois, si une application n’est pas exécutée pendant une longue période, son chemin sélectionné enregistré est ignoré.
- Si lpstrInitialDir est NULL et que le répertoire actif contient tous les fichiers des types de filtres spécifiés, le répertoire initial est le répertoire actif.
- Sinon, le répertoire initial est le répertoire des fichiers personnels de l’utilisateur actuel.
- Sinon, le répertoire initial est le dossier Desktop.
lpstrTitle
Type : LPCTSTR
Chaîne à placer dans la barre de titre de la boîte de dialogue. Si ce membre est NULL, le système utilise le titre par défaut (autrement dit, Enregistrer sous ou Ouvrir).
Flags
Type : DWORD
Ensemble d’indicateurs de bits que vous pouvez utiliser pour initialiser la boîte de dialogue. Lorsque la boîte de dialogue est retournée, elle définit ces indicateurs pour indiquer l’entrée de l’utilisateur. Ce membre peut être une combinaison des indicateurs suivants.
Valeur | Signification |
---|---|
|
La zone de liste nom de fichier autorise plusieurs sélections. Si vous définissez également l’indicateur OFN_EXPLORER, la boîte de dialogue utilise l’interface utilisateur de style Explorateur ; sinon, il utilise l’ancienne interface utilisateur de style.
Si l’utilisateur sélectionne plusieurs fichiers, la mémoire tampon lpstrFile retourne le chemin d’accès au répertoire actif suivi des noms de fichiers des fichiers sélectionnés. Le membre nFileOffset correspond au décalage, en octets ou en caractères, au premier nom de fichier, et le membre nFileExtension n’est pas utilisé. Pour les boîtes de dialogue de style Explorateur, les chaînes de répertoire et de nom de fichier sont null séparées, 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. Vous pouvez utiliser la fonction FindFirstFile pour effectuer une conversion entre les noms de fichiers longs et courts. Si vous spécifiez un modèle personnalisé pour une boîte de dialogue de style ancien, la définition de la zone de liste nom de fichier doit contenir la valeur LBS_EXTENDEDSEL. |
|
Si l’utilisateur spécifie un fichier qui n’existe pas, cet indicateur provoque l’invite de la boîte de dialogue à demander à l’utilisateur l’autorisation de créer le fichier. Si l’utilisateur choisit de créer le fichier, la boîte de dialogue se ferme et la fonction retourne le nom spécifié ; sinon, la boîte de dialogue reste ouverte. Si vous utilisez cet indicateur avec l’indicateur OFN_ALLOWMULTISELECT, la boîte de dialogue permet à l’utilisateur de spécifier un seul fichier inexistant. |
|
Empêche le système d’ajouter un lien au fichier sélectionné dans le répertoire du système de fichiers qui contient les documents les plus récemment utilisés par l’utilisateur. Pour récupérer l’emplacement de ce répertoire, appelez la fonction SHGetSpecialFolderLocation avec l’indicateur CSIDL_RECENT. |
|
Active la fonction de hook spécifiée dans le membre |
|
Provoque l’envoi de messages de notification CDN_INCLUDEITEM à votre procédure de raccordement OFNHookProc lorsque l’utilisateur ouvre un dossier. La boîte de dialogue envoie une notification pour chaque élément dans le dossier nouvellement ouvert. Ces messages vous permettent de contrôler les éléments affichés dans la liste des éléments du dossier. |
|
Active la boîte de dialogue de style Explorateur à redimensionner à l’aide de la souris ou du clavier. Par défaut, les boîtes de dialogue Ouvrir et Enregistrer sous boîtes de dialogue permettent de redimensionner la boîte de dialogue, que cet indicateur soit défini ou non. Cet indicateur est nécessaire uniquement si vous fournissez une procédure de hook ou un modèle personnalisé. La boîte de dialogue de style ancien n’autorise pas le redimensionnement. |
|
Le membre |
|
Le membre hInstance identifie un bloc de données qui contient un modèle de boîte de dialogue préchargé. Le système ignore lpTemplateName si cet indicateur est spécifié. Si l’indicateur OFN_EXPLORER est défini, le système utilise le modèle spécifié pour créer une boîte de dialogue enfant de la boîte de dialogue de style Explorateur par défaut. Si l’indicateur OFN_EXPLORER n’est pas défini, le système utilise le modèle pour créer une boîte de dialogue de style ancien qui remplace la boîte de dialogue par défaut. |
|
Indique que les personnalisations apportées à l'Ouvrir ou boîte de dialogue Enregistrer sous utilisent les méthodes de personnalisation du style Explorateur. Pour plus d’informations, consultez Explorer-Style procédures de hook et Explorer-Style modèles personnalisés.
Par défaut, les boîtes de dialogue Ouvrir et Enregistrer sous utilisent l’interface utilisateur de style Explorateur, que cet indicateur soit défini. Cet indicateur est nécessaire uniquement si vous fournissez une procédure de hook ou un modèle personnalisé, ou si vous définissez l’indicateur de OFN_ALLOWMULTISELECT. Si vous souhaitez utiliser l’interface utilisateur de style ancien, omettez l’indicateur de OFN_EXPLORER et fournissez un modèle ou une procédure de hook de remplacement de type ancien. Si vous voulez l’ancien style, mais n’avez pas besoin d’un modèle personnalisé ou d’une procédure de hook, fournissez simplement une procédure de hook qui retourne toujours FAUX. |
|
L’utilisateur a tapé une extension de nom de fichier qui diffère de l’extension spécifiée par lpstrDefExt. La fonction n’utilise pas cet indicateur si lpstrDefExt est NULL. |
|
L’utilisateur ne peut taper que des noms de fichiers existants dans le champ d’entrée nom de fichier |
|
Force l’affichage des fichiers système et masqués, en remplaçant ainsi le paramètre utilisateur pour afficher ou ne pas afficher les fichiers masqués. Toutefois, un fichier marqué à la fois système et masqué n’est pas affiché. |
|
Masque la case à cocher lecture seule. |
|
Pour les boîtes de dialogue de style ancien, cet indicateur entraîne l’utilisation de noms de fichiers longs. Si cet indicateur n’est pas spécifié ou si l’indicateur OFN_ALLOWMULTISELECT est également défini, les boîtes de dialogue de style ancien utilisent des noms de fichiers courts (format 8.3) pour les noms de fichiers avec des espaces. Les boîtes de dialogue de style Explorateur ignorent cet indicateur et affichent toujours des noms de fichiers longs. |
|
Restaure le répertoire actif sur sa valeur d’origine si l’utilisateur a modifié le répertoire lors de la recherche de fichiers.
Cet indicateur est inefficace pour GetOpenFileName. |
|
Dirige la boîte de dialogue pour renvoyer le chemin d’accès et le nom du fichier du raccourci sélectionné (. Fichier LNK). Si cette valeur n’est pas spécifiée, la boîte de dialogue retourne le chemin d’accès et le nom de fichier du fichier référencé par le raccourci. |
|
Pour les boîtes de dialogue de style ancien, cet indicateur entraîne l’utilisation de noms de fichiers courts (format 8.3). Les boîtes de dialogue de style Explorateur ignorent cet indicateur et affichent toujours des noms de fichiers longs. |
|
Masque et désactive le bouton Réseau. |
|
Le fichier retourné n’a pas la case à cocher lecture seule activée et n’est pas dans un répertoire protégé en écriture. |
|
Le fichier n’est pas créé avant la fermeture de la boîte de dialogue. Cet indicateur doit être spécifié si l’application enregistre le fichier sur un partage réseau create-nonmodify. Lorsqu’une application spécifie cet indicateur, la bibliothèque ne vérifie pas la protection en écriture, un disque complet, une porte de lecteur ouverte ou une protection réseau. Les applications utilisant cet indicateur doivent effectuer soigneusement des opérations de fichier, car un fichier ne peut pas être rouvert une fois fermé. |
|
Les boîtes de dialogue courantes autorisent les caractères non valides dans le nom de fichier retourné. En règle générale, l’application appelante utilise une procédure de hook qui vérifie le nom de fichier à l’aide du message FILEOKSTRING |
|
Provoque l'boîte de dialogue Enregistrer sous pour générer une boîte de message si le fichier sélectionné existe déjà. L’utilisateur doit confirmer s’il faut remplacer le fichier. |
|
L’utilisateur peut taper uniquement des chemins d’accès valides et des noms de fichiers. Si cet indicateur est utilisé et que l’utilisateur tape un chemin d’accès et un nom de fichier non valides dans le champ nom de fichier champ d’entrée, la fonction de boîte de dialogue affiche un avertissement dans une boîte de message. |
|
Provoque la sélection initiale de la case lecture seule lors de la création de la boîte de dialogue. Cet indicateur indique l’état de la case à cocher lecture seule lorsque la boîte de dialogue est fermée. |
|
Spécifie que si un appel à la fonction OpenFile échoue en raison d’une violation de partage réseau, l’erreur est ignorée et la boîte de dialogue retourne le nom du fichier sélectionné. Si cet indicateur n’est pas défini, la boîte de dialogue avertit votre procédure de hook lorsqu’une violation de partage réseau se produit pour le nom de fichier spécifié par l’utilisateur. Si vous définissez l’indicateur OFN_EXPLORER, la boîte de dialogue envoie le message CDN_SHAREVIOLATION à la procédure de raccordement. Si vous ne définissez pas OFN_EXPLORER, la boîte de dialogue envoie le message inscrit SHAREVISTRING à la procédure de raccordement. |
|
Provoque l’affichage de la boîte de dialogue bouton Aide. Le membre |
nFileOffset
Type : WORD
Décalage de base zéro, en caractères, du début du chemin d’accès au nom de fichier dans la chaîne pointée par lpstrFile. Pour la version ANSI, il s’agit du nombre d’octets ; pour la version Unicode, il s’agit du nombre de caractères. Par exemple, si lpstrFile pointe vers la chaîne suivante, « c :\dir1\dir2\file.ext », ce membre contient la valeur 13 pour indiquer le décalage de la chaîne « file.ext ». Si l’utilisateur sélectionne plusieurs fichiers, nFileOffset correspond au décalage du premier nom de fichier.
nFileExtension
Type : WORD
Décalage de base zéro, en caractères, du début du chemin d’accès à l’extension de nom de fichier dans la chaîne pointée par lpstrFile. Pour la version ANSI, il s’agit du nombre d’octets ; pour la version Unicode, il s’agit du nombre de caractères. En règle générale, l’extension de nom de fichier est la sous-chaîne qui suit la dernière occurrence du caractère point ( » . ») . Par exemple, txt est l’extension du nom de fichier readme.txt, html l’extension de readme.txt.html. Par conséquent, si lpstrFile pointe vers la chaîne « c :\dir1\dir2\readme.txt», ce membre contient la valeur 20. Si lpstrFile pointe vers la chaîne « c :\dir1\dir2\readme.txt.html », ce membre contient la valeur 24. Si lpstrFile pointe vers la chaîne « c :\dir1\dir2\readme.txt.html ». Ce membre contient la valeur 29. Si lpstrFile pointe vers une chaîne qui ne contient aucun caractère « ». Comme « c :\dir1\dir2\readme », ce membre contient zéro.
lpstrDefExt
Type : LPCTSTR
Extension par défaut. GetOpenFileName et GetSaveFileName ajouter cette extension au nom de fichier si l’utilisateur ne parvient pas à taper une extension. Cette chaîne peut être n’importe quelle longueur, mais seules les trois premières caractères sont ajoutées. La chaîne ne doit pas contenir de point (.). Si ce membre est NULL et que l’utilisateur ne parvient pas à taper une extension, aucune extension n’est ajoutée.
lCustData
Type : LPARAM
Données définies par l’application que le système transmet à la procédure de raccordement identifiée par le membre lpfnH ook. Lorsque le système envoie le message WM_INITDIALOG à la procédure de raccordement, le paramètre lParam du message est un pointeur vers la structure OPENFILENAME spécifiée lors de la création de la boîte de dialogue. La procédure de raccordement peut utiliser ce pointeur pour obtenir la valeur
lpfnHook
Type : LPOFNHOOKPROC
Pointeur vers une procédure de raccordement. Ce membre est ignoré, sauf si les indicateurs de membre incluent l’indicateur de OFN_ENABLEHOOK.
Si l’indicateur de OFN_EXPLORER n’est pas défini dans le membre Flags, lpfnHook est un pointeur vers une procédure OFNHookProcOldStyle hook qui reçoit les messages destinés à la boîte de dialogue. La procédure de raccordement retourne FAUX pour passer un message à la procédure de boîte de dialogue par défaut ou TRUE pour ignorer le message.
Si OFN_EXPLORER est défini, lpfnHook est un pointeur vers une procédure de raccordement OFNHookProc. La procédure de raccordement reçoit les messages de notification envoyés à partir de la boîte de dialogue. La procédure de raccordement reçoit également des messages pour tous les contrôles supplémentaires que vous avez définis en spécifiant un modèle de boîte de dialogue enfant. La procédure de raccordement ne reçoit pas de messages destinés aux contrôles standard de la boîte de dialogue par défaut.
lpTemplateName
Type : LPCTSTR
Nom de la ressource de modèle de boîte de dialogue dans le module identifié par le membre
lpEditInfo
Ce membre est compilé de manière conditionnelle (à l’aide de #ifdef _MAC
) afin qu’il s’applique uniquement aux ordinateurs Macintosh de Motorola 68K, et non aux systèmes d’exploitation clients Windows.
lpstrPrompt
Ce membre est compilé de manière conditionnelle (à l’aide de #ifdef _MAC
) afin qu’il s’applique uniquement aux ordinateurs Macintosh de Motorola 68K, et non aux systèmes d’exploitation clients Windows.
pvReserved
Type : void*
Ce membre est réservé.
dwReserved
Type : DWORD
Ce membre est réservé.
FlagsEx
Type : DWORD
Ensemble d’indicateurs de bits que vous pouvez utiliser pour initialiser la boîte de dialogue. Actuellement, ce membre peut être égal à zéro ou à l’indicateur suivant.
Remarques
Pour des raisons de compatibilité, la barre Places est masquée si indicateurs est défini sur OFN_ENABLEHOOK et lStructSize est OPENFILENAME_SIZE_VERSION_400.
Note
L’en-tête commdlg.h définit OPENFILENAME comme alias qui sélectionne automatiquement la version ANSI ou Unicode de cette fonction en fonction de la définition de la constante de préprocesseur UNICODE. Le mélange de l’utilisation de l’alias neutre en encodage avec du code qui n’est pas neutre en encodage peut entraîner des incompatibilités qui entraînent des erreurs de compilation ou d’exécution. Pour plus d’informations, consultez Conventions pour les prototypes de fonction.
Exigences
Exigence | Valeur |
---|---|
client minimum pris en charge | Windows 2000 Professionnel [applications de bureau uniquement] |
serveur minimum pris en charge | Windows 2000 Server [applications de bureau uniquement] |
d’en-tête | commdlg.h (include Windows.h) |
Voir aussi
bibliothèque de boîtes de dialogue courante
conceptuelle
autres ressources
de référence