在 VC6-MFC 中按 ENTER 键时的 TAB 效果
Posted
技术标签:
【中文标题】在 VC6-MFC 中按 ENTER 键时的 TAB 效果【英文标题】:TAB effect upon Hitting ENTER key in VC6-MFC 【发布时间】:2011-01-24 05:58:29 【问题描述】:我想在多个文本框上实现 TAB 效果。在文本框中输入值然后按 Enter 键后,焦点应自动移动到下一个文本框(与在文本框中按下 TAB 键时的焦点相同)。目前我正在尝试在 PreTranslateMessage() 中使用这段代码:
if ( (pMsg->wParam == VK_RETURN) )
if( m_CeditCtrlLlaLatDegrees.GetFocus() )
keybd_event( VK_TAB,0x09,0,0);
// keybd_event( VK_TAB,0x09,KEYEVENTF_KEYUP,0);
上面的代码将焦点推送到紧随下一个文本框之后的文本框(即 它向前移动了 2 个选项卡)有 20 个文本框都取自 CEdit,并且都只接受数值。
如何检索每个文本框的 ID?我尝试分配 CEdit(控制变量)并访问每个文本框的 ID,然后通过 switch-case 语句检查哪个文本框处于活动状态,然后将 SetFocus() 设置为下一个直接文本框(所有这些都在 PreTranslateMessage() 中)。但即使这样也行不通。
请建议一种方法来使它工作。由于我是新手,请让我详细了解流程/代码。
【问题讨论】:
【参考方案1】:这应该完成你想要的:
BOOL CMyDialog::PreTranslateMessage(MSG* pMsg )
if (pMsg->message == WM_KEYDOWN && pMsg->wParam == VK_RETURN)
CWnd* pFocus = GetFocus();
if (pFocus && pFocus->IsKindOf(RUNTIME_CLASS(CEdit)))
NextDlgCtrl();
return TRUE;
return CDialog::PreTranslateMessage(pMsg);
【讨论】:
感谢您的回答..抱歉回复晚了..将执行此操作并回复...再次感谢以上是关于在 VC6-MFC 中按 ENTER 键时的 TAB 效果的主要内容,如果未能解决你的问题,请参考以下文章
在WPF DataGrid中按Enter键时将焦点移动到下一个单元格?