ATL applies the same principles of efficiency and flexibility that were originally developed for COM to another part of the Windows API: User32. This support takes the form of a small set of windowing classes. CWindow, which forms the root class of the windowing hierarchy, provides a large number of inline wrapper functions for manipulating an existing HWND. To create a new window class, or to superclass an existing one and handle messages from windows of that class, ATL provides CWindowImpl. CDialogImpl provides the same functionality for dialog boxes, both modal and modeless. To subclass child windows and manage messages in the parent, ATL provides CContainedWindow. These classes can be used in standalone applications or in COM servers. For COM servers that expose COM controls, the windowing classes form the core of how input and output are managed, as discussed in the following chapter.