Window Class Macros
These macros define window class utilities.
Name | Description |
---|---|
DECLARE_WND_CLASS | Allows you to specify the name of a new window class. |
DECLARE_WND_CLASS2 | (Visual Studio 2017) Allows you to specify the name of a new window class and the enclosing class whose window procedure the new class will use. |
DECLARE_WND_SUPERCLASS | Allows you to specify the name of an existing window class on which a new window class will be based. |
DECLARE_WND_CLASS_EX | Allows you to specify the parameters of a class. |
Requirements
Header: atlwin.h
DECLARE_WND_CLASS
Allows you to specify the name of a new window class. Place this macro in an ATL ActiveX control's control class.
DECLARE_WND_CLASS( WndClassName )
Parameters
WndClassName
[in] The name of the new window class. If NULL, ATL will generate a window class name.
Remarks
If you are using the /permissive- compiler option, then DECLARE_WND_CLASS will cause a compiler error; use DECLARE_WND_CLASS2 instead.
DECLARE_WND_CLASS allows you to specify the name of a new window class whose information will be managed by CWndClassInfo. DECLARE_WND_CLASS defines the new window class by implementing the following static function:
static CWndClassInfo& GetWndClassInfo();
DECLARE_WND_CLASS specifies the following styles for the new window:
CS_HREDRAW
CS_VREDRAW
CS_DBLCLKS
DECLARE_WND_CLASS also specifies the default window's background color. Use the DECLARE_WND_CLASS_EX macro to provide your own styles and background color.
CWindowImpl uses the DECLARE_WND_CLASS macro to create a window based on a new window class. To override this behavior, use the DECLARE_WND_SUPERCLASS macro, or provide your own implementation of the GetWndClassInfo function.
For more information about using windows in ATL, see the article ATL Window Classes.
DECLARE_WND_CLASS2
(Visual Studio 2017) Similar to DECLARE_WND_CLASS, but with an extra parameter that avoids a dependent name error when compiling with the /permissive- option.
DECLARE_WND_CLASS2( WndClassName, EnclosingClass )
Parameters
WndClassName
[in] The name of the new window class. If NULL, ATL will generate a window class name.
EnclosingClass
[in] The name of the window class that encloses the new window class. Cannot be NULL.
Remarks
If you are using the /permissive- option, then DECLARE_WND_CLASS will cause a compilation error because it contains a dependent name. DECLARE_WND_CLASS2 requires you to explicitly name the class that this macro is used in and does not cause the error under the /permissive- flag. Otherwise this macro is identical to DECLARE_WND_CLASS.
DECLARE_WND_SUPERCLASS
Allows you to specify the parameters of a class. Place this macro in an ATL ActiveX control's control class.
DECLARE_WND_SUPERCLASS( WndClassName, OrigWndClassName )
Parameters
WndClassName
[in] The name of the window class that will superclass OrigWndClassName. If NULL, ATL will generate a window class name.
OrigWndClassName
[in] The name of an existing window class.
Remarks
This macro allows you to specify the name of a window class that will superclass an existing window class. CWndClassInfo manages the information of the superclass.
DECLARE_WND_SUPERCLASS implements the following static function:
static CWndClassInfo& GetWndClassInfo();
By default, CWindowImpl uses the DECLARE_WND_CLASS macro to create a window based on a new window class. By specifying the DECLARE_WND_SUPERCLASS macro in a CWindowImpl
-derived class, the window class will be based on an existing class but will use your window procedure. This technique is called superclassing.
Besides using the DECLARE_WND_CLASS and DECLARE_WND_SUPERCLASS macros, you can override the GetWndClassInfo function with your own implementation.
For more information about using windows in ATL, see the article ATL Window Classes.
DECLARE_WND_CLASS_EX
Allows you to specify the name of an existing window class on which a new window class will be based. Place this macro in an ATL ActiveX control's control class.
DECLARE_WND_CLASS_EX( WndClassName, style, bkgnd )
Parameters
WndClassName
[in] The name of the new window class. If NULL, ATL will generate a window class name.
style
[in] The style of the window.
bkgnd
[in] The background color of the window.
Remarks
This macro allows you to specify the class parameters of a new window class, whose information will be managed by CWndClassInfo. DECLARE_WND_CLASS_EX defines the new window class by implementing the following static function:
static CWndClassInfo& GetWndClassInfo();
If you want to use the default styles and background color, use the DECLARE_WND_CLASS macro. For more information about using windows in ATL, see the article ATL Window Classes.