Visual Studio 2012 winres.h 가 include path 에 없을 때

IT/Programming/Solution/Tip 2013. 12. 18. 17:49

Visual Studio 2012 버젼부터 winres.h 가 Windows Kit8.0 의 Include Path 로 이동되었다.

 

VS12를 설치하면 Windows Kits 8.0도 같이 설치가 되니, 별도로 설치할 필요가 없을 것이다.

참고) Windows Kit 8.0 and Visual Studio 2012 - are they shipped together?

 

또한, VS12 의 Include Path 설정에 알아서 Windows Kits\8.0\Include\ 가 들어가 있으므로 문제될 것은 없지만 보통 resource를 편집하는 서드파티 프로그램을 사용할 때 Header Path를 설정해주어야하는데, 이때 아래의 경로 값을 참고하여 적절히 넣어주면 된다.

 

VS10 까지만해도 아래와 같이 VS 디렉터리에 winres.h가 존재했지만,

C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\atlmfc\include

 

VS12 부터는 Windows Kits\8.0 디렉터리에 winres.h가 들어간다.

C:\Program Files (x86)\Windows Kits\8.0\Include\um

설정

트랙백

댓글

Visual Studio 에서 전역(Global) Include Path 설정하기

IT/Programming/Solution/Tip 2013. 12. 17. 19:13

 

본 포스팅은 VS2010 이후 버전에서 IncludePath를 전역적으로(Globally) 세팅하는 방법을 소개하고 있습니다.

정확히는 VC++ Directories 항목들을 세팅합니다. 여기에 Include Path가 포함되어 있고 대부분의 개발자들이 Include Path를 수정하기 위해 VC++ Directores 항목을 찾기 때문에 제목을 "전역 Include Path 설정하기" 라고 지었습니다.

 

 

VS2008 까지는 Tools>Options>Projects and Solutions>VC++ Directories 에서 설정할 수 있었지만, VS2010 부터는 이 항목이 Property Sheet Manager로 옮겨가서 더 이상 사용할 수 없는 항목이 되었다.

 

 

 

View>Property Manager 혹은 View>Other Windows>Property Manager를 누르면 Solution Explorer 가 있는 박스에 Property Manager 윈도우가 추가된다.

 

 

 

※ 프로젝트를 하나라도 열고 있어야지 Property Manager 에서 VC++ Directories 설정이 가능하다.

 

Microsoft.Cpp.설정한 Build Platform 명칭(여기서는 Win32).user 을 오른쪽 클릭하고 Property에 들어가면

아래와 같이 VC++ Directories 를 설정할 수 있다.

 

 

 

여기서 설정한 변수들은 모두 전역적으로 적용된다. 프로젝트별로 선택적으로 적용시키기 위해서는 프로젝트마다 우클릭을 하여 Property 창을 띄워 수정해야하지만, 여기서 전역적으로 적용시키면 이후 작업한 프로젝트부터는 기본적으로 이 설정으로 세팅된다.

 

원리는 아래와 같다.

 

Visual Studio는 %LOCALAPPDATA%\Microsoft\MSBuild\v4.0 경로의 property 파일을 읽어들여 적용시킨다.

위 처럼 Property Manager에서 해당 빌드 플랫폼의 설정을 수정한 경우, %LOCALAPPDATA%\Microsoft\MSBuild\v4.0\Microsoft.Cpp.Win32.user.props 를 수정하게 된다. (즉, 위의 과정을 따르지 않고 해당 경로로 직접 이동하여 해당 파일을 적절히 수정해도 된다는 말이다.)

 

<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <ImportGroup Label="PropertySheets">
  </ImportGroup>
  <PropertyGroup Label="UserMacros" />
  <PropertyGroup>
    <IncludePath>C:\CustomPath</IncludePath>
  </PropertyGroup>
  <ItemDefinitionGroup />
  <ItemGroup />
</Project>

 

 

만약 본인이 임의로 수정해놓고 원래대로 값을 돌려놓고 싶은 경우에는 props파일을 연 후 설정한 옵션의 bracket 범위를 지워주면 된다.

여기서는 IncludePath가 추가되었으므로 <IncludePath>C:\CustomPath</IncludePath> 자체를 지우고 저장한 후 Visual Studio를 열고 새 프로젝트를 생성해보면 기본값으로 적용이 되어있을 것이다.

 

좀 더 다양한 정보를 얻고 싶다면 아래의 링크로!

http://blogs.msdn.com/b/vsproject/archive/2009/07/07/vc-directories.aspx

 

 

설정

트랙백

댓글

Visual Studio 속성 매크로

IT/Programming/Solution/Tip 2013. 12. 17. 15:24

매크로

설명

$(RemoteMachine)

디버그 속성 페이지에서 Remote Machine 속성의 값으로 설정합니다. 자세한 내용은 C/C++ 디버그 구성에 대한 프로젝트 설정 변경을 참조하십시오.

$(Configuration)

현재 프로젝트 구성의 이름(예: "Debug")

$(Platform)

현재 프로젝트 플랫폼의 이름(예: "Win32")

$(ParentName)

(사용하지 않음) 이 프로젝트 항목을 포함하는 항목의 이름. 부모 폴더 이름이나 프로젝트 이름입니다.

$(RootNameSpace)

응용 프로그램을 포함하는 네임스페이스(있을 경우)

$(IntDir)

중간 파일에 지정된 디렉터리 경로로서 프로젝트 디렉터리에 대해 상대적인 경로. 이 경로에는 뒤에 슬래시가 붙어야 합니다. 이 경로는 Intermediate Directory 속성의 값이 됩니다.

$(OutDir)

출력 파일 디렉터리의 경로로서 프로젝트 디렉터리에 대해 상대적인 경로. 이 경로에는 뒤에 슬래시가 붙어야 합니다. 이 경로는 Output Directory 속성의 값이 됩니다.

$(DevEnvDir)

드라이브와 경로로 정의되는 Visual Studio 2010의 설치 디렉터리로, 뒤에는 백슬래시(\)가 붙습니다.

$(InputDir)

(사용하지 않음, 마이그레이션됨) 드라이브 + 경로로 정의되는 입력 파일의 디렉터리로서 뒤에는 백슬래시(\)가 붙습니다. 해당 프로젝트가 입력 파일인 경우 이 매크로는 $(ProjectDir)와 같습니다.

$(InputPath)

(사용하지 않음, 마이그레이션됨) 드라이브 + 경로 + 기본 이름 + 파일 확장명으로 정의되는 입력 파일의 절대 경로 이름. 해당 프로젝트가 입력 파일인 경우 이 매크로는 $(ProjectPath)와 같습니다.

$(InputName)

(사용하지 않음, 마이그레이션됨) 입력 파일의 기본 이름. 해당 프로젝트가 입력 파일인 경우 이 매크로는 $(ProjectName)와 같습니다.

$(InputFileName)

(사용하지 않음, 마이그레이션됨) 기본 이름 + 파일 확장명으로 정의되는 입력 파일의 파일 이름. 해당 프로젝트가 입력 파일인 경우 이 매크로는 $(ProjectFileName)와 같습니다.

$(InputExt)

(사용하지 않음, 마이그레이션됨) 입력 파일의 파일 확장명. 파일 확장명 앞에는 '.'이 붙습니다. 해당 프로젝트가 입력 파일인 경우 이 매크로는 $(ProjectExt)와 같습니다.

$(ProjectDir)

드라이브 + 경로로 정의되는 프로젝트의 디렉터리로서 뒤에는 백슬래시(\)가 붙습니다.

$(ProjectPath)

드라이브 + 경로 + 기본 이름 + 파일 확장명으로 정의되는 프로젝트의 절대 경로 이름.

$(ProjectName)

프로젝트의 기본 이름.

$(ProjectFileName)

기본 이름 + 파일 확장명으로 정의되는 프로젝트의 파일 이름.

$(ProjectExt)

프로젝트의 파일 확장명. 파일 확장명 앞에는 '.'이 붙습니다.

$(SolutionDir)

드라이브 + 경로로 정의되는 솔루션의 디렉터리로서 뒤에는 백슬래시(\)가 붙습니다.

$(SolutionPath)

드라이브 + 경로 + 기본 이름 + 파일 확장명으로 정의되는 솔루션의 절대 경로 이름.

$(SolutionName)

솔루션의 기본 이름.

$(SolutionFileName)

기본 이름 + 파일 확장명으로 정의되는 솔루션의 파일 이름.

$(SolutionExt)

솔루션의 파일 확장명. 파일 확장명 앞에는 '.'이 붙습니다.

$(TargetDir)

드라이브 + 경로로 정의되는 빌드용 기본 출력 파일의 디렉터리로서 뒤에는 백슬래시(\)가 붙습니다.

$(TargetPath)

드라이브 + 경로 + 기본 이름 + 파일 확장명으로 정의되는 빌드용 기본 출력 파일의 절대 경로 이름.

$(TargetName)

빌드용 기본 출력 파일의 기본 이름.

$(TargetFileName)

기본 이름 + 파일 확장명으로 정의되는 빌드용 기본 출력 파일의 파일 이름.

$(TargetExt)

빌드용 기본 출력 파일의 파일 확장명. 파일 확장명 앞에는 '.'이 붙습니다.

$(VSInstallDir)

Visual Studio 2010을 설치한 디렉터리. 

이 속성에는 대상 Visual Studio의 버전이 포함되며 이 버전은 호스트 Visual Studio 버전과 다를 수 있습니다. 예를 들어 $(PlatformToolset) = v90을 사용하여 빌드할 경우 $(VSInstallDir)에는 Visual Studio 2008 설치 경로가 포함됩니다.

$(VCInstallDir)

Visual C++ 2010을 설치한 디렉터리. 

이 속성에는 대상 Visual C++의 버전이 포함되며 이 버전은 호스트 Visual Studio 버전과 다를 수 있습니다. 예를 들어 $(PlatformToolset) = v90을 사용하여 빌드할 경우 $(VCInstallDir)에는 Visual C++ 2008 설치 경로가 포함됩니다.

$(FrameworkDir)

.NET Framework를 설치한 디렉터리.

$(FrameworkVersion)

Visual Studio에서 사용되는 .NET Framework의 버전. $(FrameworkDir)와 함께 사용하면 Visual Studio에서 사용되는 .NET Framework 버전의 전체 경로를 나타냅니다.

$(FrameworkSDKDir)

.NET Framework를 설치한 디렉터리. .NET Framework는 Visual Studio 2010과 함께 또는 별도로 설치할 수 있습니다.

$(WebDeployPath)

웹 배포 루트에서 프로젝트 출력이 속한 상대 경로. RelativePath 와 같은 값을 반환합니다.

$(WebDeployRoot)

<localhost>의 절대 경로(예: c:\inetpub\wwwroot).

$(SafeParentName)

(사용하지 않음) 올바른 이름 형식에서 바로 상위 항목의 이름. 예를 들어, 폼은 .resx 파일의 상위 항목입니다.

$(SafeInputName)

(사용하지 않음) 올바른 클래스 이름으로 정의되는 파일 이름(확장명은 제외).

$(SafeRootNamespace)

(사용하지 않음) 프로젝트 마법사에서 코드를 추가할 네임스페이스 이름. 이 네임스페이스 이름은 올바른 C++ 식별자에 사용할 수 있는 문자만 포함합니다.

$(FxCopDir)

fxcop.cmd 파일의 경로. fxcop.cmd 파일은 모든 Visual C++ 버전에 설치되어 있지는 않습니다.

 

 

 

 

출처 : http://msdn.microsoft.com/ko-kr/library/c02as0cs.aspx

설정

트랙백

댓글

(Linux) script

IT/Programming/Solution/Tip 2013. 11. 4. 18:22

script 명령을 사용하면 쉘에서 보여졌던 모든 내용들을 자연스럽게 저장할 수 있다.

 

 

 

 

설정

트랙백

댓글

(WinAPI/MFC) GUI 프로그래밍을 하면서 콘솔을 임의로 띄워 테스트하기

IT/Programming/WinAPI 2013. 10. 17. 18:41

콘솔 환경에서는 값을 찍어보며 확인하기 위해서 printf() 를 주로 사용하게 된다. 하지만 GUI 프로그래밍의 경우에는 콘솔이 존재하지 않아 printf() 로 값을 확인할 수 없기 때문에 Output 창을 사용하거나 MessageBox 등을 이용하는 경우가 많은데, 아래의 코드처럼 별도로 subsystem을 console로 지정해주면 GUI창과 콘솔 창 모두 확인할 수 있다. 


#ifdef _DEBUG // 디버그 모드일 경우

#ifdef UNICODE // 유니코드일 경우

#pragma comment(linker, "/entry:wWinMainCRTStartup /subsystem:console")

#else // 멀티바이트일 경우

#pragma comment(linker, "/entry:WinMainCRTStartup /subsystem:console")

#endif

#endif



설정

트랙백

댓글

(WinAPI) editbox 에 줄바꿈 삽입이 안될 때

IT/Programming/WinAPI 2013. 10. 16. 19:50


editbox 컨트롤에 줄바꿈(엔터키, 개행문자)을 넣을 때 "\r\n" 을 삽입해도 강제개행이 되지 않는 경우가 있다.


예를 들어 다음과 같은 코드를 삽입했을 때 우리는 editbox 컨트롤에 다음과 같이 개행이 되어 있는 상태로 글이 삽입되기를 기대하게 된다.


SetWindowText(hEdit, TEXT("AAAA\r\nBBBB\r\n");

 

AAAA

BBBB

하지만 이렇게 되지 않고 AAAABBBB 와 같이 개행문자가 무시되는 경우가 있는데, 이 경우 해당 에디트 박스의 스타일 중 Multiline 스타일을 True로 설정이 되어 있는지를 확인해야한다. 이 스타일이 적용되어 있지 않다면 개행이 되지 않는다.



설정

트랙백

댓글

SQL Server 설치 중 자격증명 오류가 발생할 때

IT/Programming/Solution/Tip 2013. 9. 20. 18:46

 

 

 

 

SQL Server 에이전트 서비스에 대해 제공한 자격 증명이 잘못되었습니다.
SQL Server 서비스에 대해 지정한 자격 증명이 잘못되었습니다
Analysis Services 서비스에 대해 제공한 자격 증명이 잘못되었습니다.

 

설치 과정을 밟다보면 위와 같은 오류를 만나게 되는 경우가 있는데, [모든 SQL Server 서비스에 동일한 계정 사용(U)] 를 클릭한 후 Windows 에 존재하는 계정을 써주면 된다. ex) Administrator

 

만약 그래도 오류가 난다면 SYSTEM 계정을 제공해주면 된다. 간단하게 SYSTEM 이라고만 써주면 해결된다.

설정

트랙백

댓글

TreeView CommonController 사용시 주의할 점

IT/Programming/WinAPI 2013. 9. 6. 12:57

1. TreeView_DeleteItem() 을 사용시, TreeView_DeleteItem(hTree, NULL); 처럼 HTREEITEM 인자에 NULL 값을 주면 전체 노드가 삭제된다. 이게 왜 주의할 점이냐면, TreeView_DeleteItem(hTree,TreeView_GetChild(hTree, Node)); 처럼 사용할 경우, Node의 자식 노드가 존재하지 않을 경우 TreeView_GetChild() 가 NULL을 리턴한다. 즉, 의도하지 않게 전체 노드가 삭제될 수 있다는 이야기다.

 

삭제를 위한 반복문에서 이 경우를 신경쓰지 않고 코딩을 하면 이런 버그를 만날 수 있다.

 

물론 이를 방지하기 위해서는 다음과 같이 자식 노드가 존재하는지를 미리 체크해주는 루틴을 넣어주면 된다.

 

if( NULL != TreeView_GetChild(hTree, Node)) {
    TreeView_DeleteItem(hTree, TreeView_GetChild(hTree,Node));
}

 

 

2. TreeView_GetItem() 을 사용하여 노드의 텍스트를 가져올 때, cchTextMax도 설정해주어야 한다.

ex)

  TVITEM tvi;

  char buf[25];

tvi.hItem = Node;

tvi.mask = TVIF_TEXT;

tvi.cchTextmax = 20;

tvi.pszText = buf;

TreeView_GetItem(hTree, &tvi);

 

3. 어지간하면 TreeView_Expand() 는 맨 마지막에.

TreeView에 데이터를 넣다 보면 여기 저기 갖가지 부모 노드에 자식 노드를 넣어야 하는 경우가 있다. 이럴 경우 노드 처리 작업을 모두 진행한 후에 TreeView_Expand() 를 해줘야지 해당 노드가 제대로 펼쳐진다. 즉, 미리 TreeView_Expand() 명령을 때려놓고 노드 삽입/삭제 작업을 진행하면 Expand가 풀려버리게 된다는 말이다.

설정

트랙백

댓글

DDR1/DDR2/DDR3 외형차이

IT/Programming 2013. 7. 31. 03:37

 

 

위 그림은 DDR1/DDR2/DDR3 램카드의 외형차이를 보여주고 있다.

음... 이렇게 달랐구나. -_-; 알아도 정비 일을 하지 않는 이상에는 특별히 도움이 될 일은 없을 것 같다.

 

'IT/Programming' 카테고리의 다른 글

LocalDB  (0) 2014.01.09
git 을 웹에서 쉽게 배우자  (0) 2014.01.09
개인적으로 좋아하는 엑셀 함수 사이트  (0) 2013.03.27
Len Sassaman, 세상을 뜨다  (0) 2011.07.06
[FreeBSD] su 사용 권한 부여  (0) 2010.12.22

설정

트랙백

댓글

(WinAPI) 파일/폴더 경로 조작과 관련된 유용한 함수 리스트

IT/Programming/WinAPI 2013. 7. 10. 23:01
윈도우의 Visual C++에서 파일 경로를 조작할 때 사용할 수 있는 유용한 API 함수들이다.
사용하기 위해 아래와 같이 선언한다.
#include <shlwapi.h> #pragma comment(lib, "shlwapi")

 

해당 API에 MSDN 링크가 붙어있으니 클릭하면 더 자세한 정보를 얻을 수 있다. 



PathAddBackslash - 경로에 백슬레시를 덧붙여준다. 백슬레시가 이미 붙어 있으면 변경하지 않는다.
"c:\abc" -> "c:\abc\"
"c:\abc\" -> "c:\abc\"

PathAddExtension - 파일 경로 뒤에 지정된 확장자를 덧붙여준다. 확장자가 이미 있다면 변경하지 않는다.
"c:\abc", ".bak" -> "c:\abc.bak"
"c:\abc.cpp", ".tmp" -> "c:\abc.cpp"

PathAppend - 두 개의 경로를 덧붙인다. 사이에 백슬레시가 없으면 자동으로 추가해 준다.
"c:\abc", "def" -> "c:\abc\def"
"c:\abc\", "def" -> "c:\abc\def"
"c:\abc", "\def" -> "c:\abc\def"
"c:\abc\", "\def" -> "c:\abc\def"

PathBuildRoot - 드라이브 식별번호를 드라이브 경로로 변경해 준다.
0 -> "A:\"
1 -> "B:\"
2 -> "C:\"

PathCanonicalize - 특별한 경로 문자열을 정리해 준다.
"c:\abc\def\..\ghi" -> "c:\abc\ghi"
"c:\abc\def\.\ghi" -> "c:\abc\def\ghi"

PathCombine - 두 개의 경로를 결합한다. 백슬레시도 검사해서 추가하고 ., ..과 같은 특별한 경로 문자열도 정리해 준다.
"c:\abc", "def.txt" -> "c:\abc\def.txt"
"c:\abc\", "..\def\ghi.txt" -> "c:\def\ghi.txt"

PathCommonPrefix -  공통된 경로를 골라낸다.
"c:\abc\def.txt", "c:\abc\ghi\" -> "c:\abc"
"c:\abc\def\jkl.txt", "c:\abc\def\..\jkl.txt" -> "c:\abc\def"

PathCompactPath -  경로를 dc와 pixel 폭 크기에 알맞게 적당히 줄여준다.
hDC, "c:\abc\def\ghi\jkl.txt", 100 -> "c:\abc\...\jkl.txt"

PathCompactPathEx - 경로를 최대 문자열 길이에 알맞게 적당히 줄여준다.
"c:\\abc\\def\\jkl.txt", 15 -> "c:\...\jkl.txt"

PathCreateFromUrl - URL로 쓰여진 파일명을 경로로 변환한다.
"file:///c:/abc/def.txt" -> "c:\abc\def.txt"

PathFileExists - 해당 경로나 파일이 실제로 존재하는지 검사한다.

PathFindExtension - 확장자의 위치를 찾아서 반환한다.
"c:\abc\def.txt" -> ".txt"

PathFindFileName - 파일 이름의 위치를 찾아서 반환한다.
"c:\abc\def.txt -> "def.txt"

PathFindNextComponent - 전체 경로 중 한 단계씩 하위로 내려간 경로를 반환한다.
"c:\abc\def.txt" -> "abc\def.txt"
"abc\def.txt" -> "def.txt"
"def.txt" -> ""

PathFindOnPath - 파일을 찾아서 완전한 경로를 반환한다. (목록이 NULL일 경우 실행 PATH에서 찾기)
"cmd.exe", NULL -> "C:\WINDOWS\system32\cmd.exe"
"iexplore.exe", { "c:\Windows", "c:\Program Files", "c:\Program Files\Internet Explorer", NULL } -> "c:\Program Files\Internet Explorer\iexplore.exe"
파일이 여러개라면 첫번째로 발견된 파일의 경로만 반환

PathFindSuffixArray - 지정된 접미사 목록에서 입력된 경로에 일치하는 것을 찾는다. (대소문자 구분)
"c:\abc\DEF.txt", { "def.txt", "DEF.txt", ".txt" }, 3 -> "DEF.txt"
"c:\abc\def\ghi.txt", { "def.txt", "DEF.txt", ".txt" }, 3 -> ".txt"

PathGetArgs - 전체 문자열에서 앞 단어를 무시한 입력 인자 위치를 찾아서 반환한다.
"test.exe temp.txt sample.doc" -> "temp.txt sample.doc"
"test.exe sample All 15" -> "sample All 15"
"test.exe" -> ""
"abc def ghi" -> "def ghi"

PathGetCharType - 문자가 경로에서 어떤 목적으로 쓰일 수 있는지 확인한다.
':' -> GCT_SEPARATOR
'.' -> GCT_LFNCHAR | GCT_SHORTCHAR
'\\' -> GCT_SEPARATOR
'/' -> GCT_INVALID
'\"' -> GCT_INVALID
'\'' -> GCT_LFNCHAR | GCT_SHORTCHAR
'\t' -> GCT_INVALID
'\n' -> GCT_INVALID
',' -> GCT_LFNCHAR
'*' -> GCT_WILD
'?' -> GCT_WILD
입력된 문자열을 검색하면서 리턴값을 조사하면 올바른 경로인지 미리 검사할 수 있다.

PathGetDriveNumber - 경로가 어느 드라이브에 있는지 번호를 확인한다.
"c:\abc\def.txt" -> 2
"d:" -> 3
"s:\test" -> 18

PathIsContentType - 파일 확장자가 콘텐츠 형식과 일치하는지 확인한다.
"c:\abc\def.txt", "text/plain" -> TRUE
".txt", "text/plain" -> TRUE
"txt", "text/plain" -> FALSE

PathIsDirectory - 실제로 존재하는 폴더인지 확인한다.
"c:\windows" -> TRUE
"c:\abc" -> FALSE

PathIsDirectoryEmpty - 폴더 내부가 비어있는지 확인한다.
"c:\windows" -> FALSE

PathIsFileSpec - 주어진 경로에 경로 문자들이 없는지 확인한다. 결과가 참이라도 올바른 파일명이 아닐 수 있다.
"c:\abc\def.txt" -> FALSE
"test.txt" -> TRUE
"*-wow." -> TRUE

PathIsHTMLFile - 콘텐츠 형식이 "text/html"인 확장자인지 확인한다.
"test.html" -> TRUE
"test.htm" -> TRUE
"test.xml" -> FALSE
"test.txt" -> FALSE

PathIsLFNFileSpec - 주어진 경로가 긴파일이름에 적합한지 확인한다.

PathIsNetworkPath - 주어진 경로가 네트워크 경로 형식인지 확인한다. (실제로 존재하는지 확인하지는 않음)
"c:\abc\def.txt" -> FALSE
"\\abc\def.txt" -> TRUE
"http://abc/def.txt" -> FALSE

PathIsPrefix - 경로가 주어진 위치에서 시작하는지 확인한다.
"c:\", "c:\abc" -> TRUE
"C:\", "c:\abc" -> TRUE
"c:", "c:\abc" -> FALSE
"..\abc", "..\abc\def" -> TRUE
"d:\abc", "d:\def" -> FALSE

PathIsRelative - 주어진 경로가 상대 경로인지 확인한다. (파일명만 있어도 상대 경로로 인정)
".\abc.txt" -> TRUE
"..\abc\def.txt" -> TRUE
"c:\abc\def.txt" -> FALSE
"c:\abc\..\def.txt" -> FALSE
"test.txt" -> TRUE

PathIsRoot - 주어진 경로가 드라이브 루트인지 검사한다.
"c:\" -> TRUE
"c:" -> FALSE
"c:\test.txt" -> FALSE

PathIsSameRoot - 주어진 경로가 같은 드라이브에 있는지 검사한다.
"c:\abc\def", "c:\test.txt" -> TRUE

PathIsSystemFolder - 시스템 속성을 가진 폴더인지 확인한다.
"c:\windows" -> FALSE
"c:\program files" -> TRUE
"C:\Documents and Settings" -> FALSE
"C:\Documents and Settings\All Users\Application Data" -> TRUE

PathIsUNC - 네트워크 공유 경로인지 확인한다. (실제로 존재하는지 확인하지는 않음)
"c:\abc\def" -> FALSE
"\\abc\def" -> TRUE
"\\192.168.0.1" -> TRUE
"\\abc\def.txt" -> TRUE
"\\" -> TRUE
"\\test.txt" -> TRUE

PathIsUNCServer - 네트워크 공유 서버인지 확인한다. (실제로 존재하는지 확인하지는 않음)
"c:\abc\def" -> FALSE
"\\abc\def" -> FALSE
"\\192.168.0.1" -> TRUE
"\\abc\def.txt" -> FALSE
"\\" -> TRUE
"\\test.txt" -> TRUE

PathIsUNCServerShare -  네트워크 공유 폴더인지 확인한다. (실제로 존재하는지 확인하지는 않음)
"c:\abc\def" -> FALSE
"\\abc\def" -> TRUE
"\\192.168.0.1" -> FALSE
"\\abc\def.txt" -> TRUE
"\\" -> FALSE
"\\test.txt" -> FALSE

PathIsURL - 주어진 경로가 URL 형식이 맞는지 확인한다.

PathMakePretty - 대문자로 만들어진 경로 문자열을 소문자로 변환한다. (소문자가 하나라도 있으면 실패)
"C:\ABC\DEF" -> TRUE, "C:\abc\def"
"c:\ABC\DEF" -> FALSE, "c:\ABC\DEF"
"C:\abc\DEF" -> FALSE, "C:\abc\DEF"

PathMakeSystemFolder - 지정된 폴더를 시스템 폴더로 만든다.

PathMatchSpec - 와일드카드 형식으로 파일명과 일치되는지 확인한다.
"test.txt", "*.txt" -> TRUE
"abc.txt", "ab?.*" -> TRUE
"c:\abc\def.txt", "*\???.txt" -> TRUE

PathParseIconLocation - 파일 경로와 아이콘 인덱스 번호를 분리한다.
"iexplore.exe, 1" -> 1, "iexplore.exe"

PathQuoteSpaces - 경로에 공백이 포함되어 있으면 큰따옴표로 묶어준다. 공백이 없으면 무시
c:\1. abc -> "c:\\1. abc"
c:\abc -> c:\abc

PathRelativePathTo - 한 경로에서 다른 경로로 가는 상대 경로를 추출한다. (같은 드라이브에서만 가능)
"c:\abc\def\ghi\jkl.txt", 0, "c:\abc\mno\pqr.txt", 0 -> TRUE, "..\..\mno\pqr.txt"
"c:\abc\def\ghi\jkl", FILE_ATTRIBUTE_DIRECTORY, "c:\abc\mno\pqr.txt", 0
-> TRUE, "..\..\..\mno\pqr.txt"
"c:\abc\def\ghi\jkl.txt", 0, "c:\abc\mno\pqr", FILE_ATTRIBUTE_DIRECTORY
-> TRUE, "..\..\mno\pqr"

PathRemoveArgs - 경로에 포함된 인자를 지운다.
"test.exe temp.txt sample.doc" -> "test.exe"
"test.exe sample All 15" -> "test.exe"
"test.exe" -> "test.exe"
"abc def ghi" -> "abc"

PathRemoveBackslash - 경로 끝에 백슬레시가 있으면 삭제한다.
"c:\abc\" -> "c:\abc"
"c:\abc" -> "c:\abc"

PathRemoveBlanks - 경로 앞뒤에 공백문자가 있으면 삭제한다.
"  c:\abc   " -> "c:\abc"

PathRemoveExtension - 확장자를 삭제한다.
"c:\abc\def.txt" -> "c:\abc\def"

PathRemoveFileSpec - 파일 이름을 삭제한다.
"c:\abc\def.txt" -> "c:\abc"
"c:\abc\def\" -> "c:\abc\def"

PathRenameExtension - 확장자를 교체한다.
"c:\abc\def.txt", ".bak" -> "c:\abc\def.bak"
"c:\abc\def", ".bak" -> "c:\abc\def.bak"
"c:\abc\def\", ".bak" -> "c:\abc\def\.bak"

PathSearchAndQualify - 주어진 경로의 오류를 바로잡고, 상대 경로도 정리하고, 환경 변수도 적용한다.
"C:\foo\." -> "C:\foo"
"C:\foo\baz\.." -> "C:\foo"
"C:\foo\\\baz" -> "C:\foo\baz"
"\\server\aa\..\bb" -> "\\server\aa\bb"
"notepad.exe" -> "C:\Windows\System32\notepad.exe"
"%SystemRoot%\System32\notepad.exe" -> "C:\Windows\System32\notepad.exe"
(XP에서는 환경변수 확장이 제대로 작동하지 않음)

PathSetDlgItemPath - 주어진 다이얼로그 아이템 윈도우의 크기에 알맞게 긴 경로를 적당히 줄여준다.

PathSkipRoot - 루트 경로를 제외한 첫번째 위치를 찾아서 반환한다.
"c:\abc\def" -> "abc\def"
"\\\\abc\\def\\ghi.txt" -> "ghi.txt"

PathStripPath - 가장 마지막 경로만 남기고 삭제한다.
"c:\abc\def.txt" -> "def.txt"
"c:\abc\def" -> "def"
"c:\abc\def\" -> "def\"

PathStripToRoot - 루트 경로만 남기고 삭제한다.
"c:\abc\def.txt" -> "c:\"
"c:\abc\def" -> "c:\"

PathUndecorate - 경로에서 임시 파일에 붙는 숫자를 삭제한다.
"C:\Path\File[5].txt" -> "C:\Path\File.txt"
"C:\Path\File[12]" -> "C:\Path\File"
"C:\Path\File.txt" -> "C:\Path\File.txt"
"C:\Path\[3].txt" -> "C:\Path\[3].txt"
인터넷으로 접근한 임시파일들은 [#]과 같은 식으로 번호가 뒤에 붙는데 그러한 임시 번호를 제거한다.

PathUnExpandEnvStrings - 경로에서 환경 변수에 해당하는 문자열을 환경 변수 이름으로 교체한다.
"c:\Windows\test.txt" -> "%SystemRoot%\test.txt"
"c:\program files\test.txt" -> "%ProgramFiles%\test.txt"
"c:\abc\def" -> "%SystemDrive%\abc\def"

PathUnmakeSystemFolder - 지정된 폴더의 시스템 속성을 해제한다.


PathUnquoteSpaces - 큰 따옴표로 감싸진 경로에서 따옴표를 제거한다.

"c:\abc\1 def" -> c:\abc\1 def
c:\abc\def -> c:\abc\def

 

 

 

 

(출처 : http://hiiroyui.egloos.com/5642217)

 

 

설정

트랙백

댓글