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

Name Description
Register Registers the window class.

Data Members

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.

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.

See also

CComControl Class
Class Overview