Question

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?

Was it helpful?

Solution

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.

OTHER TIPS

Yes. WTL builds on ATL. However, to call ATL a subset is incorrect. ATL stands on its own as a template based alternative to the MFC approach of programming on Windows OSs. There is much less code bloat. ATL deals with pretty much everything except actual windows, dialogs, etc.

WTL is a template alternative to the MFC windowing model in the same way that ATL provides an alternative to other windows services. WTL needs ATL. Not the other way around.

The Dunn articles on codeproject provide a pretty good review of WTL.

WTL for MFC Programmers, Part I - ATL GUI Classes is the first in the series. Navigation links the to other articles in the series are at the bottom of each one.

ATL was created for ActiveX controls, i.e. controls that exist in an independent application. WTL is meant to fill in the holes in ATL, by providing classes for the application itself. They are meant to be used together.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top