2011-10-19 12 views
9

Sé que "WTL se basa en ATL", pero ¿qué significa eso en términos prácticos?¿Cuál es la diferencia entre ATL y WTL?

¿ATL es un subconjunto de WTL en términos de características? (es decir, ¿TODAS las características de ATL también están presentes en WTL?) Noté que Wikipedia dice que el estado de desarrollo de ATL es "actual", mientras que la versión más reciente de WTL es de mediados de 2009. ¿Eso significa que si quiero escribir el software de Windows 7 usando Glass/Aero y otras características de Windows 7, entonces no puedo hacerlo con WTL? ¿Qué hay de ATL?

¿Existe alguna diferencia de rendimiento/memoria al escribir programas en ATL frente a WTL?

+0

¿Cuál es la diferencia entre las ballenas y los delfines? Los delfines * son * un subconjunto de cetáceos, el orden de las ballenas. WTL se basa en ATL, entonces sí ATL es un subconjunto de WTL. – 0xC0000022L

Respuesta

15

ATL es la biblioteca Microsoft C++ que implementa principalmente la base COM. Una parte también se dirige a controles ActiveX (que definitivamente no es un objetivo principal de toda la biblioteca) y también cubre cosas relacionadas como thin wrapper HWND (clase CWindow), clases de manipulación de cadenas CString, CStringA, CStringW, ANSI/Unicode conversión, etc.

Una parte de ATL se ramificó en la biblioteca de código abierto ATL Server alojada en CodePlex. Todavía puede encontrar documentación para ello en MSDN, eligiendo la versión de ATL en las versiones de Visual Studio 2002/2003/2005. Esto cubre principalmente el desarrollo web, cosas de IIS, y también incluye cosas como expresiones regulares.

Se suponía originalmente que WTL se usaría con ATL y abarca aspectos relacionados con la GUI, como envoltorios delgados sobre controles comunes, objetos GDI, marco de GUI de aplicaciones, modelo de marco/video, controles personalizados. Proporcionó la clase CString antes de que ATL comenzara a hacerlo, y esta es una de las cosas en las que las dos bibliotecas se superponen. Después de que WTL fue fuente abierta y Microsoft proporcionó la versión gratuita de Visual Studio, WTL también se actualizó para ser utilizado sin ATL, por lo que podría ser útil crear aplicaciones con herramientas gratuitas.

2

ATL se creó para los controles ActiveX, es decir, los controles que existen en una aplicación independiente. WTL está destinado a llenar los agujeros en ATL, proporcionando clases para la aplicación en sí. Están destinados a ser usados ​​juntos.

+0

Para agregar a lo que @ Mark-Ransom ha dicho: WTL es un proyecto de código abierto realizado por un empleado de Microsoft y no es un producto de Microsoft. Mientras que ATL es un producto desarrollado por Microsoft. Si desea desarrollar Win7, mejor hágalo con WPF (suponiendo que su aplicación esté basada en GUI) en lugar de usar ATL. – yasouser

7

Sí. WTL se basa en ATL. Sin embargo, llamar a ATL un subconjunto es incorrecto. ATL se destaca por sí solo como una alternativa basada en plantilla al enfoque de programación MFC en sistemas operativos Windows. Hay mucho menos código hinchado. ATL se ocupa de prácticamente todo, excepto ventanas reales, cuadros de diálogo, etc.

WTL es una alternativa de plantilla al modelo de ventanas MFC del mismo modo que ATL proporciona una alternativa a otros servicios de Windows. WTL necesita ATL. No de la otra manera.

Los artículos de Dunn en codeproject proporcionan una muy buena revisión de WTL.

WTL for MFC Programmers, Part I - ATL GUI Classes es el primero de la serie. Los enlaces de navegación a otros artículos de la serie se encuentran en la parte inferior de cada uno.

+0

¡Buena respuesta! Esto sería aún mejor si pudiera vincular a los artículos de los que está hablando. :-) Bienvenido a Stack Overflow! –

Cuestiones relacionadas