限制文本编辑框输入的中英文字符字数

限制文本编辑框输入的中英文字符字数,第1张

限制文本编辑框输入的中英文字符字数,第2张

头文件CXXXDlg.h中的测试提示:定义一个编辑框类climitlengthenedit
类climitlengthenedit:public cwindowimpl
{
public:
climitlengthenedit(){ };
virtual ~ climitlengthdit(){ };
BOOL subclass window(HWND HWND){ typedef cwindow impl CWindowBase;返回CWindowBase::subclass window(hWnd);};
protected:
BEGIN _ MSG _ MAP(climitlengthdit)
END _ MSG _ MAP()
};
添加消息映射和响应函数声明
protected:
begin _ msg _ map(crequestdlg)
MESSAGE _ HANDLER(WM _ init dialog,OnInitDialog)
COMMAND _ HANDLER(IDC _ EDIT _ MESSAGE,EN_CHANGE,OneditChange)//IDC _ EDIT _ MESSAGE是编辑控件的ID
reflect _ notifications _ ex()
end _ msg _ map()
LRESULT OnInitDialog(的
添加成员变量
private:
climitlenghedit m _ lledit;
在实现文件CXXXDlg.cpp中添加消息处理函数
#define MAX_LIMIT_LEN 20 //考试提示:字符长度中文限10个字符,英文限20个字符
LResult Crequestdlg::oninitdialog(uint/* umsg */,WPARAM /*wParam*/,LPARAM /*lParam*/,BOOL &/* bHandled */){
subclass window(GetDlgItem(IDC _ EDIT _ MESSAGE));
::SetFocus(GetDlgItem(IDC _ EDIT _ MESSAGE));
返回0;
}
LRESULT CRequestDlg::OnEditChange(WORD/* wNotifyCode */,WORD wID,HWND /*hWndCtl*/,BOOL &/* bHandled */)
{
CString strText;
TCHAR msg[128];
m_llEdit。GetWindowText(msg,128);
strText。格式(_T("%s "),msg);
int nPixelPos = 0;
int nCount = 0;
int pos = 0;
int iLen = strText。GetLength();
for(int I = 0;i < iLen)
{
if(IsDBCSLeadByte(strText[I])
{
n count++;
I+= 2;
if(I > 20)
{
hide caret();
m_llEdit。SetSel(0,-1);
m_llEdit。ReplaceSel(strText。左(I-2));
show caret();
m_llEdit。SetLimitText(nCount);
break;
}
else
{
m _ llEdit。SetLimitText(20);
}
}
else
{
n count++;
i++;
if(I > 20)
{
hide caret();
m_llEdit。SetSel(0,-1);
m_llEdit。ReplaceSel(strText。左(I-1));
show caret();
m_llEdit。SetLimitText(nCount);
break;
}
else
{
m _ llEdit。SetLimitText(20);
}
}
}
strText。ReleaseBuffer()。
返回FALSE
}

位律师回复
DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
白度搜_经验知识百科全书 » 限制文本编辑框输入的中英文字符字数

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情