编程环境:VS2013,MFC
在一个MFC界面中完成大量散乱数据的输入操作,包含很多的EDIT控件。当使用数字键输入时,用TAB进行焦点控制颇为不便,考虑使用回车键。
具体分两步实现:
1、将各控件的TAB顺序调整好。使用Ctrl+D,从自己认为Tab顺序应该为1的控件开始依次单击,即可实现响应顺序的设置。
2、重载对话框PreTranslateMessage消息处理函数,使当按下回车键时响应TAB键事件。具体代码如下:
///键盘操作函数///
BOOL CFASTENERDlg::PreTranslateMessage(MSG* pMsg)
{
// TODO: Add your specialized code here and/or call the base class
//屏蔽键盘常用按键
if (pMsg->message == WM_KEYDOWN)
{
switch (pMsg->wParam)
{
//case VK_RETURN: //屏蔽回车
case VK_ESCAPE: //屏蔽ESC
return true;
}
}
//顺次传递焦点, 除非当前焦点在确定按钮上时才响应触发消息
if ((pMsg->message == WM_KEYDOWN) && (VK_RETURN == (int)pMsg->wParam))
{
if (GetFocus()->GetDlgCtrlID() != IDOK)
{
pMsg->wParam = VK_TAB;
}
}
return CDialog::PreTranslateMessage(pMsg);
}
参考链接:
http://www.jizhuomi.com/software/158.html
http://blog.csdn.net/eickandy/article/details/49487823
https://blog.csdn.net/hfutljx/article/details/70830340
https://blog.csdn.net/qq_23992597/article/details/53056717