duilib

duilib踩坑记录

北城余情 提交于 2020-02-28 07:57:22
duilib官方 https://github.com/duilib/duilib duilib他人扩展 https://github.com/qdtroy/DuiLib_Ultimate 关于两者的对比 https://www.zhaokeli.com/article/8224.html 贴近官方版,并更改了很多bug https://github.com/juhuaguai/duilib 腾讯云通信消息服务SDK(DuiLib_Ultimate) https://github.com/tencentyun/TIMSDK/tree/master/cross-platform/Windows/IMApp/Basic/duilib?tdsourcetag=s_pcqq_aiomsg 网易云信Windows应用界面开发框架 https://github.com/netease-im/NIM_Duilib_Framework duilib官方文档较少,网上找了些资料,总结下 alberl写过的 duilib入门简明教程 (推荐,本人小白一枚,跟着这个教程一步步做也算是了解了个大概) 和 duilib进阶教程 https://blog.csdn.net/zhuhongshu/article/details/43816875 (暂时未看,内含博主自己维护的duilib库连接

将webkit内核封装为duilib的浏览器控件

半腔热情 提交于 2020-01-27 23:50:33
转载请说明出处,谢谢~~ 原本的duilib是自带浏览器控件的,但是使用了IE内核,我在做仿酷狗音乐播放器时,在右侧乐库要用到浏览器控件,而我使用自带的IE控件却发现了不少缺点,这也是duilib一直没有解决的,编程群里的朋友也反映IE控件不好用。而目前最常用的浏览器内核一个是IE内核,另一个是webkit内核。 先简单介绍一下这个webkit内核 WebKit 是一个 开源 的 浏览器 引擎,与之相对应的引擎有 Gecko (Mozilla Firefox 等使用)和 Trident (也称 MSHTML , IE 使用)。同时WebKit 也是苹果Mac OS X 系统引擎框架版本的名称,主要用于 Safari , Dashboard , Mail 和其他一些 Mac OS X 程序。WebKit 前身是 KDE 小组的 KHTML,WebKit 所包含的 WebCore 排版引擎 和 JSCore 引擎来自于 KDE 的 KHTML 和 KJS,当年苹果比较了 Gecko 和 KHTML 后,仍然选择了后者,就因为它拥有清晰的 源码 结构、极快的 渲染 速度。 Apple 将 KHTML 发扬光大,推出了装备 KHTML 改进型 WebKit 引擎的 浏览器 Safari。 WebKit 内核在手机上的应用也十分广泛,例如 Google 的手机 Android 、 Apple

Duilib教程-控件练习

情到浓时终转凉″ 提交于 2020-01-19 23:50:14
一、控件消息的响应。 在HelloDuilib 例子中,程序不能退出,在这里,我将添加一个关闭按钮,当点击它时,调用 PostQuitMessage 进行退出。 首先在界面的右上角添加一个关闭按钮,并取名为“ btnClose ”。 然后在 CHelloDuilibWnd 中重载 WindowImplBase::Notify (); 代码如下: void CHelloDuilibWnd::Notify( TNotifyUI& msg ) { if (msg.sType == DUI_MSGTYPE_CLICK) // 先判断消息类型,如果是单击 { if (msg.pSender->GetName() == _T ("btnClose")) // 如果控件名为 btnClose { PostQuitMessage(0); } } } 如是即可退出程序。 二、获取XML 中的控件 。 一般的情况下,可以在窗口初始化的时候获取一个控件,当然你在什么时候获取都是可以的,在初始化获取,以后你就可以任意地使用了。 添加重载函数:WindowImplBae::InitWindow ,代码如下: void CHelloDuilibWnd::InitWindow() { m_btnClose = static_cast <CButtonUI*> (m_PaintManager

Duilib教程-简单介绍

我只是一个虾纸丫 提交于 2020-01-19 23:49:13
在读这篇博客的时候,可能您已经对duilib有一定的了解。所以,我并不打算对duilib进行过多的介绍。它的内核首先由外国人编写,后来由国人一个小组接过来继续编写,于是就有了现在的Duilib。 1.下载Duilib 首先它托管在Google,后来不知道是不是由于大陆将 Google 全面封锁,将搜索引擎禁用了不算,还将技术网站都封闭了。所以,Duilib又托管到了 Github。所以在学习它之前,你需要学习如何利用Github,将Duilib下载到本地进行编译、运行。 1)首先下载 GitHub for Windows. https://windows.github.com/ 2)注册一个帐号。 3)打开网站 https://github.com/duilib/duilib 看到网站右边的按钮,如上图的红框处,点击”Clone in Desktop”按钮,保存到自己的帐号中,并能下载到本地中,保存到本地,主要是为了便于即时更新。当Duilib有更新时,你可以利用本地的Github工具进行更新。 4)打开本地的目录。 如上图右上角的红框操作。 2.编译DUILIB DuiDesigner.sln 这个文件是 XML 编辑器。 DuiLib.sln 这个是DUILIB 源文件及Demo源文件。 使用VS2008进行编译。 3.Dui原理小解。 原来的WINDOWS界面

Duilib学习笔记《01》— duilib整体框架认识

六月ゝ 毕业季﹏ 提交于 2020-01-08 03:06:50
从GoogleCode上下载的duilib工程中附带的一副总体设计图(如下所示),可以先整体了解一下,有个初步的认识,对后续进一步深入了解学习会很有帮助。 通过设计图有了一个初步认识后,接下来开始进一步深入学习了解,主要从以下几个方面进行了解学习: 库的组成;框架基本流程;元素创建机制;消息处理机制。 1. 库的基本组成 1.1 工具库 由于duilib没有对外部的任何库进行依赖,所以在其内部实现了很多用于支撑项目的基础类(如下图所示)。这些类分布在Util文件夹中: UI相关:CPoint / CSize / CDuiRect 简单容器:CStdPtrArray / CStdValArray / CStdString / CStdStringPtrMap 上面这些类看名字就基本能够理解其具体的含义了,当然除了基本的基础库,还有一些和窗口使用相关的工具的封装,如窗口工具:WindowImplBase,这个工具我们在这里不详述,后面使用中会经常用到。 1.2 控件库 控件库在duilib的实现中被分为了两块:Core和Control: Core中包含的是所有控件公用的部分,里面主要是一些基类和绘制的封装。 Control中包含的就是各个不同的控件的行为了。 这当中尤其要注意控件基类CControlUI和容器基类CContainerUI,这是duilib核心类(如下图所示

Duilib学习笔记《01》— duilib整体框架认识

泄露秘密 提交于 2020-01-05 16:13:45
从GoogleCode上下载的duilib工程中附带的一副总体设计图(如下所示),可以先整体了解一下,有个初步的认识,对后续进一步深入了解学习会很有帮助。 通过设计图有了一个初步认识后,接下来开始进一步深入学习了解,主要从以下几个方面进行了解学习: 库的组成;框架基本流程;元素创建机制;消息处理机制。 1. 库的基本组成 1.1 工具库 由于duilib没有对外部的任何库进行依赖,所以在其内部实现了很多用于支撑项目的基础类(如下图所示)。这些类分布在Util文件夹中: UI相关:CPoint / CSize / CDuiRect 简单容器:CStdPtrArray / CStdValArray / CStdString / CStdStringPtrMap 上面这些类看名字就基本能够理解其具体的含义了,当然除了基本的基础库,还有一些和窗口使用相关的工具的封装,如窗口工具:WindowImplBase,这个工具我们在这里不详述,后面使用中会经常用到。 1.2 控件库 控件库在duilib的实现中被分为了两块:Core和Control: Core中包含的是所有控件公用的部分,里面主要是一些基类和绘制的封装。 Control中包含的就是各个不同的控件的行为了。 这当中尤其要注意控件基类CControlUI和容器基类CContainerUI,这是duilib核心类(如下图所示

Duilib的多级菜单实现(网易云信版本)

吃可爱长大的小学妹 提交于 2019-12-12 19:32:48
完整代码见: https://github.com/netease-im/NIM_Duilib_Framework/tree/master/ui_components/menu 核心代码: ui_menu.h #ifndef __UIMENU_H__ #define __UIMENU_H__ #pragma once namespace nim_comp { using namespace ui; enum MenuAlignment { eMenuAlignment_Left = 1 << 1, eMenuAlignment_Top = 1 << 2, eMenuAlignment_Right = 1 << 3, eMenuAlignment_Bottom = 1 << 4, eMenuAlignment_Intelligent = 1 <<5 //智能的防止被遮蔽 }; enum MenuCloseType { eMenuCloseThis, //适用于关闭当前级别的菜单窗口,如鼠标移入时 eMenuCloseAll //关闭所有菜单窗口,如失去焦点时 }; //增加关闭事件的传递。 /* 点击某一菜单,获取该菜单窗口句柄,通知该菜单窗口可以关闭子菜单项了。 即某子菜单项目的父窗口等于该窗口,该子菜单关闭。 由于菜单的父子关系,会自动关闭其所有子孙菜单窗口

Duilib vs调试程序加载资源失败,但是单独执行exe可以成功

£可爱£侵袭症+ 提交于 2019-12-07 23:09:27
在Duilib程序中,在xml中如果有加载资源文件(比如png背景图片),如果调试程序是出现黑屏,加载资源失败,但是单独执行exe文件是可以的,这是很可能是因为资源文件的位置放的不对,你可能释放到xml相同的目录,但是程序实际上加载资源文件实在项目的当前目录,把资源文件放到项目的当前目录就是可以的,这样虽然是可以的,但是感觉不太符合要求,如果需要在指定的位置加载资源文件,可以使用以下代码来设置: LRESULT CSetup::OnCreate(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled) { g_PM = &m_PaintManager; LONG styleValue = ::GetWindowLong(*this, GWL_STYLE); styleValue &= ~WS_CAPTION; ::SetWindowLong(*this, GWL_STYLE, styleValue | WS_CLIPSIBLINGS | WS_CLIPCHILDREN); m_PaintManager.Init(m_hWnd); CDialogBuilder builder; CDuiString str = CPaintManagerUI::GetInstancePath(); m_PaintManager

win10黑屏Duilib资源加载失败

偶尔善良 提交于 2019-12-07 23:09:02
/*每年到课设的时候电脑总是要出来整些幺蛾子,我不写作业的时候电脑永远都是好的 0-0*/ 如题今天上课无聊清理桌面删掉了一些乱七八糟游戏软件以后再打开电脑进入win系统就是这个鬼样子, 两个框框蹦出来一个提醒我系统找不到什么什么垃圾软件(上午删掉的软件 没有删除干净,总是显示在运行不能删掉),另一个显示:Dulib资源加载失败,而且不能叉掉,也不能关掉这个进程,一关掉这两个东西,电脑就黑屏了。 百度下载了一个duilib放在c盘下的system32或者……64都没有什么用, 由于你们都问我duilib文件,我 这里有一个 密码是51xc 百度云 你们试试大概是64位系统的吧。 重新下载复制到系统目录即可。 操作步骤: 到百度搜索duilib.dll并下载; 复制文件“duilib.dll”到系统目录下; 一般情况下系统目录为: 32为系统:C:\WINNT\System32 64位系统:C:\Windows\SysWOW64 最后点击开始->菜单->运行->输入regsvr32 duilib.dll,然后回车即可解决错误问题了。(这一步我并没有实施你们可以试试) 最后直接把上午没有删掉干净的那个软件再次用2345强制删除(2345比我电脑系统力量还大,真可怕),然后关机重启就可以了。 简单来说,如果你遇到和我类似情况,是因为删掉某些不重要的垃圾软件后出现如题这种状况

怎样配置duilib

匿名 (未验证) 提交于 2019-12-02 23:56:01
duilib是一个免费的界面库,它可利用xml文件自定义界面元素,并且可以在商业项目中无偿使用。怎样在VS中配置duilib界面库呢?请看下面的介绍。 工具/原料 duilib 下载和编译duilib 1 下载并安装 SVN 客户端。 2 安装完成后,在要保存下载的 duilib 库的目录右击鼠标,选择 SVN Checkout。 3 在 SVN 界面框中填入下载地址,注意,要选择 387 这个版本。 4 在下载的文件中,用 VS 打开其中的 DuiLib.sln 工程文件。 5 在 VS 中的 DuiLib 项上右击鼠标,选择“设为启动项目”。 6 再点击 VS 菜单“生成”-“批生成”。 7 选择与 DuiLib 有关的四个项目(其余的是些示例,你也可以勾选编译看看效果),然后点击“生成”。 8 等待编译完成(编译过程中,有警告提示不要理会)。编译完成后,会在 bin 目录下生成四个 dll 。 9 现在,配置 duilib 库的准备工作就全部完成了。 END 配置duilib 1 用 VS 新建一个 Win32 Windows 类型的空项目。 2 在工程中点菜单“项目”-“属性”。 3 点击“配置属性” - “VC++目录”。 4 在其中的包含目录中添加下载的文件中 DuiLib 文件夹地址,在库目录中添加 Lib 文件夹地址。 5 这时,就可以使用 duilib