윈도우즈 프로그래머로 회귀한지 만 1주 -_-;
SHCreateDirectory 를 이해할 수 없다는 에러메시지가 계속 디벼져서 이거때문에 이틀을 홀랑 날려먹고
구글검색하다가 발견한 한 글에 영감을 얻어서, ShlObj.h 를 보게 되었다.
역시나 문제는 요놈 때문이었다.
#if (_WIN32_IE >= 0x0601)
SHSTDAPI_(int) SHCreateDirectory(HWND hwnd, LPCWSTR pszPath);
#endif // (_WIN32_IE >= 0x0601)
MSDN에 보면
IE 6.0의 경우 Minimum system required로...
_WIN32_IE>=0x0600 를 써야 하는데..
Platform SDK를 Windows 2003 용을 써서 그런지...
_WIN32_IE>=0x0601로 걸려 있어서 이것 때문에 코드가 인식을 못하고 있는 것 같다.
(참고로, 프로젝트에는 _WIN32_IE는 선언되어 있지 않았다)
그래서 걍 Platform SDK를 VS.NET 에서 기본적으로 깔려 있는 것으로 바꿔 놓았다.
(기본적으로 깔려 있는 Platform SDK에는 define이 걸려 있지 않고 걍 선언만 되어 있음!)
역시 마이크로소프트 프로그래밍은 문서를 디벼 파아 한다는 사실을 깨달았다...
참고로 _WIN32_WINNT, _WIN32_WINDOWS 를 각 소스 코드 or 프로젝트 환경에 define 하여서 minimum system required를 정의할 수 있다! 자세한 것은 MSDN 문서 참고!
SHCreateDirectory 를 이해할 수 없다는 에러메시지가 계속 디벼져서 이거때문에 이틀을 홀랑 날려먹고
구글검색하다가 발견한 한 글에 영감을 얻어서, ShlObj.h 를 보게 되었다.
역시나 문제는 요놈 때문이었다.
#if (_WIN32_IE >= 0x0601)
SHSTDAPI_(int) SHCreateDirectory(HWND hwnd, LPCWSTR pszPath);
#endif // (_WIN32_IE >= 0x0601)
MSDN에 보면
IE 6.0의 경우 Minimum system required로...
_WIN32_IE>=0x0600 를 써야 하는데..
Platform SDK를 Windows 2003 용을 써서 그런지...
_WIN32_IE>=0x0601로 걸려 있어서 이것 때문에 코드가 인식을 못하고 있는 것 같다.
(참고로, 프로젝트에는 _WIN32_IE는 선언되어 있지 않았다)
그래서 걍 Platform SDK를 VS.NET 에서 기본적으로 깔려 있는 것으로 바꿔 놓았다.
(기본적으로 깔려 있는 Platform SDK에는 define이 걸려 있지 않고 걍 선언만 되어 있음!)
역시 마이크로소프트 프로그래밍은 문서를 디벼 파아 한다는 사실을 깨달았다...
참고로 _WIN32_WINNT, _WIN32_WINDOWS 를 각 소스 코드 or 프로젝트 환경에 define 하여서 minimum system required를 정의할 수 있다! 자세한 것은 MSDN 문서 참고!
