MFC提供的CEdit控件,可以设置其属性为NUM,也就是限定只能输入数字,但是,有个问题就是小数点没法输入了。
在订单系统编写的时候,我想限制价钱和重量的输入只能是数字,整数或者浮点数。因为都是正数,所以我就没有考虑负号的因素,有兴趣的可以加上这一功能。
所以,只能自己编写一个数字的CEdit控件,过程:
1.从标准CEdit控件派生出CNumEdit控件
2.重载CEdit的OnChar函数,实现输入字符的限制,只能是小数点和数字,不过还得考虑响应退格键。其次,还得考虑小数点的输入次数,只能为一个
void CNumEdit::OnChar(UINT nChar, UINT nRepCnt, UINT nFlags)
{
// TODO: Add your message handler code here and/or call default
CString ss;
char ch = char(nChar);
GetWindowText(ss); // 获得当前已输入的字符序列
// 对当前输入字符进行判断
if(!isdigit(ch)) // 如果不是数字
{
if(ch =