關於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 */
}




發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章