专栏首页mlCEF使用的几个注意点

CEF使用的几个注意点

    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.如何自定义的....

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • HDUOJ 1099——Lottery

    Lottery Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (J...

    Gxjun
  • hdu-----(1150)Machine Schedule(最小覆盖点)

    Machine Schedule Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/3...

    Gxjun
  • paddlepaddle关于使用dropout小案例

    Gxjun
  • SAP Cloud for Customer的Account Team里的role如何配置

    版权声明:本文为博主汪子熙原创文章,未经博主允许不得转载。 https://jerry.bl...

    Jerry Wang
  • 杨鹏谈世纪佳缘推荐算法:基于Spark GraphX,弃GBDT和LR用FM

    用户1737318
  • openresty源码剖析——lua代码的加载

    ##Openresty是什么 OpenResty是一个基于 Nginx 与 Lua 的高性能 Web 平台,通过把lua嵌入到Nginx中,使得我们可以用轻巧的...

    magicsoar
  • Python爬虫入门教程 18-100 煎蛋网XXOO图片抓取

    很高兴我这系列的文章写道第18篇了,今天写一个爬虫爱好者特别喜欢的网站煎蛋网http://jandan.net/ooxx,这个网站其实还是有点意思的,网站很多人...

    梦想橡皮擦
  • 32TB Windows 10核心源码与微软内部项目泄露?

    今年一直是微软的多事之秋,CIA、NSA的各路工具爆料都和微软密切相关,似乎更劲爆的总在后面:来自国外媒体The Register刚刚的报道,Windows 1...

    FB客服
  • 赛灵思宣布收购AI芯片创业公司深鉴科技

    赛灵思宣布收购位于北京的创业公司深鉴科技,深鉴科技拥有行业领先的机器学习技术,收购细节尚未曝光。

    AiTechYun
  • ubantu环境的下的R语言新版本完整安装教程

    apt-get install libcurl4-openssl-dev

    一粒沙

扫码关注云+社区

领取腾讯云代金券

玩转腾讯云 有奖征文活动