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

09-12 03:28