Partager via


PathRelativePathToA, fonction (shlwapi.h)

Crée un chemin relatif d’un fichier ou d’un dossier vers un autre.

Syntaxe

BOOL PathRelativePathToA(
  [out] LPSTR  pszPath,
  [in]  LPCSTR pszFrom,
  [in]  DWORD  dwAttrFrom,
  [in]  LPCSTR pszTo,
  [in]  DWORD  dwAttrTo
);

Paramètres

[out] pszPath

Type : LPTSTR

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

[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 d’accès 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 terminée par null de longueur maximale MAX_PATH qui contient le chemin d’accès 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 de retour

Type : BOOL

Retourne TRUE en cas de réussite ou FALSE sinon.

Remarques

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

Par exemple, laissez le point de départ, pszFrom, être « c :\FolderA\FolderB\FolderC » et le point de terminaison, pszTo, être « c :\FolderA\FolderD\FolderE ». PathRelativePathTo renvoie le chemin relatif de pszFrom à pszTo en tant que : « ...\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

Note

L’en-tête shlwapi.h définit PathRelativePathTo 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, Windows XP [applications de bureau uniquement]
serveur minimum pris en charge Windows 2000 Server [applications de bureau uniquement]
plateforme cible Windows
d’en-tête shlwapi.h
bibliothèque Shlwapi.lib
DLL Shlwapi.dll (version 4.71 ou ultérieure)