Mfc 扩展控件时识别控件类型(静态、按钮、Gropbox等)

Mfc 扩展控件时识别控件类型(静态、按钮、Gropbox等),mfc,Mfc,我正在扩展MFC上的一些控件,以便在多个应用程序中使用。我有一个派生类来扩展标签和GroupBox,因为它们都是静态标签,并且只需要绘制操作 在我的派生类标签:public CWnd中,我已经正确地编写了OnEraseBkgnd和OnPaint消息处理程序。所有的东西都与标签和groupboxed配合得很好,我不介意自己画所有的东西 我的问题是,从这个派生类的角度来看,如何确定我是静态标签还是组框 当然,我可以添加一个成员变量或函数来指示控件类型,在应用程序开始时将其设置在某个位置,然后进行检查

我正在扩展MFC上的一些控件,以便在多个应用程序中使用。我有一个派生类来扩展标签和GroupBox,因为它们都是静态标签,并且只需要绘制操作

在我的派生
类标签:public CWnd
中,我已经正确地编写了
OnEraseBkgnd
OnPaint
消息处理程序。所有的东西都与标签和groupboxed配合得很好,我不介意自己画所有的东西

我的问题是,从这个派生类的角度来看,如何确定我是静态标签还是组框

当然,我可以添加一个成员变量或函数来指示控件类型,在应用程序开始时将其设置在某个位置,然后进行检查并相应地绘制。但是我想在扩展类的代码中解决这个问题,而不是在应用程序代码中


注意:我尝试了
GetStyle()
并选中了
BS_GROUPBOX
,但没有帮助,因为静态样式的一些组合
SS_*
可以与
BS_GROUPBOX
相同
GetStyle()
中的样式属性对于每个控件类都是不同的。在确定它是静态的之后,查看its样式将有助于确定它是什么类型的静态

由于组框是按钮,因此需要检查样式为
BS\u GROUPBOX
的按钮类

需要记住的一点是,按钮的样式使用较低的4位来确定类型。使用
BS_TYPEMASK
仅获取按钮样式

if ( (GetStyle() & BS_TYPEMASK) == BS_GROUPBOX ) {
   // etc
}

.这很有希望,但不幸的是,这对我没有直接帮助
GetClassName
返回groupbox的“按钮”。我想获得资源文件中定义的GROUPBOX文本。您已经知道如何区分按钮和组框。您需要帮助区分按钮控件和静态控件,而
GetClassName
正是这样做的。有时,您必须将两块乐高®积木拼在一起。资源文件语句是资源定义语法的产物。一旦资源编译器完成,关键字就消失了。