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. [原创]NDT方法在SLAM中的应用

    NDT概念 正态分布变换(Normal Distribution Transformation , NDT)概率密度函数( Probability Density Function, PDF)Firs ...

  2. Python之路-python(面向对象进阶)

    一.面向对象高级语法部分 1.静态方法.类方法.属性方法 2.类的特殊方法 3.反射 二.异常处理 三.Socket开发基础 一.面向对象高级语法部分 静态方法(@staticmethod) 定义:只 ...

  3. Mac下安装UPnP Inspector

    由于工作中需要用到UPnP Inspector这个工具,而这个工具在windows下安装非常简单,在Mac下安装却很麻烦,在此记录安装流程. 这个工具依赖于两个其他的库:Coherence(一个DLN ...

  4. ACM Coder [T1002] 一直wrong answer,不知道为什么。上代码!就对就对!

    忘了改了什么,后来居然对了!做打不死的菜鸟! #include <stdio.h> #include <stdbool.h> #define arrayLength 20 #d ...

  5. when will a databasechange be committed?

    1) Database-updates via DML in a SQLExec-statement (e.g. INSERT INTO PS_TEST_TABLE VALUES(‘value_fie ...

  6. paper 99:CV界的明星人物经典介绍

            CV人物1:Jianbo Shi史建波毕业于UC Berkeley,导师是Jitendra Malik.其最有影响力的研究成果:图像分割.其于2000年在PAMI上多人合作发表”Nor ...

  7. requirejs中 shim

    使用requireJS的shim参数,完成jquery插件的加载 时间 2014-10-31 13:59:10  CSDN博客 原文  http://blog.csdn.net/aitangyong/ ...

  8. Microsoft JScript提示‘DIRECT’未定义(2014-08-26记)

    当启动Applet的时候,页面弹出:DIRECT’未定义可能的问题是:java控制面板的网络设置问题,可能使用了代理解决: 打开java控制面板--->网络设置-->直接连接-->确 ...

  9. Dynamics AX 2012 R3 Demo 安装与配置 - 编译和配置 (Step 3)

        在前两节中,Reinhard主要讲解了如何配置安装环境,安装数据库服务器,AOS和客户端.至此安装工作已经结束,下面Reinhard开始讲解如何编译和配置.     运行客户端后,系统弹出初始 ...

  10. python: HTML中的选择器

    id选择器 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF ...