了解窗口特征

窗口特征类提供了一个简单的方法,以便标准化用于创建 ATL 窗口对象的样式。 CWindowImpl 和其他 ATL 窗口类接受窗口特征作为模板参数,以此作为在类级别提供默认窗口样式的方式。

如果窗口实例的创建者在调用 Create 时未显式提供样式,则可以使用特征类来确保使用正确的样式创建窗口。 甚至可以确保为该窗口类的所有实例设置一些样式,而且允许根据每个实例来设置其他样式。

ATL 窗口特征模板

ATL 提供了两个窗口特征模板,可用于在编译时使用模板参数来设置默认样式。

说明
CWinTraits 如果要提供默认窗口样式,且仅在调用 Create 中未指定其他样式时使用,请使用此模板。 运行时提供的样式优先于编译时设置的样式。
CWinTraitsOR 如果要指定必须始终为窗口类设置的样式,请使用此类。 将运行时提供的样式与使用按位 OR 运算符在编译时设置的样式相结合。

除了这些模板之外,ATL 还为常用窗口样式组合提供许多 CWinTraits 模板的预定义专用化。 有关详情,请参阅 CWinTraits 参考文档。

自定义窗口特征

在专用化 ATL 提供的模板还不够而且需要创建自己的特征类的罕见情况下,只需创建实现两个静态函数的类:GetWndStyleGetWndStyleEx

static DWORD GetWndStyle(DWORD dwStyle);
static DWORD GetWndExStyle(DWORD dwExStyle);

将在运行时给每个函数传递一些样式值,可用于生成新的样式值。 如果将窗口特征类用作 ATL 窗口类的模板参数,传递给这些静态函数的样式值将是作为样式参数传递给 Create 的任何值。

另请参阅

窗口类