本文主要是介绍C++/MFC:在窗体Form(Dialog)中多个编辑框时,在输入时将回车解释为TAB键,将输入焦点移到下一个编辑框的方法,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
很多时候,为了输入方便,常用的做法,就是将回车键解释为将输入焦点移动到下一个编辑框中。就像是我的VxTerm中的快速连接输入一样:
VxTerm是一个国产化替代的SSH工具,可以从本站的资源中免费下载并且免费使用,同时可以从中学习和分享本人的一些代码和经验:https://download.csdn.net/download/mynjer/87769610
只要输入焦点不在下面两个按钮,按回车就当做TAB键:
1、首先,先通过格式下的菜单,打开TAB顺序调整:
在界面中按顺序点各个输入框,就能从其中显示的序号上进行调整。
2、在Dialog的循环消息中,添加PreTranslateMessage,加入如下代码:
BOOL xQuickConnect::PreTranslateMessage(MSG* pMsg)
{switch (pMsg->message){case WM_KEYDOWN:if (GetFocus() == GetDlgItem(xBTNOK.GetDlgCtrlID())|| GetFocus() == GetDlgItem(xBTNOK.GetDlgCtrlID())) //判断当前焦点是否在窗体的按钮上{ //如果在按钮上,则按系统执行所有的功能的功能return CDialog::PreTranslateMessage(pMsg);}else{ //否则,判断按下的是否是回车if (pMsg->wParam == VK_RETURN){ //如果是回车,就忽略,并将TAB键放入当前的输入缓冲区INPUT inputs[1] = {};ZeroMemory(inputs, sizeof(inputs));inputs[0].type = INPUT_KEYBOARD;inputs[0].ki.wVk = VK_TAB;UINT uSent = SendInput(ARRAYSIZE(inputs), inputs, sizeof(INPUT));return 1;}}default:break;}return CDialog::PreTranslateMessage(pMsg);
}
成功后,就相当于是把回车键当成TAB键来用了。
这在一些专门的数据录入界面中,会非常有用。
这篇关于C++/MFC:在窗体Form(Dialog)中多个编辑框时,在输入时将回车解释为TAB键,将输入焦点移到下一个编辑框的方法的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!