void CMyEdit::OnChar(UINT nChar, UINT nRepCnt, UINT nFlags)
{ if((nChar>='0'&&nChar<='9')||nChar=='.'||nChar==VK_DELETE||nChar==VK_BACK) {if(nChar=='.')
{
int nStart,nEnd;
GetSel(nStart,nEnd);//这句什么意思 if(nStart==0)
{
AfxMessageBox("小数点不能在第一位");
return;
}
CString str;
GetWindowText(str);
if(str.Find('.')>=0)//这句什么意思 {
if(!(str.Find('.')>=nStart&&str.Find('.')<nEnd))//这句是什么意思 {
AfxMessageBox("不能输入第二个小数点");
return;
}
}
}
希望各位详细解释下 在此感谢了
if(str.Find('.')>=0)//str(你的编辑框)中包含有'.'这个字符
if(!(str.Find('.')>=nStart&&str.Find('.')<nEnd))//结合上面的那句,就是说如果你的Edit中已经输入了一个'.'字符,并且当前你选中的字符或字符串中不包含这个'.',那么你将不能再输入'.'
就是说你的Edit中只能输入一个'.',但是当你已经输入了一个'.'字符后,允许你选中'.'这个字符或包含这个字符的字符串,用'.'去替换原来的'.'或包含'.'的字符串例如:
你在Edit中输入了"123.456";如果你在"123.456"中再输入一个'.'是不允许的;但是可以用'.'替换"123.456"或者"123.456"中的红色部分
调用此成员函数获取一个编辑控件中当前被选中部分(如果有)的起始和结束位置,可用参数也可用返回值。
if(str.Find('.')>=0)//这句什么意思
在str中找字符'.'的位置,如果能找到,则Find的返回值肯定>=0,如果找不到,则Find返回-1 if(!(str.Find('.')>=nStart&&str.Find('.')<nEnd))//这句是什么意思
个人觉得这句有问题。
调用此成员函数获取一个编辑控件中当前被选中部分(如果有)的起始和结束位置,可用参数也可用返回值。
if(str.Find('.')>=0)//这句什么意思
在str中找字符'.'的位置,如果能找到,则Find的返回值肯定>=0,如果找不到,则Find返回-1 if(!(str.Find('.')>=nStart&&str.Find('.')<nEnd))//这句是什么意思
个人觉得这句有问题。