如何使组框/静态控件执行子类或自定义控件。
如何计算所有Group框/静态控件的数量。这样我就可以将圆角应用于所有Group Box /静态控件。
答案 0 :(得分:1)
如何使组框/静态控件执行子类或自定义 控制。
从CButton
派生一个班级。处理NM_CUSTOMDRAW
通知以执行自定义绘图。或者,可以使用BS_OWNERDRAW
窗口样式,但这与BS_GROUPBOX
互斥。使用NM_CUSTOMDRAW
时,可以保留原始窗口样式标志。
请注意,NM_CUSTOMDRAW
通常会发送到父窗口,但您可以重新路由此消息以在控件类中处理它,如下所示:
BEGIN_MESSAGE_MAP(CMyGroupBox, CButton)
ON_NOTIFY_REFLECT(NM_CUSTOMDRAW, OnCustomDraw)
END_MESSAGE_MAP()
OnCustomDraw()
的定义如下:
void CMyGroupBox::OnCustomDraw(NMHDR* pNMHDR, LRESULT* pResult)
{
auto pnmc = reinterpret_cast<NMCUSTOMDRAW*>( pNMHDR );
// Query pnmc members and do the custom drawing as documented on MSDN.
// Assign the result to *pResult.
}
如何计算所有Group框/静态控件的数量。
使用EnumChildWindows()
枚举所有子窗口。在回调调用GetClassName()
中检查windows类是否为“button”并调用GetWindowLong(hwnd, GWL_STYLE)
以检查是否设置了BS_GROUPBOX
标志。