Partager via


Fonction PathRelativePathToW (shlwapi.h)

Crée un chemin d’accès relatif d’un fichier ou dossier à un autre.

Syntaxe

BOOL PathRelativePathToW(
  [out] LPWSTR  pszPath,
  [in]  LPCWSTR pszFrom,
  [in]  DWORD   dwAttrFrom,
  [in]  LPCWSTR pszTo,
  [in]  DWORD   dwAttrTo
);

Paramètres

[out] pszPath

Type : LPTSTR

Pointeur vers une chaîne qui reçoit le chemin relatif. Cette mémoire tampon doit être d’au moins MAX_PATH caractères.

[in] pszFrom

Type : LPCTSTR

Pointeur vers une chaîne terminée par null de longueur maximale MAX_PATH qui contient le chemin qui définit le début du chemin relatif.

[in] dwAttrFrom

Type : DWORD

Attributs de fichier de pszFrom. Si cette valeur contient FILE_ATTRIBUTE_DIRECTORY, pszFrom est supposé être un répertoire ; sinon, pszFrom est supposé être un fichier.

[in] pszTo

Type : LPCTSTR

Pointeur vers une chaîne null de longueur maximale MAX_PATH qui contient le chemin qui définit le point de terminaison du chemin relatif.

[in] dwAttrTo

Type : DWORD

Attributs de fichier de pszTo. Si cette valeur contient FILE_ATTRIBUTE_DIRECTORY, pszTo est supposé être un répertoire ; sinon, pszTo est supposé être un fichier.

Valeur retournée

Type : BOOL

Retourne LA valeur TRUE si elle réussit ou FALSE dans le cas contraire.

Remarques

Cette fonction prend une paire de chemins et génère un chemin relatif de l’un à l’autre. Les chemins d’accès n’ont pas besoin d’être complets, mais ils doivent avoir un préfixe commun, sinon la fonction échoue et retourne FALSE.

Par exemple, laissez le point de départ , pszFrom, être « c :\FolderA\FolderB\FolderC », et le point de fin, pszTo, être « c :\FolderA\FolderD\FolderE ». PathRelativePathTo retourne le chemin d’accès relatif de pszFrom à pszTo comme suit : ....\FolderD\FolderE ». Vous obtiendrez le même résultat si vous définissez pszFrom sur « \FolderA\FolderB\FolderC » et pszTo sur « \FolderA\FolderD\FolderE ». En revanche, « c :\FolderA\FolderB » et « a :\FolderA\FolderD ne partagent pas de préfixe commun, et la fonction échoue. Notez que « \ » n’est pas considéré comme un préfixe et est ignoré. Si vous définissez pszFrom sur « \FolderA\FolderB » et pszTo sur « \FolderC\FolderD », la fonction échoue.

Exemples

#include <windows.h>
#include <iostream.h>
#include "Shlwapi.h"

void main(void)
{
    char szOut[MAX_PATH] = "";
    char szFrom[ ] = "c:\\a\\b\\path";
    char szTo[ ] = "c:\\a\\x\\y\\file";

    cout  <<  "The relative path is relative from: ";
    cout  <<  szFrom;
    cout  <<  "\n";

    cout  <<  "The relative path is relative to: ";
    cout  <<  szTo;
    cout  <<  "\n";

    PathRelativePathTo(szOut,
                       szFrom,
                       FILE_ATTRIBUTE_DIRECTORY,
                       szTo,
                       FILE_ATTRIBUTE_NORMAL);

    cout  <<  "The relative path is: ";
    cout  <<  szOut;
    cout  <<  "\n";
}

OUTPUT:
==================
The relative path is relative from: c:\a\b\path
The relative path is relative to: c:\a\x\y\file
The relative path is: ..\..\x\y\file

Notes

L’en-tête shlwapi.h définit PathRelativePathTo comme un 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.

Configuration requise

Condition requise Valeur
Client minimal pris en charge Windows 2000 Professionnel, Windows XP [applications de bureau uniquement]
Serveur minimal pris en charge Windows 2000 Server [applications de bureau uniquement]
Plateforme cible Windows
En-tête shlwapi.h
Bibliothèque Shlwapi.lib
DLL Shlwapi.dll (version 4.71 ou ultérieure)