Функция PathRelativePathToA (shlwapi.h)
Создает относительный путь из одного файла или папки в другой.
Синтаксис
BOOL PathRelativePathToA(
[out] LPSTR pszPath,
[in] LPCSTR pszFrom,
[in] DWORD dwAttrFrom,
[in] LPCSTR pszTo,
[in] DWORD dwAttrTo
);
Параметры
[out] pszPath
Тип: LPTSTR
Указатель на строку, которая получает относительный путь. Этот буфер должен иметь по крайней мере MAX_PATH символов размера.
[in] pszFrom
Тип: LPCTSTR
Указатель на строку, завершающуюся значением NULL, максимальную длину MAX_PATH, содержащую путь, определяющий начало относительного пути.
[in] dwAttrFrom
Тип: DWORD
Атрибуты файла pszFrom. Если это значение содержит FILE_ATTRIBUTE_DIRECTORY, pszFrom считается каталогом; в противном случае pszFrom считается файлом.
[in] pszTo
Тип: LPCTSTR
Указатель на строку, завершающуюся значением NULL, максимальную длину MAX_PATH, содержащую путь, определяющий конечную точку относительного пути.
[in] dwAttrTo
Тип: DWORD
Атрибуты файла pszTo. Если это значение содержит FILE_ATTRIBUTE_DIRECTORY, pszTo считается каталогом; в противном случае pszTo считается файлом.
Возвращаемое значение
Тип: BOOL
Возвращает TRUE, если выполнено успешно или FALSE в противном случае.
Замечания
Эта функция принимает пару путей и создает относительный путь от одного к другому. Пути не должны быть полными, но они должны иметь общий префикс, или функция завершится ошибкой и возвратит FALSE.
Например, пусть начальная точка pszFrom, будет "c:\FolderA\FolderB\FolderC", а конечная точка , pszTo, быть "c:\FolderA\FolderD\FolderD\FolderE". PathRelativePathTo возвращает относительный путь из pszFrom в pszTo как :...\FolderD\FolderE. Вы получите тот же результат, если pszFrom значение "\FolderA\FolderB\FolderC" и pszTo значение "\FolderA\FolderD\FolderD\FolderE". С другой стороны, "c:\FolderA\FolderB" и "a:\FolderA\FolderD не совместно используют общий префикс, и функция завершится ошибкой. Обратите внимание, что "\" не считается префиксом и игнорируется. Если pszFrom значение \FolderA\FolderB, а pszTo "\FolderC\FolderD", функция завершится ошибкой.
Примеры
#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
Заметка
Заголовок shlwapi.h определяет PathRelativePathTo как псевдоним, который автоматически выбирает версию ANSI или Юникод этой функции на основе определения константы препроцессора ЮНИКОД. Сочетание использования псевдонима, нейтрального для кодирования, с кодом, не зависящим от кодирования, может привести к несоответствиям, которые приводят к ошибкам компиляции или среды выполнения. Дополнительные сведения см. в соглашениях о прототипах функций.
Требования
Требование | Ценность |
---|---|
минимальные поддерживаемые клиентские | Windows 2000 Профессиональный, Windows XP [только классические приложения] |
минимальный поддерживаемый сервер | Windows 2000 Server [только классические приложения] |
целевая платформа | Виндоус |
заголовка | shlwapi.h |
библиотеки |
Shlwapi.lib |
DLL | Shlwapi.dll (версия 4.71 или более поздняя) |