在MFC中使用CEdit时,设置只允许输入数字,但仍然会出现下图所示“数字200前允许输入0”的问题。
这种情况被认为是用户界面不友好的表现,需要做成:如果已经输入非零整数200,则不允许在200再输入0,如下图。
可以通过以下方法实现:
1. 在DoDataExchange函数中为CEdit控制映射整型变量:
DDX_Text(pDX, IDC_EDIT_RXDELAY, m_nRxDelay);
2. 在消息映射BEGIN_MESSAGE_MAP...END_MESSAGE_MAP中加入ON_EN_UPDATE事件:
BEGIN_MESSAGE_MAP(CAMC3020Dlg, CDialog) …… ON_EN_UPDATE(IDC_EDIT_RXDELAY, &CAMC3020Dlg::OnEnUpdateNumEdit) …… END_MESSAGE_MAP()3. 在OnEnUpdateNumEdit函数中加入两行代码:
void CAMC3020Dlg::OnEnUpdateNumEdit() { UpdateData(1); // 将CEdit控件中输入的数写入对应的整型变量,这里是m_nRxDelay UpdateData(0); // 将变量m_nRxDelay中的数值回写到CEdit控制中 /* 这两行代码正好可以去除200前面多余的0 */ }
关于MFC CEdit中仅输入数字时,如何使其不能输入以0开头的非0整数
原文地址:http://blog.csdn.net/skywalker_leo/article/details/39178735