CWndClassInfo Class
This class provides methods for registering information for a window class.
Important
This class and its members cannot be used in applications that execute in the Windows Runtime.
class CWndClassInfo
Name | Description |
---|---|
Register | Registers the window class. |
Name | Description |
---|---|
m_atom | Uniquely identifies the registered window class. |
m_bSystemCursor | Specifies whether the cursor resource refers to a system cursor or to a cursor contained in a module resource. |
m_lpszCursorID | Specifies the name of the cursor resource. |
m_lpszOrigName | Contains the name of an existing window class. |
m_szAutoName | Holds an ATL-generated name of the window class. |
m_wc | Maintains window class information in a WNDCLASSEX structure. |
pWndProc | Points to the window procedure of an existing window class. |
CWndClassInfo
manages the information of a window class. You typically use CWndClassInfo
through one of three macros, DECLARE_WND_CLASS, DECLARE_WND_CLASS_EX, or DECLARE_WND_SUPERCLASS, as described in the following table:
Macro | Description |
---|---|
DECLARE_WND_CLASS | CWndClassInfo registers information for a new window class. |
DECLARE_WND_CLASS_EX | CWndClassInfo registers information for a new window class, including the class parameters. |
DECLARE_WND_SUPERCLASS | CWndClassInfo registers information for a window class that is based on an existing class but uses a different window procedure. This technique is called superclassing. |
By default, CWindowImpl includes the DECLARE_WND_CLASS
macro to create a window based on a new window class. DECLARE_WND_CLASS provides default styles and background color for the control. If you want to specify the style and background color yourself, derive your class from CWindowImpl
and include the DECLARE_WND_CLASS_EX macro in your class definition.
If you want to create a window based on an existing window class, derive your class from CWindowImpl
and include the DECLARE_WND_SUPERCLASS macro in your class definition. For example:
class ATL_NO_VTABLE CMyWindow :
OtherInheritedClasses
public 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, _T("EDIT"))
// Remainder of class declaration omitted
For more information about window classes, see Window Classes in the Windows SDK.
For more information about using windows in ATL, see the article ATL Window Classes.
Header: atlwin.h
Contains the unique identifier for the registered window class.
ATOM m_atom;
If TRUE, the system cursor resource will be loaded when the window class is registered.
BOOL m_bSystemCursor;
Otherwise, the cursor resource contained in your module will be loaded.
CWndClassInfo
uses m_bSystemCursor
only when the DECLARE_WND_CLASS (the default in CWindowImpl) or the DECLARE_WND_CLASS_EX macro is specified. In this case, m_bSystemCursor
is initialized to TRUE. For more information, see the CWndClassInfo overview.
Specifies either the name of the cursor resource or the resource identifier in the low-order word and zero in the high-order word.
LPCTSTR m_lpszCursorID;
When the window class is registered, the handle to the cursor identified by m_lpszCursorID
is retrieved and stored by m_wc.
CWndClassInfo
uses m_lpszCursorID
only when the DECLARE_WND_CLASS (the default in CWindowImpl) or the DECLARE_WND_CLASS_EX macro is specified. In this case, m_lpszCursorID
is initialized to IDC_ARROW. For more information, see the CWndClassInfo overview.
Contains the name of an existing window class.
LPCTSTR m_lpszOrigName;
CWndClassInfo
uses m_lpszOrigName
only when you include the DECLARE_WND_SUPERCLASS macro in your class definition. In this case, CWndClassInfo
registers a window class based on the class named by m_lpszOrigName
. For more information, see the CWndClassInfo overview.
Holds the name of the window class.
TCHAR m_szAutoName[13];
CWndClassInfo
uses m_szAutoName
only if NULL is passed for the WndClassName
parameter to DECLARE_WND_CLASS, the DECLARE_WND_CLASS_EX or DECLARE_WND_SUPERCLASS. ATL will construct a name when the window class is registered.
Maintains the window class information in a WNDCLASSEX structure.
WNDCLASSEX m_wc;
If you have specified the DECLARE_WND_CLASS (the default in CWindowImpl) or the DECLARE_WND_CLASS_EX macro, m_wc
contains information about a new window class.
If you have specified the DECLARE_WND_SUPERCLASS macro, m_wc
contains information about a superclass — a window class that is based on an existing class but uses a different window procedure. m_lpszOrigName and pWndProc save the existing window class's name and window procedure, respectively.
Points to the window procedure of an existing window class.
WNDPROC pWndProc;
CWndClassInfo
uses pWndProc
only when you include the DECLARE_WND_SUPERCLASS macro in your class definition. In this case, CWndClassInfo
registers a window class that is based on an existing class but uses a different window procedure. The existing window class's window procedure is saved in pWndProc
. For more information, see the CWndClassInfo overview.
Called by CWindowImpl::Create to register the window class if it has not yet been registered.
ATOM Register(WNDPROC* pProc);
pProc
[out] Specifies the original window procedure of an existing window class.
If successful, an atom that uniquely identifies the window class being registered. Otherwise, 0.
If you have specified the DECLARE_WND_CLASS (the default in CWindowImpl) or the DECLARE_WND_CLASS_EX macro, Register
registers a new window class. In this case, the pProc parameter is not used.
If you have specified the DECLARE_WND_SUPERCLASS macro, Register
registers a superclass — a window class that is based on an existing class but uses a different window procedure. The existing window class's window procedure is returned in pProc.