博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
CEF 添加F5刷新快捷键
阅读量:5127 次
发布时间:2019-06-13

本文共 2070 字,大约阅读时间需要 6 分钟。

Keyboardcodes:

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

   

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

virtual CefRefPtr
GetKeyboardHandler() OVERRIDE{ return this; }

 

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

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

virtual bool OnPreKeyEvent(CefRefPtr
browser, const CefKeyEvent& event, CefEventHandle os_event, bool* is_keyboard_shortcut) ; virtual bool OnKeyEvent(CefRefPtr
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
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
browser, const CefKeyEvent& event, CefEventHandle os_event){ return false;}

方法二、

bool CCefBrowserEventHandler::OnPreKeyEvent(CefRefPtr
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
browser, const CefKeyEvent& event, CefEventHandle os_event){ return false;}

 

转载于:https://www.cnblogs.com/chechen/p/10100853.html

你可能感兴趣的文章
js阻止事件冒泡的两种方法
查看>>
Java异常抛出
查看>>
[SQL Server 系] T-SQL数据库的创建与修改
查看>>
74HC164应用
查看>>
变量声明和定义的关系
查看>>
Wpf 之Canvas介绍
查看>>
linux history
查看>>
jQuery on(),live(),trigger()
查看>>
Python2.7 urlparse
查看>>
sencha touch在华为emotion ui 2.0自带浏览器中圆角溢出的bug
查看>>
【架构】Linux的架构(architecture)
查看>>
ASM 图解
查看>>
Date Picker控件:
查看>>
你的第一个Django程序
查看>>
grafana授权公司内部邮箱登录 ldap配置
查看>>
treegrid.bootstrap使用说明
查看>>
[Docker]Docker拉取,上传镜像到Harbor仓库
查看>>
javascript 浏览器类型检测
查看>>
nginx 不带www到www域名的重定向
查看>>
记录:Android中StackOverflow的问题
查看>>