CEF实现F5刷新快捷键

1.首先要让我们自己的CefClient这个类公有继承CefKeyboardHandler

2.添加键盘事件构造函数

virtual CefRefPtr<CefKeyboardHandler> GetKeyboardHandler() OVERRIDE
{
    return this;
}

3.然后重写父类的OnPreKeyEvent和OnKeyEvent两个方法

在.h文件中添加函数声名

virtual bool OnPreKeyEvent(CefRefPtr<CefBrowser> browser,
        const CefKeyEvent& event,
        CefEventHandle os_event,
        bool* is_keyboard_shortcut) ;
    
virtual bool OnKeyEvent(CefRefPtr<CefBrowser> browser,
        const CefKeyEvent& event,
        CefEventHandle os_event) ;

在.cpp中重写函数

F5和小写t的ASCLL码都是116,如果不做处理,按F5和t都能实现刷新功能,这是我们不想看到的。

1.通过调试时发现,按F5的时候event的type是KEYEVENT_RAWKEYDOWN,windows_key_code 是116;

2.按键盘t的时候OnPreKeyEvent会响应两次,第一次event的type是KEYEVENT_RAWKEYDOWN,windows_key_code是84(大写T的ASCII码是84),第二次event的type是KEYEVENT_CHAR,windows_key_code是116(小写t的ASCII码是116,因为没有判断按键类型导致F5和小写t同时都能刷新),因此通过event中的type判断一下,实现完美的刷新功能。

1.按F5

2.按键盘“T”

第一次响应

第二次响应

方法一:

bool CCefBrowserEventHandler::OnPreKeyEvent(CefRefPtr<CefBrowser> browser,
    const CefKeyEvent& event,
    CefEventHandle os_event,
    bool* is_keyboard_shortcut)
{
    if (event.type != KEYEVENT_CHAR)
    {
        if (event.windows_key_code == VK_F5)//F5刷新
        {
            browser->Reload();
            //browser->ReloadIgnoreCache();//重新加载当前页面,忽略任何缓存的数据
        }
    }
    

    return false;
}

bool CCefBrowserEventHandler::OnKeyEvent(CefRefPtr<CefBrowser> browser,
    const CefKeyEvent& event,
    CefEventHandle os_event)
{
    return false;
}

方法二:

bool CCefBrowserEventHandler::OnPreKeyEvent(CefRefPtr<CefBrowser> browser,
    const CefKeyEvent& event,
    CefEventHandle os_event,
    bool* is_keyboard_shortcut)
{
    if (event.type == KEYEVENT_RAWKEYDOWN)
    {
        if (event.windows_key_code == VK_F5)//F5刷新
        {
            browser->Reload();
            //browser->ReloadIgnoreCache();//重新加载当前页面,忽略任何缓存的数据。
        }
    }
    

    return false;
}

bool CCefBrowserEventHandler::OnKeyEvent(CefRefPtr<CefBrowser> browser,
    const CefKeyEvent& event,
    CefEventHandle os_event)
{
    return false;
}

 

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值