轉載: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());//重設給光標設置位置 } } } }
看效果