读书人

怎么让combobox 控件屏蔽某些特殊字符

发布时间: 2013-11-23 10:52:51 作者: rapoo

如何让combobox 控件屏蔽某些特殊字符
我添加一combobox 控件,输入的字符串值需要作为新建文件夹的名字,所以不能出现某些特殊的字符,比如'*' '\' '?' '/'等9个字符,
(1)如何处理好呢?
(2)我现在在控件的CBN_EDITUPDATA响应函数中判断 str.Find("/");返回-1说明没有找到。
问题是如果输入了非法字符,如果光标在最后没有问题,如果是光标在原有字符的中间,比如想插入字符,输入了非法字符,这样光标会自动跳到最后。大家能否给些解决办法。

CString STR=m_Str; // m_Str是控件对应的字符串
UpdateData(TRUE);
if(!IsStringFit(m_Str))//判断存在非法字符
{
AfxMessageBox("非法字符!",MB_OK);
m_Str=STR;
UpdateData(FALSE);
}


[解决办法]
因为你AfxMessageBox后用了UpdateData(FALSE);那编辑框肯定刷新,光标就跳到最后了
除非在这输入前记下光标的位置pos,然后最后再SetSel
[解决办法]
子类化ComboBox 在输入时屏蔽掉非法字符。。
相应 afx_msg void OnChar(
UINT nChar,
UINT nRepCnt,
UINT nFlags
);

读书人网 >VC/MFC

热点推荐