在 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 效果的主要内容,如果未能解决你的问题,请参考以下文章

当我在文本框中按 Enter 键时发出恼人的哔哔声

在WPF DataGrid中按Enter键时将焦点移动到下一个单元格?

当我们从文本框中按 Enter 键时,在单个 jQuery 方法中处理多个操作

在 puppeteer 中按 Enter 按钮

按“enter”键时停止 VSCode 触发建议

WPF:一个文本框,它具有在按下 Enter 键时触发的事件