검색결과 리스트
IT/Programming에 해당되는 글 108건
- 2013.12.18 Visual Studio 2012 winres.h 가 include path 에 없을 때
- 2013.12.17 Visual Studio 에서 전역(Global) Include Path 설정하기
- 2013.12.17 Visual Studio 속성 매크로
- 2013.11.04 (Linux) script
- 2013.10.17 (WinAPI/MFC) GUI 프로그래밍을 하면서 콘솔을 임의로 띄워 테스트하기
- 2013.10.16 (WinAPI) editbox 에 줄바꿈 삽입이 안될 때
- 2013.09.20 SQL Server 설치 중 자격증명 오류가 발생할 때 3
- 2013.09.06 TreeView CommonController 사용시 주의할 점
- 2013.07.31 DDR1/DDR2/DDR3 외형차이
- 2013.07.10 (WinAPI) 파일/폴더 경로 조작과 관련된 유용한 함수 리스트
글
Visual Studio 2012 winres.h 가 include path 에 없을 때
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
'IT/Programming > Solution/Tip' 카테고리의 다른 글
Sublime Text :: Bracket Highlighter (1) | 2014.03.29 |
---|---|
(Java) eclipse :: This file system is read only ~ 해결방법 (0) | 2014.02.06 |
Visual Studio 에서 전역(Global) Include Path 설정하기 (0) | 2013.12.17 |
Visual Studio 속성 매크로 (0) | 2013.12.17 |
(Linux) script (0) | 2013.11.04 |
글
Visual Studio 에서 전역(Global) Include Path 설정하기
본 포스팅은 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
'IT/Programming > Solution/Tip' 카테고리의 다른 글
(Java) eclipse :: This file system is read only ~ 해결방법 (0) | 2014.02.06 |
---|---|
Visual Studio 2012 winres.h 가 include path 에 없을 때 (0) | 2013.12.18 |
Visual Studio 속성 매크로 (0) | 2013.12.17 |
(Linux) script (0) | 2013.11.04 |
SQL Server 설치 중 자격증명 오류가 발생할 때 (3) | 2013.09.20 |
글
Visual Studio 속성 매크로
|
|
---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
'IT/Programming > Solution/Tip' 카테고리의 다른 글
Visual Studio 2012 winres.h 가 include path 에 없을 때 (0) | 2013.12.18 |
---|---|
Visual Studio 에서 전역(Global) Include Path 설정하기 (0) | 2013.12.17 |
(Linux) script (0) | 2013.11.04 |
SQL Server 설치 중 자격증명 오류가 발생할 때 (3) | 2013.09.20 |
_IO_str_overflow_internal 에러 발생 시 (0) | 2013.07.03 |
글
(Linux) script
script 명령을 사용하면 쉘에서 보여졌던 모든 내용들을 자연스럽게 저장할 수 있다.
'IT/Programming > Solution/Tip' 카테고리의 다른 글
Visual Studio 에서 전역(Global) Include Path 설정하기 (0) | 2013.12.17 |
---|---|
Visual Studio 속성 매크로 (0) | 2013.12.17 |
SQL Server 설치 중 자격증명 오류가 발생할 때 (3) | 2013.09.20 |
_IO_str_overflow_internal 에러 발생 시 (0) | 2013.07.03 |
iconv 에서 다이렉션 기호 사용 시 주의해야할 점 (0) | 2013.06.27 |
글
(WinAPI/MFC) GUI 프로그래밍을 하면서 콘솔을 임의로 띄워 테스트하기
콘솔 환경에서는 값을 찍어보며 확인하기 위해서 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
'IT/Programming > WinAPI' 카테고리의 다른 글
(WinAPI) 디렉터리 제어 응용 (0) | 2014.04.21 |
---|---|
(WinAPI) editbox 에 줄바꿈 삽입이 안될 때 (0) | 2013.10.16 |
TreeView CommonController 사용시 주의할 점 (0) | 2013.09.06 |
(WinAPI) 파일/폴더 경로 조작과 관련된 유용한 함수 리스트 (0) | 2013.07.10 |
(WinAPI) 문자열 함수(멀티바이트->유니코드->TCHAR) (0) | 2013.07.08 |
글
(WinAPI) editbox 에 줄바꿈 삽입이 안될 때
editbox 컨트롤에 줄바꿈(엔터키, 개행문자)을 넣을 때 "\r\n" 을 삽입해도 강제개행이 되지 않는 경우가 있다.
예를 들어 다음과 같은 코드를 삽입했을 때 우리는 editbox 컨트롤에 다음과 같이 개행이 되어 있는 상태로 글이 삽입되기를 기대하게 된다.
SetWindowText(hEdit, TEXT("AAAA\r\nBBBB\r\n");
AAAA
BBBB
하지만 이렇게 되지 않고 AAAABBBB 와 같이 개행문자가 무시되는 경우가 있는데, 이 경우 해당 에디트 박스의 스타일 중 Multiline 스타일을 True로 설정이 되어 있는지를 확인해야한다. 이 스타일이 적용되어 있지 않다면 개행이 되지 않는다.
'IT/Programming > WinAPI' 카테고리의 다른 글
(WinAPI) 디렉터리 제어 응용 (0) | 2014.04.21 |
---|---|
(WinAPI/MFC) GUI 프로그래밍을 하면서 콘솔을 임의로 띄워 테스트하기 (0) | 2013.10.17 |
TreeView CommonController 사용시 주의할 점 (0) | 2013.09.06 |
(WinAPI) 파일/폴더 경로 조작과 관련된 유용한 함수 리스트 (0) | 2013.07.10 |
(WinAPI) 문자열 함수(멀티바이트->유니코드->TCHAR) (0) | 2013.07.08 |
글
SQL Server 설치 중 자격증명 오류가 발생할 때
SQL Server 에이전트 서비스에 대해 제공한 자격 증명이 잘못되었습니다.
SQL Server 서비스에 대해 지정한 자격 증명이 잘못되었습니다
Analysis Services 서비스에 대해 제공한 자격 증명이 잘못되었습니다.
설치 과정을 밟다보면 위와 같은 오류를 만나게 되는 경우가 있는데, [모든 SQL Server 서비스에 동일한 계정 사용(U)] 를 클릭한 후 Windows 에 존재하는 계정을 써주면 된다. ex) Administrator
만약 그래도 오류가 난다면 SYSTEM 계정을 제공해주면 된다. 간단하게 SYSTEM 이라고만 써주면 해결된다.
'IT/Programming > Solution/Tip' 카테고리의 다른 글
Visual Studio 속성 매크로 (0) | 2013.12.17 |
---|---|
(Linux) script (0) | 2013.11.04 |
_IO_str_overflow_internal 에러 발생 시 (0) | 2013.07.03 |
iconv 에서 다이렉션 기호 사용 시 주의해야할 점 (0) | 2013.06.27 |
(javascript) getElementById()/getElementsbyName() 함수가 제대로 동작하지 않을 때 (0) | 2013.06.08 |
글
TreeView CommonController 사용시 주의할 점
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가 풀려버리게 된다는 말이다.
'IT/Programming > WinAPI' 카테고리의 다른 글
(WinAPI/MFC) GUI 프로그래밍을 하면서 콘솔을 임의로 띄워 테스트하기 (0) | 2013.10.17 |
---|---|
(WinAPI) editbox 에 줄바꿈 삽입이 안될 때 (0) | 2013.10.16 |
(WinAPI) 파일/폴더 경로 조작과 관련된 유용한 함수 리스트 (0) | 2013.07.10 |
(WinAPI) 문자열 함수(멀티바이트->유니코드->TCHAR) (0) | 2013.07.08 |
TCHAR 문자열을 printf() 할 때 발생하는 문제점의 원인 (0) | 2013.07.08 |
글
DDR1/DDR2/DDR3 외형차이
위 그림은 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) 파일/폴더 경로 조작과 관련된 유용한 함수 리스트
사용하기 위해 아래와 같이 선언한다.
#include <shlwapi.h> #pragma comment(lib, "shlwapi")
해당 API에 MSDN 링크가 붙어있으니 클릭하면 더 자세한 정보를 얻을 수 있다.
PathAddBackslash - 경로에 백슬레시를 덧붙여준다. 백슬레시가 이미 붙어 있으면 변경하지 않는다.
"c:\abc\" -> "c:\abc\"
"c:\abc.cpp", ".tmp" -> "c:\abc.cpp"
"c:\abc\", "def" -> "c:\abc\def"
"c:\abc", "\def" -> "c:\abc\def"
"c:\abc\", "\def" -> "c:\abc\def"
1 -> "B:\"
2 -> "C:\"
"c:\abc\def\.\ghi" -> "c:\abc\def\ghi"
"c:\abc\", "..\def\ghi.txt" -> "c:\def\ghi.txt"
"c:\abc\def\jkl.txt", "c:\abc\def\..\jkl.txt" -> "c:\abc\def"
"abc\def.txt" -> "def.txt"
"def.txt" -> ""
"iexplore.exe", { "c:\Windows", "c:\Program Files", "c:\Program Files\Internet Explorer", NULL } -> "c:\Program Files\Internet Explorer\iexplore.exe"
파일이 여러개라면 첫번째로 발견된 파일의 경로만 반환
"c:\abc\def\ghi.txt", { "def.txt", "DEF.txt", ".txt" }, 3 -> ".txt"
"test.exe sample All 15" -> "sample All 15"
"test.exe" -> ""
"abc def ghi" -> "def ghi"
'.' -> 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
입력된 문자열을 검색하면서 리턴값을 조사하면 올바른 경로인지 미리 검사할 수 있다.
"d:" -> 3
"s:\test" -> 18
".txt", "text/plain" -> TRUE
"txt", "text/plain" -> FALSE
"c:\abc" -> FALSE
"test.txt" -> TRUE
"*-wow." -> TRUE
"test.htm" -> TRUE
"test.xml" -> FALSE
"test.txt" -> FALSE
PathIsLFNFileSpec - 주어진 경로가 긴파일이름에 적합한지 확인한다.
PathIsNetworkPath - 주어진 경로가 네트워크 경로 형식인지 확인한다. (실제로 존재하는지 확인하지는 않음)
"\\abc\def.txt" -> TRUE
"http://abc/def.txt" -> FALSE
"C:\", "c:\abc" -> TRUE
"c:", "c:\abc" -> FALSE
"..\abc", "..\abc\def" -> TRUE
"d:\abc", "d:\def" -> FALSE
"..\abc\def.txt" -> TRUE
"c:\abc\def.txt" -> FALSE
"c:\abc\..\def.txt" -> FALSE
"test.txt" -> TRUE
"c:" -> FALSE
"c:\test.txt" -> FALSE
"c:\program files" -> TRUE
"C:\Documents and Settings" -> FALSE
"C:\Documents and Settings\All Users\Application Data" -> TRUE
PathIsUNC - 네트워크 공유 경로인지 확인한다. (실제로 존재하는지 확인하지는 않음)
"\\abc\def" -> TRUE
"\\192.168.0.1" -> TRUE
"\\abc\def.txt" -> TRUE
"\\" -> TRUE
"\\test.txt" -> TRUE
PathIsUNCServer - 네트워크 공유 서버인지 확인한다. (실제로 존재하는지 확인하지는 않음)
"\\abc\def" -> FALSE
"\\192.168.0.1" -> TRUE
"\\abc\def.txt" -> FALSE
"\\" -> TRUE
"\\test.txt" -> TRUE
PathIsUNCServerShare - 네트워크 공유 폴더인지 확인한다. (실제로 존재하는지 확인하지는 않음)
"\\abc\def" -> TRUE
"\\192.168.0.1" -> FALSE
"\\abc\def.txt" -> TRUE
"\\" -> FALSE
"\\test.txt" -> FALSE
PathIsURL - 주어진 경로가 URL 형식이 맞는지 확인한다.
PathMakePretty - 대문자로 만들어진 경로 문자열을 소문자로 변환한다. (소문자가 하나라도 있으면 실패)
"c:\ABC\DEF" -> FALSE, "c:\ABC\DEF"
"C:\abc\DEF" -> FALSE, "C:\abc\DEF"
"abc.txt", "ab?.*" -> TRUE
"c:\abc\def.txt", "*\???.txt" -> TRUE
c:\abc -> c:\abc
"c:\abc\def\ghi\jkl", FILE_ATTRIBUTE_DIRECTORY, "c:\abc\mno\pqr.txt", 0
"test.exe sample All 15" -> "test.exe"
"test.exe" -> "test.exe"
"abc def ghi" -> "abc"
"c:\abc" -> "c:\abc"
"c:\abc\def\" -> "c:\abc\def"
"c:\abc\def", ".bak" -> "c:\abc\def.bak"
"c:\abc\def\", ".bak" -> "c:\abc\def\.bak"
"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 - 루트 경로를 제외한 첫번째 위치를 찾아서 반환한다.
"\\\\abc\\def\\ghi.txt" -> "ghi.txt"
"c:\abc\def" -> "def"
"c:\abc\def\" -> "def\"
"c:\abc\def" -> "c:\"
"C:\Path\File[12]" -> "C:\Path\File"
"C:\Path\File.txt" -> "C:\Path\File.txt"
"C:\Path\[3].txt" -> "C:\Path\[3].txt"
인터넷으로 접근한 임시파일들은 [#]과 같은 식으로 번호가 뒤에 붙는데 그러한 임시 번호를 제거한다.
"c:\program files\test.txt" -> "%ProgramFiles%\test.txt"
"c:\abc\def" -> "%SystemDrive%\abc\def"
'IT/Programming > WinAPI' 카테고리의 다른 글
(WinAPI/MFC) GUI 프로그래밍을 하면서 콘솔을 임의로 띄워 테스트하기 (0) | 2013.10.17 |
---|---|
(WinAPI) editbox 에 줄바꿈 삽입이 안될 때 (0) | 2013.10.16 |
TreeView CommonController 사용시 주의할 점 (0) | 2013.09.06 |
(WinAPI) 문자열 함수(멀티바이트->유니코드->TCHAR) (0) | 2013.07.08 |
TCHAR 문자열을 printf() 할 때 발생하는 문제점의 원인 (0) | 2013.07.08 |