窗口类宏

这些宏定义窗口类实用工具。

名称 描述
DECLARE_WND_CLASS 允许指定新窗口类的名称。
DECLARE_WND_CLASS2 (Visual Studio 2017) 允许指定新窗口类的名称以及新类将使用其窗口过程的封闭类的名称。
DECLARE_WND_SUPERCLASS 允许指定新窗口类基于的现有窗口类的名称。
DECLARE_WND_CLASS_EX 允许指定类的参数。

要求

标头:atlwin.h

DECLARE_WND_CLASS

允许指定新窗口类的名称。 将此宏置于 ATL ActiveX 控件的控件类中。

DECLARE_WND_CLASS( WndClassName )

参数

WndClassName
[in] 新窗口类的名称。 如果为 NULL,ATL 将生成窗口类名称。

注解

如果正在使用 /permissive - 编译器选项,则 DECLARE_WND_CLASS 将导致编译器错误;请改用 DECLARE_WND_CLASS2。

DECLARE_WND_CLASS 允许指定由 CWndClassInfo 管理其信息的新窗口类的名称。 DECLARE_WND_CLASS 通过实现以下静态函数来定义新窗口类:

static CWndClassInfo& GetWndClassInfo();

DECLARE_WND_CLASS 为新窗口指定以下样式:

  • CS_HREDRAW

  • CS_VREDRAW

  • CS_DBLCLKS

DECLARE_WND_CLASS 还指定默认窗口的背景色。 使用 DECLARE_WND_CLASS_EX 宏提供自己的样式和背景色。

CWindowImpl 使用 DECLARE_WND_CLASS 宏基于新窗口类创建窗口。 若要重写此行为,请使用 DECLARE_WND_SUPERCLASS 宏,或提供自己的 GetWndClassInfo 函数实现。

若要详细了解如何在 ATL 中使用窗口,请参阅 ATL 窗口类一文。

DECLARE_WND_CLASS2

(Visual Studio 2017) 类似于 DECLARE_WND_CLASS,但具有额外参数,可避免使用 /permissive- 选项进行编译时出现依赖名称错误。

DECLARE_WND_CLASS2( WndClassName, EnclosingClass )

参数

WndClassName
[in] 新窗口类的名称。 如果为 NULL,ATL 将生成窗口类名称。

EnclosingClass
[in] 包含新窗口类的窗口类的名称。 不能为 NULL。

备注

如果使用 /permissive- 选项,则 DECLARE_WND_CLASS 将导致编译错误,因为它包含依赖名称。 DECLARE_WND_CLASS2 要求显式命名此宏所使用的类,并且不会在 /permissive- 标志下导致错误。 否则,此宏与 DECLARE_WND_CLASS 相同。

DECLARE_WND_SUPERCLASS

允许指定类的参数。 将此宏置于 ATL ActiveX 控件的控件类中。

DECLARE_WND_SUPERCLASS( WndClassName, OrigWndClassName )

参数

WndClassName
[in] 将超类 OrigWndClassName 的窗口类的名称。 如果为 NULL,ATL 将生成窗口类名称。

OrigWndClassName
[in] 现有窗口类的名称。

注解

此宏允许指定将超类现有窗口类的窗口类的名称。 CWndClassInfo 管理超类的信息。

DECLARE_WND_SUPERCLASS 实现以下静态函数:

static CWndClassInfo& GetWndClassInfo();

默认情况下,CWindowImpl 使用 DECLARE_WND_CLASS 宏基于新窗口类创建窗口。 通过在 CWindowImpl 派生类中指定 DECLARE_WND_SUPERCLASS 宏,窗口类将基于现有类,但将使用窗口过程。 此方法称为超类化。

除了使用 DECLARE_WND_CLASS 和 DECLARE_WND_SUPERCLASS 宏外,还可以使用自己的实现重写 GetWndClassInfo 函数。

若要详细了解如何在 ATL 中使用窗口,请参阅 ATL 窗口类一文。

DECLARE_WND_CLASS_EX

允许指定新窗口类基于的现有窗口类的名称。 将此宏置于 ATL ActiveX 控件的控件类中。

DECLARE_WND_CLASS_EX( WndClassName, style, bkgnd )

参数

WndClassName
[in] 新窗口类的名称。 如果为 NULL,ATL 将生成窗口类名称。

style
[in] 窗口的样式。

bkgnd
[in] 窗口背景色。

备注

此宏允许指定由 CWndClassInfo 管理其信息的新窗口类的类参数。 DECLARE_WND_CLASS_EX 通过实现以下静态函数来定义新窗口类:

static CWndClassInfo& GetWndClassInfo();

如果要使用默认样式和背景色,请使用 DECLARE_WND_CLASS 宏。 若要详细了解如何在 ATL 中使用窗口,请参阅 ATL 窗口类一文。

另请参阅