В чем разница между ATL и WTL? - PullRequest
9 голосов
/ 19 октября 2011

Я знаю, что "WTL основан на ATL", но что это означает на практике?

Является ли ATL подмножеством WTL с точки зрения возможностей?(то есть ВСЕ ли функции в ATL также присутствуют в WTL?) Я заметил, что Википедия утверждает, что состояние разработки ATL является «текущим», тогда как последний выпуск WTL относится к середине 2009 года.Означает ли это, что если я захочу написать программное обеспечение для Windows 7 с использованием Glass / Aero и других функций Windows 7, я не смогу это сделать с помощью WTL?А как насчет ATL?

Есть ли разница в производительности и памяти при написании программ в ATL против WTL?

Ответы [ 3 ]

15 голосов
/ 19 октября 2011

ATL - это библиотека Microsoft C ++, которая в основном реализует базу COM. Часть этого также нацелена на элементы управления ActiveX (что определенно не является основной целью всей библиотеки), а также охватывает связанные вещи, такие как тонкая оболочка HWND (CWindow класс), классы манипулирования строками CString, CStringA, CStringW, преобразование ANSI / Unicode и т. Д.

Часть ATL была разветвлена ​​в библиотеку с открытым исходным кодом Сервер ATL , размещенную на CodePlex. Вы все еще можете найти документацию для этого на MSDN, выбрав версию ATL назад к версиям Visual Studio 2002/2003/2005. В основном это касается веб-разработки, IIS, а также таких вещей, как регулярные выражения.

WTL изначально предполагалось использовать с ATL и охватывает аспекты, связанные с GUI, такие как тонкие обертки над общими элементами управления, объект GDI, структура графического интерфейса приложения, модель кадра / видео, пользовательские элементы управления. Он предоставил класс CString до того, как ATL начал это делать, и это одна из вещей, где две библиотеки перекрываются. После того, как WTL открыл исходный код и Microsoft предоставила бесплатную версию Visual Studio, WTL также был обновлен для использования без ATL, чтобы было полезно создавать приложения с использованием только бесплатных инструментов.

7 голосов
/ 09 ноября 2012

Да.WTL основывается на ATL.Однако для вызова ATL подмножество является неправильным.ATL сам по себе является альтернативой, основанной на шаблонах, подходу MFC к программированию в ОС Windows.Там намного меньше раздувания кода.ATL имеет дело почти со всем, кроме реальных окон, диалогов и т. Д.

WTL - это шаблонная альтернатива модели управления окнами MFC, точно так же, как ATL предоставляет альтернативу другим службам Windows.WTL нужен ATL.Не наоборот.

Статьи Dunn по codeproject предоставляют довольно хороший обзор WTL.

WTL для программистов MFC, часть I - Классы графического интерфейса ATL первый в серии.Навигационные ссылки на другие статьи серии находятся внизу каждой.

2 голосов
/ 19 октября 2011

ATL был создан для элементов управления ActiveX, то есть элементов управления, которые существуют в независимом приложении. WTL предназначен для заполнения дыр в ATL, предоставляя классы для самого приложения. Они предназначены для совместного использования.

...