如何将加速键赋予键盘退格键
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如何阻止按下退格键页面回退 但 不阻止文本框使用退格键删除文本