В чем разница между ATL и WTL?
Я знаю, что "WTL основан на ATL", но что это означает на практике?
Является ли ATL подмножеством WTL с точки зрения возможностей? (то есть ВСЕ ли функции в ATL также присутствуют в WTL?) Я заметил, что Википедия утверждает, что состояние разработки ATL является "текущим", тогда как последний выпуск WTL относится к середине 2009 года. Означает ли это, что если я захочу написать программное обеспечение для Windows 7 с использованием Glass/Aero и других функций Windows 7, я не смогу это сделать с помощью WTL? А как насчет ATL?
Есть ли разница в производительности / памяти при написании программ в ATL против WTL?
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, чтобы было полезно создавать приложения с использованием только бесплатных инструментов.
Да. WTL основывается на ATL. Однако для вызова ATL подмножество является неправильным. ATL сам по себе является альтернативой, основанной на шаблонах, подходу MFC к программированию в ОС Windows. Там намного меньше раздувания кода. ATL имеет дело почти со всем, кроме реальных окон, диалогов и т. Д.
WTL является шаблонной альтернативой модели управления окнами MFC так же, как ATL предоставляет альтернативу другим службам Windows. WTL нужен ATL. А не наоборот.
Статьи Данна о codeproject дают довольно хороший обзор WTL.
WTL для программистов MFC, часть I - Классы графического интерфейса ATL - первые в серии. Навигационные ссылки на другие статьи серии находятся внизу каждой.
ATL был создан для элементов управления ActiveX, то есть элементов управления, которые существуют в независимом приложении. WTL предназначен для заполнения дыр в ATL, предоставляя классы для самого приложения. Они предназначены для совместного использования.