Visual C++6.0中CEdit的消息

Posted

技术标签:

【中文标题】Visual C++6.0中CEdit的消息【英文标题】:Messages of CEdit in visual C++6.0 【发布时间】:2013-06-20 06:20:50 【问题描述】:

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

【问题讨论】:

【参考方案1】:

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

ON_CONTROL_RANGE(BN_CLICKED, IDC_RADIO_DRAWALL, IDC_RADIO_DRAWBEST, OnRadioBtnDraw)

void CVisualPPView::OnRadioBtnDraw(UINT nID)


【讨论】:

以上是关于Visual C++6.0中CEdit的消息的主要内容,如果未能解决你的问题,请参考以下文章

Microsoft visual C++6.0设置行号

C# 6.0 功能不适用于 Visual Studio 2015

microsoft visual c++6.0和micorostf visual c++ 2010 express有啥区别

MFC:在派生的 CEdit 中没有收到 EN_CHANGE 消息

C++ 'true' 和 'false' 关键字在 Visual C++ 6.0 中突然不是真或假

如何将 CEdit 类型的数据转换为 CString 类型的数据以及如何在消息框中显示? [复制]