본문 바로가기

Library/Windows Programming

Windows Template Library Installation

사실, WTL과 같은 고전적인 C++ 라이브러리는 MS 입장에서는 더 이상 강력하게 추진할만한 것은 아니다. 무엇보다 .NET이란 대단한 물건을 가지게 되었기 때문인데, 기존의 MFC와 ATL 조합이 복잡하기는 해도 기존의 요구는 그런대로 처리할 수 있기 때문이다. MS에서 WTL을 공식적으로 지원하지 않으며, 오픈 소스로 공개한 것은 위와 같은 이유 때문이다. VMS 유전자를 이어받은 NT 기반 이후의 윈도우들이, 그 특성상 개발 문화가 단일화되고, 전문적이며, 무거워지는 뚜렷한 경향을 보이는 것을 생각한다면, 이러저러한 이유로 오픈 소스로 공개된 WTL은 Windows 최후의 캐주얼한 개발 문화의 상징이라 해도 될 것 같다.

ATL은 COM 컴포넌트를 만드는데 대단히 유용한 툴이지만, 전통적인 윈도우질(원서에는 Windowing이라 쓰는 것을, 개발자들이 장난스럽게 표현하는 말이다)에는 취약하다. 무엇보다 MFC의 메세지맵처럼 AppWizard가 자동으로 핸들러를 작성해주는 것도 아니고, 그런 래퍼가 없다보니 SDK를 사용하던 방식대로, WPARAM, LPARAM의 값을 직접 해석해야 한다. WTL은 ATL의 이런 부족한 '윈도우질'을 보강해주며, MFC가 제공하는 기능의 대부분을 제공한다. Feature Pack의 MFCNext에서 제공하는 리본 인터페이스에 대한 지원은 없지만, 사실 MFC의 리본 인터페이스도 Office 2007 팀의 오리지널 리본 인터페이스를 가져온 것이 아니라 BCG Soft의 툴킷을 가져온 것이다.

즉, WTL은 ATL을 보강하는 성격의 라이브러리이기 때문에, 반드시 ATL 라이브러리가 있어야 한다. Visual C++ 6.0 사용자라면 Windows SDK를 설치해야겠지만, 이제 Visual C++ 6.0으로는 Windows SDK를 컴파일하는 것도 힘들 것이다. VC6을 쓰는지, VC7 이상을 쓰는지에 따라서 CAppModule의 사용 방법이 조금 달라진다. 그리고, MFC가 필요하지 않고, Visual Studio를 구입할 여력이 없다면 Visual Studio Express Edition에 Windows SDK, WTL을 조합해서 사용할 수 있다.

WTL을 설치하기 위해서는, http://sourceforge.net/projects/wtl/에서 WTL 8.0을 다운 받고, 적당한 폴더에 압축을 풀기만 하면 된다. 8.0 버전은 7.5와 크게 다르지 않은데, Vista 지원이 추가되었다. 즉, Vista Aero 인터페이스에 대응하는 컨트롤을 사용할 수 있도록 지원이 추가된 버전이다. Visual Studio 2003 이상을 사용한다면 프로젝트 템플릿에 ATL/WTL 프로젝트를 추가해주는 셋업 파일도 설치할 수 있지만, 그냥 include 폴더만 사용해도 아무런 문제는 없다. 각자 사용하는 include 폴더에 WTL 폴더를 하나 만들어서 여기에 이 헤더 파일들을 복사하고 프로젝트 설정에서 이 폴더를 참조해도 상관없다.


WTL을 사용하기 위한 준비는, 놀랍게도 이게 전부이다!