이건 Q&A에 이미 방법이 나와 있는데, 혹 모르시거나 필요하신 분을 위해 Q&A에 있는거 발췌해서 올립니다.
shlobj.h 은 셀컨트롤을 위해 include 해야할 일이 많죠. 하지만 vcl.h 와
같이 있으면 에러로 컴파일이 되지 않습니다.
#include <shlobj.h> 는
#include <vcl.h> 와 같이 컴파일을 할수 없습니다.
shlobj.h 에 있는 내용이 vcl.h의 내용과 중복되기 때문입니다.
그래서 유닛을 별도로 빼서 shlobj.h 만 include 해서 셀관련 기능을 코딩할 수 있으나
이왕이면 vcl.h 과 같이 컴파일되면 좋겠죠.
이를 해결하는 첫번째 방법
#ifndef NO_WIN32_LEAN_AND_MEAN
#define NO_WIN32_LEAN_AND_MEAN
#endif
#include <shlobj.h>
#include <vcl.h>
#pragma hdrstop
이를 해결하는 두번째 방법
#include <vcl.h>
#define FVSHOWINFO xxFVSHOWINFOxx
#define FOLDERSETTINGS xxFOLDERSETTINGSxx
#define DESKBANDINFO xxDESKBANDINFOxx
#define SHELLFLAGSTATE xxSHELLFLAGSTATExx
#include <shlobj.h>
#pragma hdrstop
두번째 방법은 헤더파일중에
#define NO_WIN32_LEAN_AND_MEAN
가 있으면 문제가 생기는 경우에 사용할 수 있습니다.
두번째 방법을 잘 보면, 헤더파일 include 시 중복선언(Multiple declaration)을
어떻게 피해가는지 보여주는 트릭을 알수 있습니다.
그럼...
|