PathRelativePathToW 函数 (shlwapi.h)
创建从一个文件或文件夹到另一个文件夹的相对路径。
语法
BOOL PathRelativePathToW(
[out] LPWSTR pszPath,
[in] LPCWSTR pszFrom,
[in] DWORD dwAttrFrom,
[in] LPCWSTR pszTo,
[in] DWORD dwAttrTo
);
参数
[out] pszPath
类型:LPTSTR
指向接收相对路径的字符串的指针。 此缓冲区的大小必须至少MAX_PATH个字符。
[in] pszFrom
类型:LPCTSTR
指向最大长度为 null 的字符串的指针 MAX_PATH,该字符串包含定义相对路径开头的路径。
[in] dwAttrFrom
类型:DWORD
pszFrom的文件属性。 如果此值包含FILE_ATTRIBUTE_DIRECTORY,则假定 pszFrom 为目录
[in] pszTo
类型:LPCTSTR
指向最大长度为 null 的字符串的指针 MAX_PATH,该字符串包含定义相对路径终结点的路径。
[in] dwAttrTo
类型:DWORD
pszTo的文件属性。 如果此值包含FILE_ATTRIBUTE_DIRECTORY,则假定 pszTo 为目录
返回值
类型:BOOL
如果成功,则返回 TRUE;否则返回 FALSE。
言论
此函数采用一对路径,并生成一个相对路径,从一个路径到另一个路径。 路径不必完全限定,但它们必须具有通用前缀,否则函数将失败并返回 FALSE。
例如,让起点,pszFrom,为“c:\FolderA\FolderB\FolderC”,终点 pszTo,为“c:\FolderA\FolderD\FolderE”。
PathRelativePathTo 将返回从 pszFrom 到 pszTo 的相对路径,如下所示:“....\FolderD\FolderE”。 如果将 pszFrom 设置为“\FolderA\FolderB\FolderC
例子
#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 定义为一个别名,该别名根据 UNICODE 预处理器常量的定义自动选择此函数的 ANSI 或 Unicode 版本。 将中性编码别名与不中性编码的代码混合使用可能会导致编译或运行时错误不匹配。 有关详细信息,请参阅函数原型的
要求
要求 | 价值 |
---|---|
最低支持的客户端 | Windows 2000 Professional、Windows XP [仅限桌面应用] |
支持的最低服务器 | Windows 2000 Server [仅限桌面应用] |
目标平台 | 窗户 |
标头 | shlwapi.h |
库 | Shlwapi.lib |
DLL | Shlwapi.dll(版本 4.71 或更高版本) |