PathRelativePathToA-Funktion (shlwapi.h)
Erstellt einen relativen Pfad von einer Datei oder einem Ordner zu einer anderen.
Syntax
BOOL PathRelativePathToA(
[out] LPSTR pszPath,
[in] LPCSTR pszFrom,
[in] DWORD dwAttrFrom,
[in] LPCSTR pszTo,
[in] DWORD dwAttrTo
);
Parameter
[out] pszPath
Typ: LPTSTR-
Ein Zeiger auf eine Zeichenfolge, die den relativen Pfad empfängt. Dieser Puffer muss mindestens MAX_PATH Zeichen groß sein.
[in] pszFrom
Typ: LPCTSTR-
Ein Zeiger auf eine mit Null beendete Zeichenfolge der maximalen Länge MAX_PATH, die den Pfad enthält, der den Anfang des relativen Pfads definiert.
[in] dwAttrFrom
Typ: DWORD-
Die Dateiattribute von pszFrom. Wenn dieser Wert FILE_ATTRIBUTE_DIRECTORY enthält, wird pszFrom als Verzeichnis angenommen; andernfalls wird pszFrom als Datei angenommen.
[in] pszTo
Typ: LPCTSTR-
Ein Zeiger auf eine mit Null beendete Zeichenfolge mit maximaler Länge MAX_PATH, die den Pfad enthält, der den Endpunkt des relativen Pfads definiert.
[in] dwAttrTo
Typ: DWORD-
Die Dateiattribute von pszTo. Wenn dieser Wert FILE_ATTRIBUTE_DIRECTORY enthält, wird pszTo als Verzeichnis angenommen; andernfalls wird pszTo als Datei angenommen.
Rückgabewert
Typ: BOOL-
Gibt TRUE zurück, wenn dies erfolgreich ist, oder FALSE andernfalls.
Bemerkungen
Diese Funktion verwendet ein Pfadpaar und generiert einen relativen Pfad zwischeneinander. Die Pfade müssen nicht vollständig qualifiziert sein, aber sie müssen ein allgemeines Präfix aufweisen, oder die Funktion schlägt fehl und gibt FALSE-zurück.
Lassen Sie z. B. den Ausgangspunkt pszFrom, "c:\FolderA\FolderB\FolderC" und den Endpunkt pszTolautet "c:\FolderA\FolderD\FolderE". PathRelativePathTo gibt den relativen Pfad von pszFrom zu pszTo als: "....\FolderD\FolderE" zurück. Sie erhalten dasselbe Ergebnis, wenn Sie pszFrom auf "\FolderA\FolderB\FolderC" festlegen und pszTo auf "\FolderA\FolderD\FolderE" festlegen. Andererseits geben "c:\FolderA\FolderB" und "a:\FolderA\FolderD" kein gemeinsames Präfix frei, und die Funktion schlägt fehl. Beachten Sie, dass "\" nicht als Präfix betrachtet wird und ignoriert wird. Wenn Sie pszFrom auf "\FolderA\FolderB" festlegen und pszTo auf "\FolderC\FolderD" festlegen, schlägt die Funktion fehl.
Beispiele
#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
Anmerkung
Der Header "shlwapi.h" definiert PathRelativePathTo als Alias, der die ANSI- oder Unicode-Version dieser Funktion basierend auf der Definition der UNICODE-Präprozessorkonstante automatisch auswählt. Das Mischen der Verwendung des codierungsneutralen Alias mit Code, der nicht codierungsneutral ist, kann zu Nichtübereinstimmungen führen, die zu Kompilierungs- oder Laufzeitfehlern führen. Weitere Informationen finden Sie unter Konventionen für Funktionsprototypen.
Anforderungen
Anforderung | Wert |
---|---|
mindestens unterstützte Client- | Windows 2000 Professional, Windows XP [nur Desktop-Apps] |
mindestens unterstützte Server- | Windows 2000 Server [nur Desktop-Apps] |
Zielplattform- | Fenster |
Header- | shlwapi.h |
Library | Shlwapi.lib |
DLL- | Shlwapi.dll (Version 4.71 oder höher) |