ATL is used to write COM programs, the CLR is the common language runtime of. NET, MFC refers to the MFC class Library, MFC programs are used in these class libraries to make programs, WIN32 General is not MFC, using API functions compiled by the program. MFC, ATL, and the CLR are the 3 largest libraries built into VC2005, covering a variety of Windows development methods and development applications. Of course there are more than 3 libraries for C + + development, but these 3 are recommended by Microsoft. At the level of programming, WIN32 is the lowest, followed by MFC. Then Clr.win32 WinAPI MFC MFC Class Library CLR. NET Library
1. WIN32 routine is not MFC, using the API function of the program.
2. The MFC library has many years of history, and MFC is a simple package based on the Windows API. Its core architecture is based on the "Document/view" architecture (a concept that was thought to be current before 20) and a message flow mechanism. The library has not changed much since VC6 began. The scope of MFC encapsulation includes Gui,io, database, network programming and so on. However, many of the system development necessary APIs are not encapsulated, so that developers generally on the basis of MFC to handle their own business-related tasks. In fact many people use MFC just to take advantage of its GUI part of the package. This library GUI process is not very efficient, and sometimes the code associated with UI processing takes up half or more of the entire project. In general, this is an old-time library, and Microsoft has not made major improvements or updates since 10, except tinkering with MFC. If you ask MFC how long will you live? Well, that's a problem. If one day MFC is gone, Microsoft does not have any other products at this level to replace it.
3. The CLR library is a library that is published along with the. Net Framework 2 and VS2005, and its core implementation is the same as c#,vb.net. are based on the common language runtime: NETFramework encapsulates a large number of system APIs that are available to developers in the form of class libraries. The CLR libraries in C + + can use parts that are related to native code, and currently C + + does not involve the ASP. C + + in the CLR Library has subverted many of the standard C + + traditions, and even that C + + is not C + +, but it's just a C + + skinning thing. C + + is more like C # or a similar language here. So this is not called C + +, but is called C + +/CLI, it is worth mentioning that the section about C + +/CLI is not accepted by standard C + +, recently Microsoft's proposal for C + + C + + Standardization Committee rejected. So C + +/CLI is now Microsoft's opinion.
4.ATL is used to write COM programs. ATL library seems to be very old, at least when I come into contact with the VC has its existence. This library can be traced back to COM components because the purpose of ATL is to help developers better interact with COM. When did COM have this thing? I do not know, I only know that there is a 16-bit version of COM, when Windows upgraded to 32-bit, COM also upgraded to 32-bit. COM, like some packaged class objects, provides some standard methods for you to use by encapsulating the system's APIs. So there are components in the system that you can use in ATL. So ATL can not only write ActiveX, but also can have window, there can be other. Sometimes some of the features Microsoft publishes are published in the form of COM components, such as MSXML, which is not appropriate for ATL to handle. But ATL is not very strong in handling the UI, so Microsoft engineers have an open-source UI framework called WTL, designed to handle the UI. The disadvantage of the ATL library is that, as a template library, it can be a hassle when errors occur, and error hints will irrelevant
VS2008 ATL CLR MFC Win32 Differences