我有一个CDialog
包含许多CEdit
对象。当取消焦点时,它们都必须执行类似的操作(例如:当取消焦点时,编辑框文本被更改)。
我可以这样定义对话框的消息映射:
ON_EN_KILLFOCUS(ID1, kf1)
ON_EN_KILLFOCUS(ID2, kf2)
ON_EN_KILLFOCUS(ID3, kf3)
ON_EN_KILLFOCUS(ID4, kf4)
和所有kf
函数将调用一个共同的函数:
CommonFunction(CEdit* editBox)
但是有一种方法可以在kf
函数本身转移编辑框吗?我的意思是这样定义它:
ON_EN_KILLFOCUS(ID1, kf(ID1))
ON_EN_KILLFOCUS(ID2, kf(ID2))
ON_EN_KILLFOCUS(ID3, kf(ID3))
ON_EN_KILLFOCUS(ID4, kf(ID4))
或其他方式
注意:我用Visual c++ 6.0(98年版)
您可以在消息映射中使用ON_CONTROL_RANGE将所有消息分派到同一个函数。要做到这一点,有必要确保id在连续范围内。(必要时编辑resource.h)
ON_CONTROL_RANGE(BN_CLICKED, IDC_RADIO_DRAWALL, IDC_RADIO_DRAWBEST, OnRadioBtnDraw)
void CVisualPPView::OnRadioBtnDraw(UINT nID)
{
}