我有一个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)
{
}