Função PathRelativePathToW (shlwapi.h)
Cria um caminho relativo de um arquivo ou pasta para outro.
Sintaxe
BOOL PathRelativePathToW(
[out] LPWSTR pszPath,
[in] LPCWSTR pszFrom,
[in] DWORD dwAttrFrom,
[in] LPCWSTR pszTo,
[in] DWORD dwAttrTo
);
Parâmetros
[out] pszPath
Tipo: LPTSTR
Um ponteiro para uma cadeia de caracteres que recebe o caminho relativo. Esse buffer deve ter pelo menos MAX_PATH caracteres de tamanho.
[in] pszFrom
Tipo: LPCTSTR
Um ponteiro para uma cadeia de caracteres terminada em nulo de comprimento máximo MAX_PATH que contém o caminho que define o início do caminho relativo.
[in] dwAttrFrom
Tipo: DWORD
Os atributos de arquivo de pszFrom. Se esse valor contiver FILE_ATTRIBUTE_DIRECTORY, pszFrom será considerado um diretório, caso contrário, pszFrom será considerado um arquivo.
[in] pszTo
Tipo: LPCTSTR
Um ponteiro para uma cadeia de caracteres terminada em nulo de comprimento máximo MAX_PATH que contém o caminho que define o ponto de extremidade do caminho relativo.
[in] dwAttrTo
Tipo: DWORD
Os atributos de arquivo de pszTo. Se esse valor contiver FILE_ATTRIBUTE_DIRECTORY, pszTo será considerado diretório; caso contrário, pszTo será considerado um arquivo.
Retornar valor
Tipo: BOOL
Retornará TRUE se tiver êxito ou FALSE caso contrário.
Comentários
Essa função usa um par de caminhos e gera um caminho relativo de um para o outro. Os caminhos não precisam ser totalmente qualificados, mas devem ter um prefixo comum ou a função falhará e retornará FALSE.
Por exemplo, deixe que o ponto de partida, pszFrom, seja "c:\FolderA\FolderB\FolderC" e o ponto final, pszTo, seja "c:\FolderA\FolderD\FolderE". PathRelativePathTo retornará o caminho relativo de pszFrom para pszTo como: "....\FolderD\FolderE". Você obterá o mesmo resultado se definir pszFrom como "\FolderA\FolderB\FolderC" e pszTo como "\FolderA\FolderD\FolderE". Por outro lado, "c:\FolderA\FolderB" e "a:\FolderA\FolderD não compartilham um prefixo comum e a função falhará. Observe que "\" não é considerado um prefixo e é ignorado. Se você definir pszFrom como "\FolderA\FolderB" e pszTo como "\FolderC\FolderD", a função falhará.
Exemplos
#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
Observação
O cabeçalho shlwapi.h define PathRelativePathTo como um alias que seleciona automaticamente a versão ANSI ou Unicode dessa função com base na definição da constante de pré-processador UNICODE. Misturar o uso do alias neutro de codificação com código que não seja neutro em codificação pode levar a incompatibilidades que resultam em erros de compilação ou de runtime. Para obter mais informações, consulte Convenções para protótipos de função.
Requisitos
Requisito | Valor |
---|---|
Cliente mínimo com suporte | Windows 2000 Professional, Windows XP [somente aplicativos da área de trabalho] |
Servidor mínimo com suporte | Windows 2000 Server [somente aplicativos da área de trabalho] |
Plataforma de Destino | Windows |
Cabeçalho | shlwapi.h |
Biblioteca | Shlwapi.lib |
DLL | Shlwapi.dll (versão 4.71 ou posterior) |