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
相対パスの開始を定義するパスを含む最大長MAX_PATHの null で終わる文字列へのポインター。
[in] dwAttrFrom
型: DWORD
pszFrom のファイル属性。 この値に FILE_ATTRIBUTE_DIRECTORY が含まれている場合、pszFrom はディレクトリであると見なされます。それ以外の場合、pszFrom はファイルであると見なされます。
[in] pszTo
型: LPCTSTR
相対パスのエンドポイントを定義するパスを含む最大長MAX_PATHの null で終わる文字列へのポインター。
[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
Note
shlwapi.h ヘッダーは PathRelativePathTo をエイリアスとして定義し、UNICODE プリプロセッサ定数の定義に基づいて、この関数の ANSI または Unicode バージョンを自動的に選択します。 encoding-neutral エイリアスの使用を encoding-neutral ではないコードと混在すると、コンパイル エラーまたはランタイム エラーが発生する不一致が発生する可能性があります。 詳細については、「 関数プロトタイプの規則」を参照してください。
要件
要件 | 値 |
---|---|
サポートされている最小のクライアント | Windows 2000 Professional、Windows XP [デスクトップ アプリのみ] |
サポートされている最小のサーバー | Windows 2000 Server [デスクトップ アプリのみ] |
対象プラットフォーム | Windows |
ヘッダー | shlwapi.h |
Library | Shlwapi.lib |
[DLL] | Shlwapi.dll (バージョン 4.71 以降) |