MFC COMBOX控件只接受数字和设置数字范围

MFC COMBOX控件只接受数字和设置数字范围

在MFC开发过程中使用ComboBox,有时会根据需求要求只能输入数字,并且要求数字在一定的范围内,例如一个用于选择小时的ComboBox,时间范围为00到23,那么该如何实现?

代码如下:

在Dialog.h中: 
…… 
CComboBox m_cbHour;// 声明CComboBox类型作为CDialog类的成员变量 
…… 
afx_msg void OnCbnEditchangeCbHour(); 
afx_msg void OnCbnEditupdateCbHour();

在Dialog.cpp中: 
…… 
DDX_Control(pDX, IDC_CB_HOUR, m_cbHour);// 数据交换 
…… 
ON_CBN_EDITCHANGE(IDC_CB_HOUR, &CDialog::OnCbnEditchangeCbHour)//添加消息映射,用于CComboBox内容改变中 
ON_CBN_EDITUPDATE(IDC_CB_HOUR, &CCDialog::OnCbnEditupdateCbHour)//添加消息映射,用于CComboBox内容更新 
…… 
下面来具体实现函数: 
MFC COMBOX控件只接受数字和设置数字范围_第1张图片 
循环遍历CComboBox中已经输入的字符如果发现含有非数字则,置为“00”,使用循环的目的是为了防止用户跳着输(大概只有测试人员才会跳着输)。
将for循环改为for (int i = 0; i < (strTmp.GetLength()); i++)遇到非数字字符就设置为00;

MFC COMBOX控件只接受数字和设置数字范围_第2张图片 
当CComboBox更新数据时判断数字范围,如果超过边界,则设置值为最近边界值,至此一个只接受可控范围数字的CComboBox就完成了,但是在WinCE开发中却有一个问题,就是所有的汉字都输不进去,但是“头”这个汉字却能输入,不知道这是不是一个BUG,如果在代码中对“头”做特别判断,那这段程序也太奇怪了!

本文转自:
http://blog.csdn.net/wyunteng/article/details/6370882

你可能感兴趣的:(MFC COMBOX控件只接受数字和设置数字范围)