CEF为chrome浏览器的切入其他浏览器中的轻量级框架。 开发的客户端的时候,这是作为界面显示的首先,可以增强客户的易变性,可塑性。

在开发的过程中(侧重于C,C++解决),遇到的几个问题,以及自己看源码和整理出的KO思路:

1.  cef如何禁用右键属性:

手动写一个Cclient来继承 CefMenuHandler这个抽象类,然对其下面的纯虚函数进行重写

     virtual bool OnBeforeMenu(CefRefPtr<CefBrowser> browser, const CefMenuInfo& menuInfo) { return true; }
virtual CefRefPtr<CefMenuHandler> GetMenuHandler() { return this; }

2.如何对浏览器进行定位或者说是画出来:

首先用此函数GetClientRect 获取客户区的矩形区域,rect 然后运用下面的函数,进行定位

CefSettings cSettings;
CefRefPtr<CefApp>spApp;
CefWindowInfo info;
RECT rect;
RECT rectnew;
CefBrowserSettings browserSettings;
     CefSettingsTraits::init(&cSettings);
cSettings.multi_threaded_message_loop= true;
CefInitialize(cSettings, spApp);
GetClientRect(&rect);
rectnew=rect;
rectnew.top=rect.top+;
rectnew.bottom=rect.bottom;
rectnew.left=rect.left;
rectnew.right=rect.right;
info.SetAsChild(GetSafeHwnd(),rectnew);
 CefBrowser::CreateBrowser(info, static_cast<CefRefPtr<CefClient> >(client),
MainUrl.c_str(),browserSettings);

3. 如何对自定义操作进行cookie操作:

开启一个线程,来修改进程中cookie的值

 CefRefPtr<CefCookieManager> manager = CefCookieManager::GetGlobalManager();
CefString(&cookie.name).FromASCII("PHPSESSID");
//SessinID+=+";client";
CefString(&cookie.value).FromASCII(SessinID.c_str());
CefString(&cookie.domain).FromASCII("203.195.192.24");
CefString(&cookie.path).FromASCII("/"); cookie.has_expires = true;
cookie.expires.year = ;
cookie.expires.month = ;
cookie.expires.day_of_week = ;
cookie.expires.day_of_month = ;
CefPostTask(TID_IO, NewCefRunnableMethod(manager.get(), &CefCookieManager::SetCookie, CefString(MainUrl.c_str()), cookie));

4.对于网上困扰很多人的,Cef+MFC页面覆盖(页面不刷新现象),而不能显示的问题,摸索了好久,发现原来是cef和MFC中对话框中的刷新前后不一样造成的。

所以去研究了对话框的重绘之后,发现其实只需要,虚函数OnEraseBkgnd重写,改成这样之后,便不会出现页面覆盖,也不会出现闪烁的画面既视感!

.h部分

 virtual BOOL OnEraseBkgnd(CDC* pDC);

.cpp部分

在映射部分手动加载:

ON_WM_ERASEBKGND()
//这部分用来解决页面覆盖问题,喵的终于解决啦!
BOOL MMenu::OnEraseBkgnd(CDC* pDC){
//return TRUE;
return FALSE;
}

4.如何自定义的....

CEF使用的几个注意点的更多相关文章

  1. qt添加cef库嵌入web [转]

    qt cef嵌入web 原文http://blog.sina.com.cn/s/blog_9e59cf590102vnfc.html 最近项目需要,研究了下libcef库. Cef(Chromium ...

  2. 如何使CEF支持Flash

    方法一:复制Chrome浏览器下的pepperFlash,通过cef命令行参数设置路径. public Form1() { InitializeComponent(); InitializeChrom ...

  3. 使用C#在CEF中拦截并响应请求

    一.前言 忙里偷闲,研究了一下如何在CEF中拦截请求,并作出响应.这个功能对某些需要修改服务器响应的需求来说必不可少,可以直接读取本地文件作为响应内容. C#的CEF封装项目有很多,我使用的是Chro ...

  4. CEF中select选项错位的解决方法

    使用cef加载页面,移动窗口后选项的位置并不会变化,仍保持上次打开的位置. 经过google查找到这是一个已经解决了的问题:https://bitbucket.org/chromiumembedded ...

  5. Cef 架构

    cef支持各种语言和多种操作系统.在设计的时候充分考虑了性能和易用性.cef核心功能提供了c和c++的接口.cef提供了和主程序之间的通信能力(利用 custom plugins, protocols ...

  6. cef 介绍

    介绍 cef 是一个基于google chromiun的简单的框架. 它主要是作为一个内嵌浏览器嵌入到客户端应用程序中. 可以再 http://cefbuilds.com 下载最新的编译版本. 总体框 ...

  7. Duilib嵌入CEF以及JavaScript与C++交互

    转载:http://blog.csdn.net/foruok/article/details/50573612 转载:http://blog.csdn.net/foruok/article/detai ...

  8. CEF源码编译和生产库的使用

    CEF版本是Branch 2171 开发环境是VS2012 查看一下libcef_dll_wrapper工程属性,确定Code Generation 选择MTD(Debug) 或者MT(Release ...

  9. 初识CEF

    介绍 CEF全称Chromium Embedded Framework,是一个基于Google Chromium 的开源项目.Google Chromium项目主要是为Google Chrome应用开 ...

随机推荐

  1. windows下nginx+php简单配置

    Nginx+php运行环境搭建 虽然目前nginx使用很广泛,在大陆主流的互联网站点或多或少会用到这个俄国人开发的小应用(占用资源小).但是我这个土鳖还是第一次自己独立配置,网上资料不少,但是还是遇到 ...

  2. R&&rstudio

    R sudo apt-get install R-base Rstudio()下载Rstudio桌面版失败 sudo apt-get install gdebi-core 如果提示少了什么东西,运行下 ...

  3. s3c2440 test 里面的一些用法

    #define REQ_INFO 0x60U     U代表无符号,unsignchar

  4. Ubuntu 安装BCM 43142无线网卡驱动

    ubuntu14.04 安装 bcm43142无线网卡 用命令lspci 查看无线网卡类型 然后下载对应的无线网卡驱动. 之后,使用下列命令安装,即可搜索无线热点了: sudo apt-get ins ...

  5. .NET学习记录3

    一.ASP.NET ISAPI与IIS IIS如何监听来自外界的http request ,如何根据ISAPI Extension Maping 将对于不同的resource的请求分发给不同的ISAP ...

  6. 11. 星际争霸之php设计模式--备忘模式

    题记==============================================================================本php设计模式专辑来源于博客(jymo ...

  7. html5,表单与label标签的用法2

    <form action="" autocomplete="on">    <input type="submit" va ...

  8. Cordova for Android(Windows)环境配置

    PS:注意事项 一些坑在此声明: 1.安装Eclipse后,记得设置各项编码格式为utf-8 请移步:http://www.blogjava.net/xiaomage234/archive/2014/ ...

  9. php strrpos()与strripos()函数不同之处在哪里呢

    strripos() 函数 定义和用法strripos() 函数查找字符串在另一个字符串中最后一次出现的位置.如果成功,则返回位置,否则返回 false.语法strrpos(string,find,s ...

  10. 清除dns缓存

    Linux清除dns缓存命令 /etc/init.d/dnsmasq restart