在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内容更新
……
下面来具体实现函数:
循环遍历CComboBox中已经输入的字符如果发现含有非数字则,置为“00”,使用循环的目的是为了防止用户跳着输(大概只有测试人员才会跳着输)。
将for循环改为for (int i = 0; i < (strTmp.GetLength()); i++)遇到非数字字符就设置为00;
当CComboBox更新数据时判断数字范围,如果超过边界,则设置值为最近边界值,至此一个只接受可控范围数字的CComboBox就完成了,但是在WinCE开发中却有一个问题,就是所有的汉字都输不进去,但是“头”这个汉字却能输入,不知道这是不是一个BUG,如果在代码中对“头”做特别判断,那这段程序也太奇怪了!
本文转自:http://blog.csdn.net/wyunteng/article/details/6370882
posted on 2013-09-25 17:39
王海光 阅读(3407)
评论(1) 编辑 收藏 引用 所属分类:
MFC