CWindowImpl Class
This class provides methods for creating or subclassing a window.
template < class T, class TBase = CWindow, class TWinTraits = CControlWinTraits > class ATL_NO_VTABLE CWindowImpl : public CWindowImplBaseT< TBase, TWinTraits >
Parameters
- T
-
Your class, derived from CWindowImpl.
- TBase
-
The base class of your new class. The default base class is CWindow.
- TWinTraits
-
A traits class that defines styles for your window. The default is CControlWinTraits.
CWindowImpl allows you to create a new window or subclass an existing window. CWindowImpl's window procedure uses a message map to direct messages to the appropriate handlers.
CWindowImpl::Create creates a new window based on the window class information managed by CWndClassInfo. CWindowImpl contains the DECLARE_WND_CLASS macro, which means CWndClassInfo will register a new window class. If you want to superclass an existing window class, derive your class from CWindowImpl and include the DECLARE_WND_SUPERCLASS macro. In this case, CWndClassInfo will register a window class that is based on an existing class but uses CWindowImpl::WindowProc. For example:
class CMyWindow : CComControl<CMyWindow>, ...
// CComControl derives from CWindowImpl
{
public:
// 1. The NULL parameter means ATL will generate a
// name for the superclass
// 2. The "EDIT" parameter means the superclass is
// based on the standard Windows Edit box
DECLARE_WND_SUPERCLASS(NULL, "EDIT")
...
};
Note |
|---|
| Because CWndClassInfo manages the information for a single window class, each window created through an instance of CWindowImpl will be based on the same window class. |
CWindowImpl also supports window subclassing. The SubclassWindow method attaches an existing window to the CWindowImpl object and changes the window procedure to CWindowImpl::WindowProc. Each instance of CWindowImpl can subclass a different window.
Note |
|---|
| For any given CWindowImpl object, call either Create or SubclassWindow. You should not invoke both methods on the same object. |
In addition to CWindowImpl, ATL provides CContainedWindow to create a window contained within another object.
The base class destructor (~CWindowImplRoot) ensures that the window is gone before the object is destroyed.
CWindowImpl derives from CWindowImplBaseT, which derives from CWindowImplRoot, which in turn derives from TBase and CMessageMap.
| For more information about | See |
|---|---|
| Creating controls | |
| Using windows in ATL | |
| ATL Project Wizard | |
| Windows |
Note