티스토리 뷰
목차
[MFC강좌] 폴더 파일 경로 4. PathParseIconLocation 등 10개 함수
int PathParseIconLocation( LPTSTR pszIconFile );
pszIconFile에 파일 경로와 아이콘 인덱스가 포함된 경우 이를 적절하게 분리해 준다.
pszIconFile에는 경로가, 아이콘 인덱스는 반환 값으로 나오게 되며, pszIconFile은 "경로, icon index" 형식이어야 한다.
BOOL PathQuoteSpaces( LPTSTR lpsz );
lpsz에서 공백이 발견되면 lpsz를 큰 따옴표(")로 묶어준다.
공백이 없다면 아무 일도 하지 않고 FALSE가 반환된다.
BOOL PathRelativePathTo(LPTSTR pszPath, LPCTSTR pszFrom, DWORD dwAttrFrom, LPCTSTR pszTo, DWORD dwAttrTo );
pszFrom에서 pszTo로 가는 상대경로를 구해서 pszPath에 담아준다. 당연한 소리지만 pszFrom과 pszTo는 같은 Prefix에서 시작해야 한다.
1 2 3 4 5 6 7 8 | TCHAR buffer[MAX_PATH]; BOOL PathRelativePathTo( buffer, "c:/a/b/c/", FILE_ATTRIBUTE_DIRECTORY, "c:/a/1/2/test.txt", FILE_ATTRIBUTE_NORMAL); buffer = "../../1/2/test.txt"; | cs |
void PathRemoveArgs( LPTSTR pszPath );
경로에 포함된 인자(argv)를 지워준다.
LPTSTR PathRemoveBackslash( LPTSTR lpszPath );
경로 맨 끝에 back slash(\)가 있다면 지워준다.
void PathRemoveBlanks( LPTSTR lpszString );
Trim과 유사하다. 경로 앞뒤의 공백을 제거한다.
[[MFC강좌] 폴더 파일 경로 4. PathParseIconLocation 등 10개 함수]
void PathRemoveExtension( LPTSTR pszPath );
확장자를 제거한다.
BOOL PathRemoveFileSpec( LPTSTR pszPath );
파일이름을 제거한다. 주의할 점은 맨 끝의 "\"도 지워진다.
PathRemoveFileSpec("c:\temp\test.txt") = "c:\temp"
BOOL PathRenameExtension( LPTSTR pszPath, LPCTSTR pszExt );
파일 경로의 확장자를 지정된 확장자로 교체한다.
PathRenameExtension( "c:\temp\test.xml", ".txt") = "c:\temp\test.txt"
[[MFC강좌] 폴더 파일 경로 4. PathParseIconLocation 등 10개 함수]
BOOL PathSearchAndQualify( LPCTSTR pcszPath, LPTSTR pszFullyQualifiedPath, UINT cchFullyQualifiedPath );
제시된 경로 pcszPath에 오류가 있다면 이를 바로잡아서 pszFullyQualifiedPath에 담아준다.
상대경로를 적절히 계산해 주고, 시스템 변수가 사용된 경우 이를 적절히 확장해 준다.
TCHAR buffer[MAX_PATH];
PathSearchAndQualify( "c:\a\..\b", buffer, MAX_PATH) = c:\-;
PathSearchAndQualify( "c:\a\\\b", buffer, MAX_PATH) = c:\a\-;
PathSearchAndQualify( "notepad.exe", buffer, MAX_PATH) = c:\windows\system32\notepad.exe;
PathSearchAndQualify( "%SystemRoot%system32\notepad.exe", buffer, MAX_PATH) =
c:\windows\system32\notepad.exe;
[MFC강좌] 폴더 파일 경로 4. PathParseIconLocation 등 10개 함수