본문 바로가기

CMessageLoop

Windows Template Library Startup 3 이제 원하는 윈도우의 메세지 핸들러까지 작성했으니, 실제로 WTL 프로그램의 인스턴스화 작업을 준비해보자. PCH를 사용할 stdafx.h과 윈도우 메세지 핸들러를 구현한 mywnd.h가 준비되었다면, 다음은 MFC를 오랫동안 사용해온 사람에게는 기억에서도 흐릿할 WinMain이다. #include "stdafx.h" #include "mywnd.h" CAppModule _Module; 이제, WTL의 MFC에서의 CWinApp에 해당하는 CAppModule을 전역 변수로 선언한다. CAppModule은 ATL의 CComModule을 상속받은 것이며, CWinApp와 비슷한 역할을 하지만 그 성격은 좀 다르다. VC7 이상에서는 이것을 명시적으로 선언할 필요는 없지만, 메세지 루프를 등록하고 윈도우 메세.. 더보기
WTL을 사용할 때 주의할 점 Window Template Library(WTL)은 MFC에 비해 아주 작고 빠른 코드를 만들어 낼 수 있으며, 그 구조 또한 MFC와 비교되지 않을 정도로 깔끔하다. MFC 클래스들의 경우, CObject에서부터 개체를 상속 받기 때문에, CWnd에 이르러서는 엄청난 크기를 가진다. 즉, CWnd를 생성하는 것은 대단히 비싼 일이다. 반면, WTL은 interface / implementation이 엄격하게 분리된 구조로 설계되었다. CWnd에 해당하는 WTL의 CWindow은 사실 데이터멤버 밖에 가지고 있지 않으며, 크기가 매우 작다. 따라서, MFC처럼 CWnd 개체를 파라미터나 리턴값으로 사용하기 위해 상대적으로 TemporaryMap을 유지할 필요가 없으며, 이것은 MFC처럼 Idle 타임에.. 더보기