Duilib + Cef

2024-01-25 09:58
文章标签 cef duilib

本文主要是介绍Duilib + Cef,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1.  由于CEF工程中使用了 NOMINMAX预编译设置。在引用第三方使用min,max库时,会报错。

可以这样处理,

#include <algorithm>
#define min
#define max 
#include "include\UIlib.h"

 

2. 中文显示错误,可能是dui库编译时 Character Set 没有选择 Use Unicode Character Set,和CEF工程不一致。

3. Dui添加新的事件处理。类似这样,可以处理任何事件。

	void CFrameWnd::OnPrepare(){pHlayout = static_cast<CHorizontalLayoutUI*>(m_pm.FindControl(_T("horizontal")));if (pHlayout) pHlayout->OnEvent += MakeDelegate(this, &CFrameWnd::OnHlayoutEvent2);CSliderUI* pSilder = static_cast<CSliderUI*>(m_pm.FindControl(_T("alpha_controlor")));if( pSilder ) pSilder->OnNotify += MakeDelegate(this, &CFrameWindowWnd::OnAlphaChanged);}bool CFrameWnd::OnHlayoutEvent2(void* param) {TEventUI* event = (TEventUI*)param;if (event->Type == UIEVENT_MOUSEENTER){//告诉UIManager这个消息需要处理 pHlayout->SetBorderColor(0x58A1CC);pHlayout->SetBorderSize(5);_cwprintf(L"UIEVENT_MOUSEENTER\n");}else if (event->Type == UIEVENT_BUTTONDOWN) {_cwprintf(L"UIEVENT_BUTTONDOWN\n");}else if (event->Type ==  UIEVENT_BUTTONUP) {_cwprintf(L"UIEVENT_BUTTONUP\n");}else if (event->Type ==  UIEVENT_MOUSELEAVE) {pHlayout->SetBorderSize(0);_cwprintf(L"UIEVENT_MOUSELEAVE\n");}return true;}bool CFrameWnd::OnAlphaChanged(void* param) {TNotifyUI* pMsg = (TNotifyUI*)param;if( pMsg->sType == _T("valuechanged") ) {m_pm.SetOpacity((static_cast<CSliderUI*>(pMsg->pSender))->GetValue());}return true;}

4. 如何在dui窗口嵌入cef browser,注意 browser区域不要有其它dui控件,否则可能browser加载不正常。原因不明。

5. 在CreateRootWindow函数中,可以创建dui窗口,代替原来的win32窗口,这样就可以随意创建title区域了。

 

这篇关于Duilib + Cef的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/642913

相关文章

cef OnBeforePopup禁止弹出新窗体

bool SimpleHandler::OnBeforePopup(   CefRefPtr<CefBrowser> browser,   CefRefPtr<CefFrame> frame,   const CefString& target_url,   const CefString& target_frame_name,   WindowOpenDisposition target_dis

CEF编译时 错误 error MSB3073: 命令“setlocal ***

解决办法: 其实大家仔细看,其实它是一个生成后事件,也就是走到这里时,程序已编译成功,报错在这里可能是文件拷贝权限或者内存不足等等原因,最简单的办法就是看哪个文件拷贝出错,就直接打开cmd窗口主动运行该次文件拷贝就好了(也可以直接找到要拷贝的文件放到对应目录下面去就OK了) 如图  这里的标签1:表示通过调用编译器中的 mt.exe 将G:/cef_98.2.0_VS2019/tests

WPF调用CEF插件运行时启动CefSharp.BrowserSubprocess.exe三个进程

cefsharp.browsersubprocess.exe 是CefSharp(一个基于Chromium的开源浏览器控件)的一部分。这个可执行文件通常在以下情况下启动: 渲染进程:CefSharp使用多进程架构,类似于Chrome浏览器。cefsharp.browsersubprocess.exe通常用于渲染网页内容,所以每个独立的浏览器实例(窗口或标签页)可能会启动一个这样的子进程。

DuiLib介绍及其消息处理剖析

DirectUI技术 DirectUI意为直接在父窗口上绘图(Paint on parent dc directly)。即子窗口不以窗口句柄的形式创建(windowless),只是逻辑上的窗口,绘制在父窗口之上。微软的"DirectUI"技术广 泛的应用于Windows XP,Vista,Windows 7,如浏览器左侧的TaskPanel,控制面板导航界面,Media Player播放器,

duilib学习------网易云信点击combo控件,程序崩溃

前面所用的Combox控件,在vs2013中使用的时候,会莫名的崩溃,这个问题查了挺久,偶然间从网上得到了解决办法。 布局文件中这样写: <Combo class="list" name="combo" height="30" margin="0,12,0,0" padding="6" bkimage="file='../public/combo/normal.png' corner='5,5

duilib学习------网易云信combo控件

xml中加人:   <!--combobox--> <Combo class="list" name="combo" height="30" margin="0,12,0,0" padding="6" bkimage="file='../public/combo/normal.png' corner='5,5,30,5'"/>   (1)BasicForm.h bool OnCombo

duilib 界面库 实现timer定时器

看了大神介绍的duilib感觉已被同龄人狠狠地甩在背后。所以痛下决心,之后要多花时间写代码。 大神教程传送门: http://www.cnblogs.com/Alberl/p/3341956.html 现在的问题是想基于duilib实现一个timer定时器。工程基础大概是在 http://www.cnblogs.com/Alberl/p/3343763.html 因为自己的东西是基于

Duilib 窗口流程

从GameDemo.cpp看起   1回顾通常的sdk窗口程序流程:注册窗口-创建窗口-显示窗口-启动消息循环   1.1注册窗口类 Duilib中最平凡的真实窗口类是:CWindowWnd,关于窗口注册提供了两个函数,严格的说应该是几个: RegisterWindowClass() RegisterSuperclass() GetWindowClassName(

CEF框架:各种各样的Handle(四)——CefURLRequest,发起HTTP请求与处理

文章目录 CEF的HTTP请求类CefResourceRequestCefURLRequest CefURLRequest的使用cef_message_routehandled:urlrequet的处理类OnQuery CefURLRequestClient CEF的HTTP请求类 在CEF框架中(Chromium Embedded Framework),CefURLReque

duilib主界面中创建mfc控件问题-未解决

1.要用到的MFC相关的头文件,需要放在duilib的头文件#include"UIlib.h"之前; 2.工程的设置需要将 MFC的使用 这项 从使用标准window改为 在共享DLL中使用MFC; 3. 按照教程上的步骤,在 CControlUI* CreateControl(LPCTSTR pstrClass)这个函数实现中 创建CButton,在CButton::Create函数时会有断