CWndClassInfo Class
The new home for Visual Studio documentation is Visual Studio 2017 Documentation on docs.microsoft.com.
The latest version of this topic can be found at 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.
Syntax
class CWndClassInfo
Members
Public Methods
Register | Registers the window class. |
Data Members
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. |
Remarks
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.
Requirements
Header: atlwin.h
CWndClassInfo::m_atom
Contains the unique identifier for the registered window class.
ATOM m_atom;
CWndClassInfo::m_bSystemCursor
If TRUE, the system cursor resource will be loaded when the window class is registered.
BOOL m_bSystemCursor;
Remarks
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.
CWndClassInfo::m_lpszCursorID
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;
Remarks
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.
CWndClassInfo::m_lpszOrigName
Contains the name of an existing window class.
LPCTSTR m_lpszOrigName;
Remarks
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.
CWndClassInfo::m_szAutoName
Holds the name of the window class.
TCHAR m_szAutoName[13];
Remarks
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.
CWndClassInfo::m_wc
Maintains the window class information in a WNDCLASSEX structure.
WNDCLASSEX m_wc;
Remarks
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.
CWndClassInfo::pWndProc
Points to the window procedure of an existing window class.
WNDPROC pWndProc;
Remarks
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.
CWndClassInfo::Register
Called by CWindowImpl::Create to register the window class if it has not yet been registered.
ATOM Register(WNDPROC* pProc);
Parameters
pProc
[out] Specifies the original window procedure of an existing window class.
Return Value
If successful, an atom that uniquely identifies the window class being registered. Otherwise, 0.
Remarks
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
.