如何将加速键赋予键盘退格键

Posted

技术标签:

【中文标题】如何将加速键赋予键盘退格键【英文标题】:How to give accelerator key to keyboard backspace key 【发布时间】:2021-09-21 09:54:56 【问题描述】:

我正在开发基于 MFC 对话框的应用程序。我的要求是当用户单击退格键时,它应该专注于编辑文本控件并像正常退格键一样删除文本。 这个对话框有一个编辑框和多个按钮,当用户点击退格键时,当前在当前对话框的任何地方都应该关注编辑框,并且可以作为退格键。

【问题讨论】:

这里的“正常”是什么意思?在标准编辑控件中,退格键有 2 个不同的行为:1 如果选择了部分或全部文本,则删除选定的文本。 2 否则删除插入符号左侧的字符(如果有)。当对话框管理器导航到编辑控件时,它会选择(默认情况下)整个文本。随后点击退格键将导致删除整个文本。这是您要寻找的行为吗? 你的问题不是很清楚。您是否有不允许编辑控件执行其正常退格处理的加速器资源,或者默认行为(使用 Tab 键选择整个文本输入,如果有则删除选择,否则左侧的字符)是不是想要的?请澄清。打开时的对话框将重点放在 Tab 键顺序中的第一个控件上。 请澄清您的具体问题或提供其他详细信息以准确突出您的需求。正如目前所写的那样,很难准确地说出你在问什么。 【参考方案1】:

您可以在 PreTranslateMessage(MSG* pMsg) 的覆盖中处理密钥:

BOOL MyDialog::PreTranslateMessage(MSG* pMsg)

    if (pMsg->message == WM_KEYDOWN &&
        pMsg->wParam == VK_BACK)
    
        // do your thing here
        if (GetFocus() != &theEditBox)
            GotoDlgCtrl(&theEditBox);
    
    return MyDialog::PreTranslateMessage(pMsg);

【讨论】:

以上是关于如何将加速键赋予键盘退格键的主要内容,如果未能解决你的问题,请参考以下文章

远程登录退格键错误[关闭]

前端javascript如何阻止按下退格键页面回退 但 不阻止文本框使用退格键删除文本

JS如何禁用浏览器的退格键

如何连续删除键盘退格键上的字符长按android

Linux下,编译文本时,输入内容后,无法使用退格键删除,退格键成了方向键,

如何使用jQuery捕获退格键? [复制]