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时,按键的状态才变为可用;如果没有在编辑框中输入文本,则按键的状态为不可用。