编辑框输入不合法时保持原有的值的做法

原文地址:http://blog.csdn.net/clever101/article/details/7639449

作者:朱金灿

来源: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);
}


参考文献:http://blog.csdn.net/wuyuan2011woaini/article/details/8059834

 其中 SendDlgItemMessage的定义如下

//API函数
LRESULT SendDlgItemMessage(
	HWND hDlg,      // handle to dialog box
	int nIDDlgItem, // control identifier
	UINT Msg,       // message to send
	WPARAM wParam,  // first message parameter
	LPARAM lParam   // second message parameter
	);
//Remarks
//		The SendDlgItemMessage function does not return until the message has been processed. 

//		Using SendDlgItemMessage is identical to retrieving a handle to the specified control and calling the SendMessage function. 



//CWnd::SendDlgItemMessage
LRESULT SendDlgItemMessage( int nID, UINT message, WPARAM wParam = 0, LPARAM lParam = 0 );
//说明:
//	这个函数向控件发送一条消息。
//	SendDlgItemMessage直到消息被处理之后才会返回。
//	使用SendDlgItemMessage等同于获得给定控件的CWnd*指针并调用其SendMessage成员函数。


 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值