0

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

4

1 回答 1

1

您可以在消息映射中使用 ON_CONTROL_RANGE 将所有消息分派到同一个函数。为此,必须确保 ID 在连续范围内。(如有必要,编辑 resource.h。)

ON_CONTROL_RANGE(BN_CLICKED, IDC_RADIO_DRAWALL, IDC_RADIO_DRAWBEST, OnRadioBtnDraw)

void CVisualPPView::OnRadioBtnDraw(UINT nID)
{
}
于 2013-06-20T12:18:34.313 回答