共用方式為


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 版或更新版本)