编辑框输入不合法时保持原有的值的做法
作者:朱金灿
来源:http://blog.csdn.net/clever101
很多时候当编辑框输入的数据不合法时我们想显示输入前的值。如何实现这个功能呢?
这时需要给编辑框发送EM_UNDO消息。
具体做法可以参考如下:编一个简单的对话框测试程序,添加两个编辑框,其中一个ID为IDC_EDIT1,然后添加下面代码:
void CTestEditDlg::DoDataExchange(CDataExchange* pDX) { CDialog::DoDataExchange(pDX); // m_nNum为对话框的int型数据成员 DDX_Text(pDX, IDC_EDIT1, m_nNum); } BEGIN_MESSAGE_MAP(CTestEditDlg, CDialog) ON_WM_SYSCOMMAND() ON_WM_PAINT() ON_WM_QUERYDRAGICON() //}}AFX_MSG_MAP ON_EN_KILLFOCUS(IDC_EDIT1, &CTestEditDlg::OnEnKillfocusEdit1) END_MESSAGE_MAP() // IDC_EDIT1编辑框失去输入检点时响应 void CTestEditDlg::OnEnKillfocusEdit1() { // TODO: 在此添加控件通知处理程序代码 UpdateData(TRUE); if(m_nNum>100) ::SendDlgItemMessage(m_hWnd,IDC_EDIT1,EM_UNDO,0,0); }
参考文献: