在MFC中怎样实现EditBox 和 EditBOx 之间输入一个数字自动跳转?急急急!!!!
1个回答
展开全部
重载编辑框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);
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询