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

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

【问题讨论】:

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

标签: mfc


【解决方案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);
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-04-13
    • 2014-12-26
    • 2020-06-11
    • 1970-01-01
    • 2016-01-11
    • 1970-01-01
    • 2012-09-12
    相关资源
    最近更新 更多