ComboBox只接受数字,并限制数字范围

来源:互联网 发布:imap.126.com 端口 编辑:程序博客网 时间:2024/04/26 04:04

在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内容更新
……
下面来具体实现函数:
image
循环遍历CComboBox中已经输入的字符如果发现含有非数字则,置为“00”,使用循环的目的是为了防止用户跳着输(大概只有测试人员才会跳着输)。
image
当CComboBox更新数据时判断数字范围,如果超过边界,则设置值为最近边界值,至此一个只接受可控范围数字的CComboBox就完成了,但是在WinCE开发中却有一个问题,就是所有的汉字都输不进去,但是“头”这个汉字却能输入,不知道这是不是一个BUG,如果在代码中对“头”做特别判断,那这段程序也太奇怪了!

(—完—)