关于MFC CEdit中仅输入数字时,如何使其不能输入以0开头的非0整数

在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)