ON_CONTROL_REFLECT(BN_CLICKED, OnClicked)
void CMyCheckbox::OnClicked()
{
m_bCheck = !m_bCheck;
Invalidate();
}
这样可以保证点击后,对控件自绘勾选进行处理,但是使用控件的窗口无法响应BN_CLICKED事件了,即点击事件无效。解决方法:
ON_CONTROL_REFLECT_EX(BN_CLICKED, OnClicked)
BOOL CMyCheckbox::OnClicked()
{
m_bCheck = !m_bCheck;
Invalidate();
return FALSE; //这样外部窗口可以继续处理其BN_CLICKED事件,返回TRUE不处理
}
使用 ON_CONTROL_REFLECT_EX 代替 ON_CONTROL_REFLECT,并且函数返回值为FALSE即可。