Funzione PathRelativePathToA (shlwapi.h)

Crea un percorso relativo da un file o una cartella a un altro.

Sintassi

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

Parametri

[out] pszPath

Tipo: LPTSTR

Puntatore a una stringa che riceve il percorso relativo. Questo buffer deve essere di almeno MAX_PATH caratteri di dimensioni.

[in] pszFrom

Tipo: LPCTSTR

Puntatore a una stringa con terminazione Null di lunghezza massima MAX_PATH che contiene il percorso che definisce l'inizio del percorso relativo.

[in] dwAttrFrom

Tipo: DWORD

Attributi del file di pszFrom. Se questo valore contiene FILE_ATTRIBUTE_DIRECTORY, si presuppone che pszFrom sia una directory; in caso contrario, si presuppone che pszFrom sia un file.

[in] pszTo

Tipo: LPCTSTR

Puntatore a una stringa con terminazione Null di lunghezza massima MAX_PATH che contiene il percorso che definisce l'endpoint del percorso relativo.

[in] dwAttrTo

Tipo: DWORD

Attributi del file di pszTo. Se questo valore contiene FILE_ATTRIBUTE_DIRECTORY, si presuppone che pszTo sia directory; in caso contrario, si presuppone che pszTo sia un file.

Valore restituito

Tipo: BOOL

Restituisce TRUE se l'operazione riesce o FALSE in caso contrario.

Commenti

Questa funzione accetta una coppia di percorsi e genera un percorso relativo da uno all'altro. I percorsi non devono essere completi, ma devono avere un prefisso comune oppure la funzione avrà esito negativo e restituirà FALSE.

Ad esempio, lasciare che il punto iniziale, pszFrom, sia "c:\FolderA\FolderB\FolderC" e il punto finale, pszTo, essere "c:\FolderA\FolderD\FolderD\FolderE". PathRelativePathTo restituirà il percorso relativo da pszFrom a pszTo come: "....\FolderD\FolderE". Si otterrà lo stesso risultato se si imposta pszFrom su "\FolderA\FolderB\FolderC" e pszTo su "\FolderA\FolderD\FolderE". D'altra parte, "c:\FolderA\FolderB" e "a:\FolderA\FolderD non condividono un prefisso comune e la funzione avrà esito negativo. Si noti che "\" non è considerato un prefisso e viene ignorato. Se si imposta pszFrom su "\FolderA\FolderB" e pszTo su "\FolderC\FolderD", la funzione avrà esito negativo.

Esempi

#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

Nota

L'intestazione shlwapi.h definisce PathRelativePathTo come alias che seleziona automaticamente la versione ANSI o Unicode di questa funzione in base alla definizione della costante del preprocessore UNICODE. La combinazione dell'utilizzo dell'alias indipendente dalla codifica con il codice che non è indipendente dalla codifica può causare mancate corrispondenze che generano errori di compilazione o di runtime. Per altre informazioni, vedere Convenzioni per i prototipi di funzioni.

Requisiti

Requisito Valore
Client minimo supportato Windows 2000 Professional, Windows XP [solo app desktop]
Server minimo supportato Windows 2000 Server [solo app desktop]
Piattaforma di destinazione Windows
Intestazione shlwapi.h
Libreria Shlwapi.lib
DLL Shlwapi.dll (versione 4.71 o successiva)