编辑框CEdit的EN_CHANGE通知消息

来源:互联网 发布:伊利的网站域名有几个 编辑:程序博客网 时间:2024/05/19 00:54

1 编辑框控件的通知消息

编辑框控件给其父窗口发送消息来报告多种输入事件。在MFC应用程序中使用ON_EN消息映射宏将这些通知传递给了处理函数。

当控件的文本被修改后,编辑框控件会向其父窗口发送EN_CHANGE通知消息。在父窗口中用ON_EN_CHANGE消息映射宏来注册一个消息响应函数来处理EN_CHANGE消息。当文本输入到编辑框控件时,其父窗口就会调用这个注册的函数,来实时动态的更新获取文本。

2 为通知消息添加响应函数

在资源编辑器中选中该编辑框,之后在右侧的“属性”栏中选择“控件事件”,接下来在“EN_CHANGE”对应的栏中添加其消息响应函数,如图1所示。

 

1 添加EN_CHANGE通知消息的响应函数

添加了响应函数之后,可以在对话框消息映射宏中看到自动添加了ON_EN_CHANGE宏,

BEGIN_MESSAGE_MAP(CEN_CHANGE_TestDlg, CDialogEx)

ON_EN_CHANGE(IDC_EDIT1, &CEN_CHANGE_TestDlg::OnEnChangeEdit1)

END_MESSAGE_MAP()

该宏的作用是,当编辑框IDC_EDIT1中的文本内容发生变化时,就会调用OnEnChangeEdit1()函数。

OnEnChangeEdit1()函数的格式为

void CEN_CHANGE_TestDlg::OnEnChangeEdit1()

{

}

3 编写消息响应函数

在编写某些程序时,当按下按键后,需要获取编辑框中输入的文本。在按下按键后需要判断编辑框中是否是空,如果是空,则提示需要在编辑框中输入相应的文本。

使用编辑框的EN_CHANGE消息则可以省去文本框是否为空的判断。起始状态下,可以将按键设置为不可用,只有当编辑框中输入了文本之后,按键的状态才变为可用。

在OnEnChangeEdit1()函数中有如下代码:

m_button.EnableWindow(m_edit1.LineLength());

其中,m_button是按键对应的变量,m_edit1是编辑框对应的变量。只有编辑框中的文本的长度LineLength()大于0时,按键的状态才变为可用;如果没有在编辑框中输入文本,则按键的状态为不可用。