I know "WTL builds on ATL", but what does that mean in practical terms?
Is ATL a subset of WTL in terms of features? (i.e. are ALL features in ATL also present in WTL?) I notice Wikipedia states ATL's development status is "current" whereas WTL's most recent release is from mid-2009. Does that mean if I want to write Windows 7 software using Glass/Aero and other Windows 7 features then I can't do it with WTL? What about ATL?
Is there any performance/memory difference in writing programs in ATL vs WTL?
ATL is the Microsoft C++ library which primarily implements COM base. A part of it also targets ActiveX controls (which is definitely not a primary goal of the whole library) and it also covers related stuff such as thin wrapper of HWND
(CWindow
class), string manipulation classes CString
, CStringA
, CStringW
, ANSI/Unicode conversion etc.
A part of ATL was branched off into open source ATL Server library hosted on CodePlex. You can still find some documentation for it on MSDN choosing ATL version back to Visual Studio versions 2002/2003/2005. This mostly covers web development, IIS stuff, and also includes things like regular expressions.
WTL was originally supposed to be used with ATL, and covers GUI related aspects, such as thin wrappers over common controls, GDI object, application GUI framework, frame/video model, custom controls. It provided CString
class before ATL started doing so, and this is one of the things where the two libraries overlap. After WTL went opens source and Microsoft provided free version of Visual Studio, WTL was also updated to be used without ATL so that it could be helpful to build apps using free only tools.