在MFC中怎样实现EditBox 和 EditBOx 之间输入一个数字自动跳转?急急急!!!!

 我来答
bhtzu
2014-09-09 · TA获得超过1.1万个赞
知道大有可为答主
回答量:8088
采纳率:85%
帮助的人:4247万
展开全部

重载编辑框EN_CHANGE消息,在重载函数中:

CString str;
GetDlgItem(IDC_EDIT1)->GetWindowText(str);
if(str==theNumber)//||str.GetLength()==5
    GetDlgItem(IDC_EDIT2)->SetFocus();

如果只有四个编辑框需要这样的跳转,那么重载4个CHANGE比较好。

如果这样的跳转编辑框很多,也可以在对话框的PreTranslateMessage中做判断。

追问
大神,我是新手,在PreTranslateMessage中是怎么判断的,谢谢大神!!!!!
追答

这个稍微复杂一点,并且需要设置ID值连续,如果新手推荐使用前一种方法。

BOOL CDialog1::PreTranslateMessage(MSG* pMsg) 
{
// TODO: Add your specialized code here and/or call the base class
int nID = GetFocus()->GetDlgCtrlID();
if(pMsg->message==EN_CHANGE)//HERE
{
if (nID>=IDC_EDIT1&&pMsg->hwnd<=IDC_EDIT4)//== || == || ==
{
CString str;
GetDlgItem(nID)->GetWindowText(str);
if(str==theNumber)//||str.GetLength()==5
GetDlgItem(nID+1)->SetFocus();
}
}

return CDialog::PreTranslateMessage(pMsg);
}
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式