在 MFC Web 浏览器控件中禁用键盘快捷键的方法

Posted

技术标签:

【中文标题】在 MFC Web 浏览器控件中禁用键盘快捷键的方法【英文标题】:Ways to disable keyboard shortcuts in MFC web browser control 【发布时间】:2015-04-14 17:07:38 【问题描述】:

我将 MFC 的 web browser control 添加到我的基于对话框的 MFC 项目中,它为我提供了 IE Web 浏览器的功能。它工作正常,除了我遇到了一个问题。 IE 控件带有自己的键盘快捷键,例如 F5 用于刷新,或 Ctrl+P 用于打印,或 Ctrl+O 用于打开等。我不需要这些,因为我在内部加载它并且它不应该支持大多数IE浏览器功能。问题是如何禁用这些键盘快捷键?

PS。请注意,我不想禁用此控件的所有键盘输入。例如,我希望用户能够使用箭头键或向上翻页、向下翻页等滚动它。

【问题讨论】:

【参考方案1】:

我相信您将不得不重写 TranslateAccelerator 方法。使用 MFC WebBrowser 控件时,没有一个属性可以设置为禁用键盘快捷键。

提供的代码禁用 F5 键的处理,您必须在覆盖的 TranslateAccelerator 中实现您希望禁用的每个快捷方式/加速器。

BrowserControl::TranslateAccelerator(MSG *pMsg, DWORD dwFlags)

    HRESULT result= S_FALSE;

    if (pMsg && pMsg->message == WM_KEYDOWN && pMsg->wParam == VK_F5) 
        // Return S_OK to indicate no more handling is needed on the message
        result= S_OK;
    
    return result;

【讨论】:

谢谢。我试图避免手动操作,即遍历控件允许的所有可能的键。

以上是关于在 MFC Web 浏览器控件中禁用键盘快捷键的方法的主要内容,如果未能解决你的问题,请参考以下文章

使用javascript禁用键盘快捷键在Safari中不起作用?

PyQt4 - 如何禁用所有热键(本机键盘快捷键)

MFC 中检查列表框控件中禁用复选框的工具提示

如何根据 mfc 中的列表控件选择禁用按钮

MFC WebBrowser判断网页加载完成

C#如何全局禁用键盘的回车键