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\FolderE”。 PathRelativePathTo 會將 pszFrom 的相對路徑傳回 pszTo 作為:“....\FolderD\FolderE”。 如果您將 pszFrom 設定為 “\FolderA\FolderB\FolderC”, 並將 pszTo 設定為 “\FolderA\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定義為別名,根據UNICODE預處理器常數的定義,自動選取此函式的ANSI或Unicode版本。 混合使用編碼中性別名與非編碼中性的程序代碼,可能會導致編譯或運行時間錯誤不符。 如需詳細資訊,請參閱 函式原型的慣例。
規格需求
需求 | 值 |
---|---|
最低支援的用戶端 | Windows 2000 專業版、Windows XP [僅限傳統型應用程式] |
最低支援的伺服器 | Windows 2000 Server [僅限傳統型應用程式] |
目標平台 | Windows |
標頭 | shlwapi.h |
程式庫 | Shlwapi.lib |
Dll | Shlwapi.dll (4.71 版或更新版本) |