CEF使用的几个注意点

转自http://www.cnblogs.com/gongxijun/p/4857977.html    

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

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

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

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

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

 

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

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

CefSettings cSettings;
    CefRefPtr<CefApp>spApp;
    CefWindowInfo info;
    RECT rect;
    RECT rectnew;
    CefBrowserSettings browserSettings;
复制代码
 1     CefSettingsTraits::init(&cSettings);
 2     cSettings.multi_threaded_message_loop= true;
 3     CefInitialize(cSettings, spApp);   
 4     GetClientRect(&rect);
 5     rectnew=rect;
 6     rectnew.top=rect.top+94;
 7     rectnew.bottom=rect.bottom;
 8     rectnew.left=rect.left;
 9     rectnew.right=rect.right;
10     info.SetAsChild(GetSafeHwnd(),rectnew);
11     
复制代码
 CefBrowser::CreateBrowser(info, static_cast<CefRefPtr<CefClient> >(client),
    MainUrl.c_str(),browserSettings);

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

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

复制代码
 1 CefRefPtr<CefCookieManager> manager = CefCookieManager::GetGlobalManager();
 2     CefString(&cookie.name).FromASCII("PHPSESSID");
 3     //SessinID+=+";client";
 4     CefString(&cookie.value).FromASCII(SessinID.c_str());
 5     CefString(&cookie.domain).FromASCII("203.195.192.24");
 6     CefString(&cookie.path).FromASCII("/");
 7     
 8     cookie.has_expires = true;
 9     cookie.expires.year = 2200;
10     cookie.expires.month = 10;
11     cookie.expires.day_of_week = 5;
12     cookie.expires.day_of_month = 11;
13     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.如何自定义的....

编程是一种快乐,享受代码带给我的乐趣!!!
### 回答1: CEF3是一个基于Chromium的开源项目,它提供了在应用程序中嵌入Web浏览器的功能。该项目为开发者提供了一套简单易用的API,允许他们使用最新的HTML5、CSS3和JavaScript技术在应用程序中显示网页内容。 CEF3的使用非常简单,只需以下几个步骤: 1.下载并编译CEF3 首先,需要从CEF3的官方网站下载所需版本的CEF3源代码,并使用编译工具编译生成可执行文件。编译完成后,将可执行文件集成到自己的应用程序中。 2.初始化CEF3环境 在应用程序中初始化CEF3环境,并设置相关参数,例如浏览器类型、语言、用户代理等。这些参数可以根据需要自行修改。 3.创建浏览器窗口 使用CEF3提供的API创建浏览器窗口,并指定要显示的网页内容。可以通过传递URL或HTML字符串来加载需要显示的内容。 4.处理浏览器事件 在浏览器窗口中,CEF3会触发各种事件,例如加载完成事件、页面加载失败事件等。开发者可以根据需要编写相应的事件处理函数,例如显示加载完成后的页面内容、提示加载失败等。 5.关闭CEF3环境 在应用程序退出时,需要关闭CEF3环境并销毁已创建的浏览器窗口,释放相关资源。 总之,CEF3是一款强大的Web浏览器嵌入工具,提供了简单易用的API,帮助开发者轻松实现在应用程序中显示Web内容的功能。 ### 回答2: CEF3是一种跨平台的嵌入式浏览器框架,支持各种开发语言和操作系统。以下是使用CEF3的一些指导。 1. CEF3的下载和安装 第一步是到官方网站下载相应版本的CEF3,然后将其解压到本地文件夹中。这里需要注意的是,文件夹的名称不能包含任何中文字符。 2. 集成CEF3 将CEF3集成到你的应用程序中需要执行一系列步骤,包括链接CEF3库文件、包含CEF3头文件、添加CEF3资源文件等。CEF3的文档提供了详细的资料和范例教程,可参考自己的需求进行相应的集成。 3. 初始化CEF3 在将CEF3集成到应用程序中之后,需要执行所需的CEF3初始化。在初始化期间需要准备CEF3所使用的配置信息,如浏览器窗口大小、CEF3进程数量等等。此外,CEF3初始化需要启动CEF3进程,因此在初始化时的第一次启动可能会耗费一些时间。 4. 创建浏览器窗口 创建浏览器窗口是CEF3的关键部分之一,需要使用相应的API创建CEF3中的Web窗口。此外,还需要确定窗口的大小、位置、URL等信息。这些都可以在应用程序中进行控制。 5. 处理CEF3的回调 由于CEF3是一种异步的浏览器框架,因此需要使用回调函数处理各种事件。这些事件包括页面加载、资源下载、Javascript执行等等。应用程序必须正确地处理这些回调函数才能正常运行。 6. 关闭CEF3 当应用程序关闭时,需要正确地关闭CEF3进程和相关资源。没有正确地关闭CEF3可能会导致系统出现问题。因此,在关闭前需要停止与CEF3的所有交互,并释放所有相关资源。 总之,CEF3是一款功能强大的浏览器框架,可以为应用程序提供出色的Web浏览体验。但是,开发人员需要遵守官方文档中的指导,正确地初始化CEF3、创建浏览器窗口、处理回调等等,才能有效地使用CEF3。 ### 回答3: CEF3是一种基于开放源代码的Chromium Embedding Framework的扩展版本,它能够方便地为第三方应用程序提供浏览器功能,并且具有高度的可自定义性和跨平台支持能力。下面是CEF3的一些使用说明: 1. CEF3的安装:在实际应用程序中使用CEF3时,需要先进行CEF3的安装。用户可以通过CMake构建CEF3的工程,生成对应的动态链接库和静态链接库,然后将其导入自己的应用程序中。 2. CEF3的初始化:在应用程序启动时,需要调用CEF3的初始化函数。需要传递的参数包括主应用程序的句柄、CEF3的版本号、CEF3的运行模式、CEF3资源的路径、CEF3的日志文件路径等。 3. CEF3的配置:在初始化后,需要对CEF3进行必要的配置,例如启用插件、禁用GPU等。用户可以通过调用CEF3的相关接口,来对CEF3进行相应的配置。 4. CEF3的使用:一旦CEF3已经初始化和配置完成,用户便可以开始使用CEF3提供的浏览器功能。其中包括创建窗口、导航操作、JavaScript执行、Cookie管理等。 5. CEF3的卸载:在应用程序关闭时,需要调用CEF3的卸载函数,以释放CEF3占用的资源。 总之,CEF3是一个非常方便和实用的浏览器功能集成框架,有效地降低了应用程序的开发成本和复杂度。对于需要在应用程序中嵌入浏览器功能的开发者来说,CEF3无疑是一个不错的选择。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值