子类化CEdit为CNewEdit;处理CNewEdit的消息WM_CHAR。其中
void CNewEdit::OnChar(UINT nChar, UINTnRepCnt, UINT nFlags) 如下;
其它需要可以灵活定制。
void CNewEdit::OnChar(UINT nChar, UINTnRepCnt, UINT nFlags)
{
<wbr>if(nChar==VK_BACK)//BackSpace<br><wbr><wbr>CEdit::OnChar(nChar, nRepCnt,nFlags);<br><wbr><wbr><wbr></wbr></wbr></wbr></wbr></wbr></wbr>
<wbr>//////////////////////////////////////////////////////////////////<br><wbr>//Some invariable parameter for further use<br><wbr>CPoint caretPt;<br><wbr>caretPt=GetCaretPos ();<br><wbr>caretPt.x = LOWORD (CharFromPos (caretPt));//Thefunction is the core,I'm blind to seek it for 3 days</wbr></wbr></wbr></wbr></wbr>
<wbr>CString str;<br><wbr>int nLength;<br><wbr>int nDot;<br><wbr>int neE;<br><wbr>double fabstr;<br><wbr>GetWindowText (str);<br><wbr>fabstr=fabs(atof(str));<br><wbr><wbr><wbr>nLength=str.GetLength();<br><wbr>nDot=str.Find(_T('.'));<br><wbr>neE=max(str.Find('e'),str.Find('E'));<br><wbr><br><wbr><br><wbr><br><wbr>//////////////////////////////////////////////////////////<br><wbr>//Input 0-9,especialy 0 needs moreattention.</wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>
<wbr>if (isdigit(nChar))<br><wbr>{<br><wbr><wbr>if(nChar>'0')<wbr><br><wbr><wbr>CEdit::OnChar(nChar, nRepCnt,nFlags);</wbr></wbr></wbr></wbr></wbr></wbr></wbr>
<wbr><wbr>else//make use of '0'<br><wbr><wbr>{<br><wbr><wbr><wbr>if(str.IsEmpty())<br><wbr><wbr><wbr>{<br><wbr><wbr><wbr><wbr>CEdit::OnChar(nChar,nRepCnt, nFlags);<br><wbr><wbr><wbr><wbr>return;<br><wbr><wbr><wbr>}<br><wbr><wbr><wbr><br><wbr><wbr><wbr>if(str[0]=='0')<br><wbr><wbr><wbr>{<br><wbr><wbr><wbr><wbr><wbr><wbr>if(neE==-1)<br><wbr><wbr><wbr><wbr>{<wbr><br><wbr><wbr><wbr><wbr><wbr>if(caretPt.x>1)<br><wbr><wbr><wbr><wbr><wbr>{<br><wbr><wbr><wbr><wbr><wbr><wbr>CEdit::OnChar(nChar,nRepCnt, nFlags);<br><wbr><wbr><wbr><wbr><wbr><wbr>return;<br><wbr><wbr><wbr><wbr><wbr>}<br><wbr><wbr><wbr><wbr><wbr>else<br><wbr><wbr><wbr><wbr><wbr><wbr>return;<br><wbr><wbr><wbr><wbr>}<br><wbr><wbr><wbr><wbr>else<br><wbr><wbr><wbr><wbr><wbr>{<br><wbr><wbr><wbr><wbr><wbr><br><wbr><wbr><wbr><wbr><wbr><wbr><wbr>if((caretPt.x-1)!=neE&& caretPt.x>1)<br><wbr><wbr><wbr><wbr><wbr><wbr><wbr>{<br><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr>CEdit::OnChar(nChar,nRepCnt, nFlags);<br><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr>return;<br><wbr><wbr><wbr><wbr><wbr><wbr><wbr>}<br><wbr><wbr><wbr><wbr><wbr><wbr><wbr>else<br><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr>return;<br><wbr><wbr><wbr><wbr><wbr><wbr>}<br><wbr><wbr><wbr><wbr><wbr><wbr><wbr><br><wbr><wbr><wbr><wbr><wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>
<wbr><wbr><wbr>}<br><wbr><wbr><wbr><wbr><br><wbr><wbr><wbr><br><wbr><wbr><wbr>if(str[0]=='-')<br><wbr><wbr><wbr><wbr>{<br><wbr><wbr><wbr><wbr><wbr>if(str[1]=='0')<br><wbr><wbr><wbr><wbr><wbr>{<br><wbr><wbr><wbr><wbr><wbr><wbr>if(neE==-1)<br><wbr><wbr><wbr><wbr><wbr><wbr>{<wbr><br><wbr><wbr><wbr><wbr><wbr><wbr><wbr>if(caretPt.x>2)<br><wbr><wbr><wbr><wbr><wbr><wbr><wbr>{<br><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr>CEdit::OnChar(nChar,nRepCnt, nFlags);<br><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr>return;<wbr><wbr><wbr><wbr><wbr><br><wbr><wbr><wbr><wbr><wbr><wbr><wbr>}<br><wbr><wbr><wbr><wbr><wbr><wbr>else<br><wbr><wbr><wbr><wbr><wbr><wbr><wbr>return;<br><wbr><wbr><wbr><wbr><wbr><wbr>}<br><wbr><wbr><wbr><wbr><wbr><wbr>else<br><wbr><wbr><wbr><wbr><wbr><wbr>{<br><wbr><wbr><wbr><wbr><wbr><wbr><wbr>if((caretPt.x-1)!=neE&& caretPt.x>2)<br><wbr><wbr><wbr><wbr><wbr><wbr><wbr>{<br><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr>CEdit::OnChar(nChar,nRepCnt, nFlags);<br><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr>return;<br><wbr><wbr><wbr><wbr><wbr><wbr><wbr>}<br><wbr><wbr><wbr><wbr><wbr><wbr><wbr>else<br><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr>return;<wbr><br><wbr><wbr><wbr><wbr><wbr><wbr>}<br><wbr><wbr><wbr><wbr><wbr><wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>
<wbr><wbr><wbr><wbr><wbr>}<br><wbr><wbr><br><wbr><wbr><wbr><wbr><br><wbr><wbr><wbr><wbr>}<br><wbr><wbr><wbr><br><wbr><wbr><wbr>if(str[0]>='1'&& caretPt.x>0)<br><wbr><wbr><wbr>{<wbr><wbr><br><wbr><wbr><wbr><wbr><br><wbr><wbr><wbr><wbr>CEdit::OnChar(nChar,nRepCnt, nFlags);</wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>
<wbr><wbr><wbr><wbr><wbr><wbr>return;<br><wbr><wbr><wbr>}</wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>
<wbr><wbr><wbr><br><wbr><wbr><br><wbr><wbr><wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>
<wbr><wbr>}<br><wbr>}<br><wbr><wbr><br><wbr><br><wbr><br><wbr><br><wbr>else<br><wbr><wbr><br><wbr><wbr>//////////////////////////////////////////////////////<br><wbr><wbr>//Determine the '-'<br><wbr><wbr>if (nChar == '-')<br><wbr><wbr>{<br><wbr><wbr><wbr>if(!caretPt.x)<br><wbr><wbr><wbr>{<br><wbr><wbr><wbr><wbr>if(((nLength > 0) && (str[0]!='-')) || (nLength==0))<br><wbr><wbr><wbr><wbr><wbr>CEdit::OnChar(nChar,nRepCnt, nFlags);<br><wbr><wbr><wbr>}<br><wbr><wbr>else<br><wbr><wbr>{<br><wbr><wbr><wbr>if ((str[caretPt.x-1] == 'e') || (str [caretPt.x-1] == 'E'))<br><wbr><wbr><wbr><wbr>CEdit::OnChar(nChar,nRepCnt, nFlags);<br><wbr><wbr>}<br><wbr>}</wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>
<wbr>else<br><wbr><br><wbr><wbr>////////////////////////////////////////////////////////////<br><wbr><wbr>//Input'e' or 'E'<br><wbr><wbr><br><wbr><wbr>if ((nChar == 'e') || (nChar =='E'))<br><wbr><wbr>{<br><wbr><wbr><wbr>if((caretPt.x == 1) && (str[0] == '-'))<br><wbr><wbr><wbr><wbr>return;</wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>
<wbr><wbr>if(caretPt.x)<br><wbr><wbr>{<br><wbr><wbr><wbr><wbr>if(neE!=-1)<br><wbr><wbr><wbr><wbr><wbr>return;<br><wbr><wbr><wbr>if(nDot!=-1&& caretPt.x<nDot)<br><wbr><wbr><wbr><wbr>return;</wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>
<wbr><wbr><wbr>CEdit::OnChar(nChar,nRepCnt, nFlags);<br><wbr><wbr>}<br><wbr>}</wbr></wbr></wbr></wbr></wbr></wbr>
<wbr>else</wbr>
<wbr><wbr>//////////////////////////////////////////////////////<br><wbr><wbr>//Input '.'<br><wbr><wbr>if (nChar == '.')<br><wbr><wbr>{<br><wbr><wbr><wbr>if(nDot!=-1)<br><wbr><wbr><wbr><wbr>return;<br><wbr><wbr><br><wbr><wbr><wbr>if(neE!=-1&& caretPt.x>neE)<br><wbr><wbr><wbr><wbr>return;<br><wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>
<wbr><wbr>CEdit::OnChar(nChar,nRepCnt, nFlags);<br><wbr>}</wbr></wbr></wbr>
<wbr>此外如果要截取输入字符串末尾的‘0';可以利用消息WM_KILLFOCUS;</wbr>
函数代码如下:
void CNewEdit::OnKillfocus()
{
<wbr>// TODO: Add your control notification handlercode here<br><wbr>CString str,tr;<br><wbr>GetWindowText(str);<br><wbr>int nLength;<br><wbr><wbr><wbr> intnDot=-1;<br><wbr>int neE;<br><wbr>//double fstr;<br><wbr>nLength=str.GetLength();<br><wbr><br><wbr><br><wbr><br><wbr>for(int i=0;i<nLength;i++)<br><wbr>{<br><wbr><wbr>if(str[i]==_T('.'))<br><wbr><wbr><wbr><wbr>nDot=i;<br><wbr>}<br><wbr><br><wbr>neE=max(str.Find(_T('e')),str.Find(_T('E')));<br><wbr><br><wbr><br><wbr><wbr><wbr><br><wbr>if(nDot!=-1 && neE==-1)<br><wbr><wbr>str.TrimRight(_T("0"));<br><wbr>{<br><wbr><wbr> int t= str.Find('.');<br><wbr><wbr><br><wbr><wbr><br><wbr><wbr><wbr>if(t==str.GetLength()-1)<wbr><br><wbr><wbr><wbr>str+='0';<br><wbr>}</wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>
<wbr><br><wbr>SetWindowText(str);<br>
}</wbr></wbr>
分享到:
相关推荐
VC6 MFC Edit控件 限制输入长度、仿序列号输入、限制输入指定的字符或数字、自动跳转到下一个编辑框
如何限制编辑框输入文本的长度.. 如何限制编辑框只能输入数字.. 如何在按钮上显示图标.. 如何在按钮上显示位图 如何在编辑框中实现多行显示.. 如何在编辑框中追加文本.. 如何在列表控件中插入列.. 如何在列表框中...
自绘编辑框 自绘窗体界面 自绘对话框 listbox-6 重载CListBox,演示了拖动功能。 Mail_Report 演示了发送邮箱的功能。 MD5算法 MediaPlayer 视频播放的实现。 MFC 对话框 MP3 内部包含:mp3播放器Lrc歌词同步源...
自绘编辑框 自绘窗体界面 自绘对话框 listbox-6 重载CListBox,演示了拖动功能。 Mail_Report 演示了发送邮箱的功能。 MD5算法 MediaPlayer 视频播放的实现。 MFC 对话框 MP3 内部包含:mp3播放器Lrc歌词同步源...
43、如何限制编辑框中的准许字符 53 44、如何改变控件的颜色 54 45、当向列表框中添加多个项时如何防止闪烁 55 46、如何向编辑控件中添加文本 55 47、如何访问预定义的GDI对象 55 48、如何获取GDI对象的属性信息 56 ...
自绘编辑框 自绘窗体界面 自绘对话框 listbox-6 重载CListBox,演示了拖动功能。 Mail_Report 演示了发送邮箱的功能。 MD5算法 MediaPlayer 视频播放的实现。 MFC 对话框 MP3 内部包含:mp3播放器Lrc歌词同步源...
自绘编辑框 自绘窗体界面 自绘对话框 listbox-6 重载CListBox,演示了拖动功能。 Mail_Report 演示了发送邮箱的功能。 MD5算法 MediaPlayer 视频播放的实现。 MFC 对话框 MP3 内部包含:mp3播放器Lrc歌词同步源...
自绘编辑框 自绘窗体界面 自绘对话框 listbox-6 重载CListBox,演示了拖动功能。 Mail_Report 演示了发送邮箱的功能。 MD5算法 MediaPlayer 视频播放的实现。 MFC 对话框 MP3 内部包含:mp3播放器Lrc歌词同步源...
自绘编辑框 如题。 自绘窗体界面 如题。 自绘对话框 如题。 listbox-6 重载CListBox,演示了拖动功能。 Mail_Report 演示了发送邮箱的功能。 MD5算法 如题。 MediaPlayer 视频播放的实现。 MFC 对话框 MP3 ...
43、如何限制编辑框中的准许字符 53 44、如何改变控件的颜色 54 45、当向列表框中添加多个项时如何防止闪烁 55 46、如何向编辑控件中添加文本 55 47、如何访问预定义的GDI对象 55 48、如何获取GDI对象的属性信息 56 ...
1、添加编辑框对应的变量m_number 2、添加运算符类型变量 Char cc; //用于存储运算符类型 CString firstnumber; //用于保存运算符前面的输入值 3、添加各种按钮的单击事件处理方法的函数 控件名称列表: 主对话框...
实用与原理性的东西,对于想打好VC基础的朋友应该有帮助.示例目录:实例1 mfc框架. 文档和视 实例2 创建多文档窗口 实例3 创建对话框窗口 ...实例49 ip地址输入编辑框 实例50 下拉列表控件中的编辑柜 实例51 掩膜
实例52 数字输入控制编辑框 第14章 编辑框和树视控件 实例53 破解密码框内容 实例54 16进制编辑输入框 实例55 树型注释 实例56 目录树结构 第15章 组合框集锦 实例57 多列显示的组合框 实例58 自动完成功能...
1、添加编辑框对应的变量m_Display 2、添加运算符类型变量 char CompuType; //用于存储运算符类型 CString FirstInput; //用于保存运算符前面的输入值 3、添加各种按钮的单击事件处理方法的函数 控件名称列表: 主...
3、以ARCCIS9的功能结构主线,学习利用ARCCIS进行数据输入,数据编辑,地图配标,投影转换,数据转换,数据显示(包括三维显示)与制图,数据查询与分析,数据输出等一系列操作。(以ARCCIS在农业中的应为例介绍) ...
MATCOM与VC_混合编程中自定义函数作为输入参数的调用方法.pdf MATCOM与VC_混合编程方法在图像处理中的应用.pdf MATLAB与VC_混合编程在系统辨识中的应用.pdf Matlab与VC接口在医学图像处理中的应用.pdf Matlab与...
MATCOM与VC_混合编程中自定义函数作为输入参数的调用方法.pdf MATCOM与VC_混合编程方法在图像处理中的应用.pdf MATLAB与VC_混合编程在系统辨识中的应用.pdf Matlab与VC接口在医学图像处理中的应用.pdf Matlab与...
MATCOM与VC_混合编程中自定义函数作为输入参数的调用方法.pdf MATCOM与VC_混合编程方法在图像处理中的应用.pdf MATLAB与VC_混合编程在系统辨识中的应用.pdf Matlab与VC接口在医学图像处理中的应用.pdf Matlab与...