В чем разница между ATL и WTL?

Я знаю, что "WTL дополняет ATL", но что это означает на практике?

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

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


person user1002358    schedule 19.10.2011    source источник
comment
В чем разница между китами и дельфинами? Дельфины являются подмножеством китообразных, отряда китов. WTL строится поверх ATL, так что да, ATL является подмножеством WTL.   -  person 0xC0000022L    schedule 14.10.2014


Ответы (3)


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

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

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

person Roman R.    schedule 19.10.2011

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

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

Статьи Данна о codeproject содержат довольно хороший обзор WTL.

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

person Hamp    schedule 09.11.2012
comment
Хороший ответ! Было бы еще лучше, если бы вы могли ссылаться на статьи, о которых вы говорите. :-) Добро пожаловать в Stack Overflow! - person Sam Mussmann; 09.11.2012

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

person Mark Ransom    schedule 19.10.2011
comment
Чтобы добавить к тому, что сказал @Mark-Ransom: WTL - это проект с открытым исходным кодом, осуществляемый сотрудником Microsoft, а не продукт Microsoft. Принимая во внимание, что ATL — это продукт, разработанный Microsoft. Если вы хотите разрабатывать для Win7, лучше делайте это с помощью WPF (при условии, что ваше приложение основано на графическом интерфейсе), а не с помощью ATL. - person yasouser; 19.10.2011