Duilib Edit編輯框禁止輸入中文的方法


轉載:http://www.myexception.cn/vc-mfc/300749.html

編輯框是供用戶輸入的,但有時候我們要限制用戶輸入的內容,比如我們不讓用戶輸入中文,只能輸入字符和數字,因此要對用戶輸入的內容進行過濾。

Duilib中的Edit是原生的窗口,當用戶輸入時,編輯框的內容被用戶改變了,會觸發EN_CHANGE事件

看Duilib源碼

 

所以在我們自己的窗口類里處理 _T("textchanged") 消息類型

 

    else if (msg.sType == _T("textchanged"))
    {
        if ( _tcscmp(m_pEdit->GetText(),m_pEdit->GetSrcTipValue()) != 0 &&!m_pEdit->GetText().IsEmpty())
        {
            CString strValue = m_pEdit->GetText();

            for ( int nIndex = 0; nIndex < strValue.GetLength() ; nIndex++ )
            {
             if( strValue.GetAt( nIndex ) >=128 || strValue.GetAt( nIndex ) < 0 )
                {
//ASCII碼0~127是數字和字符,所以大於128的小於0的都過濾掉 strValue
= strValue.Left( nIndex ) + strValue.Right( strValue.GetLength() - nIndex - 1 );//包含中文的字符過濾掉 m_pEdit->SetText(strValue); m_pEdit->SetSel(strValue.GetLength(),strValue.GetLength());//重設給光標設置位置 } } } }

看效果

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM