目前有许多界面采用duilib编写,大家可以去网上搜集相关资料。...环境的配置 首先我们去github上获取相关的源代码,这个是对应的项目地址:https://github.com/duilib/duilib 下载完后,在目录中找到一个.sln结尾的文件,使用visual...studio编译器打开,打开后发现有一个duilib的项目,以及其他,其实真正有用的就是这个duilib,其余的都是官方给出的例子代码。...然后创建一个新类,我们叫做CDuiFrameWnd,下面是类的源代码 //头文件 #include using namespace DuiLib; class CDuiFrameWnd...总结 上面我们说明了duilib的基本框架,下面来总结一下: 1.
这里做一下转发 ========================================================================= github的duilib官方仓库是不支持...github地址:https://github.com/juhuaguai/duilib 有兴趣的可以自行下载查看,代码改动量并不大。
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/120246.html原文链接:https://javaforall.cn
有时候我们在使用duilib的同时,可能想自己在窗体上绘制一些图形、线条等等,但是发现绘制不上去。emmm,不用烦恼,其实是绘制上去然后又被duilib自身的绘制机制给擦掉了应该。...这样有1个限制,duilib默认是后添加的控件Z序高,而实际绘制全部控件的时候,Z序高的控件在上层。因此如果这个控件的Z序比较低,是有可能被其他控件盖住的,这个要看具体的布局了。
https://blog.csdn.net/u012081284/article/details/81531435 github的duilib...github地址:https://github.com/juhuaguai/duilib 有兴趣的可以自行下载查看,代码改动量并不大。
大家好,又见面了,我是全栈君 #pragma once #include using namespace DuiLib; #ifdef _DEBUG # ifdef _UNICODE...# pragma comment(lib, "DuiLib_ud.lib") # else # pragma comment(lib, "DuiLib_d.lib") #...endif #else # ifdef _UNICODE # pragma comment(lib, "DuiLib_u.lib") # else # pragma comment...(lib, "DuiLib.lib") # endif #endif class CDuiFrameWnd : public CWindowWnd, public INotifyUI { public...m_PaintManager.AttachDialog(pWnd); //m_PaintManager.AddNotifier(this); // 添加控件响应消息,这样消息就会达到duilib
duilib的基本流程如上图,通过解析一个xml文件,将文件中的内容渲染为窗口界面,这个解析过程由WindowImplBase类来完成。 基本框架如下: 1....首先在公共头文件中加入如下内容: #include #include using namespace DuiLib; #ifdef _DEBUG...#pragma comment(lib, "DuiLib_ud.lib"); #else #pragma comment(lib, "DuiLib_d.lib"); #endif 这个是duilib的一些基本配置...这三个函数告知duilib库应该从哪个文件夹下解析哪个xml文件,并定义对应窗口的名字,以后这个类就代表这个xml文件所描述的窗口 需要注意的是这些函数必须在头文件中这样写,我自己写在CPP文件中它在运行时报错...int cx = CW_USEDEFAULT, int cy = CW_USEDEFAULT, HMENU hMenu = NULL); 可以看到它就是对WIN32中CreateWindow的封装,在这duilib
之前写过一篇duilib自绘,其中主要介绍了PostPaint。...下面重新介绍下duilib的绘制流程。...2.使用OnPaint成员变量,其实是duilib提供的一个委托机制,在 bool CControlUI::Paint(HDC hDC, const RECT& rcPaint, CControlUI*...2.使用委托,类似上面的例子pBtn->OnPostPaint += MakeDelegate(OnPostPaintMybtn); duilib控件的自绘就先介绍到这里,大家可以根据实际需要来选择,而不用每次都去派生子控件
部分BUG 一、WindowImplBase的bug 在第8个教程【2013 duilib入门简明教程 — 完整的自绘标题栏(8)】中,可以发现窗口最大化之后有两个问题, 1、最大化按钮的样式还是没变...std::string string_t; #endif 下面是我常用的Unicode定义: #include #include namespace duilib...的整体有所映像了,下面就来介绍下duilib具体控件的使用。...Edit显然就是编辑框啦,Button就不用多说了吧~ 上面提到的控件都是简单控件,拖到设计器上就能直观的看到效果,绝大部分属性都和Button一样,就不赘述了,所有控件的所有属性都在【duilib...而Tab控件的切换会触发selectchanged消息,所以我们可以在这里处理它,此处的处理是切换到相应的Tab页(不过我觉得duilib应该做成自动切换的,无需写代码,只需写前面的XML即可自动切换)
由于官方在一次大更新duilib代码之后,自带的设计器源码没有更新,所以自带的设计器已经弃用。貌似最新的github官方库已经看不到这个设计器源码了,不过历史版本应该还是能看到的。...https://github.com/juhuaguai/duilib这个代码仓库里面就有源码。...duilibpreview是由使用duilib的前辈(好像是以前3群的大蓝头)编写的工具,可以作为notepad++等插件,一边编写xml一边预览效果,极大的方便了xml的编写,对duilib的入门很有帮助...最后,这个DuilibPreview.exe的源码也给出了,使用的duilib动态库是根据自己的配置,默认使用是duilib_u.dll,如果你有自己的duilib版本,可以链接你自己的duilib_u.lib...用你自己的duilib_u.dll。
在群里还有一些刚刚接触duilib的朋友们问到duilib自定义控件的问题,这里我转载一篇redrain大佬的博文。主要是这篇文章写的太好了,我们直接参考理解就好,我写的肯定没这个好。...需要注意redrain大佬的这篇文章写的时间比较早,是基于早期的duilib版本,新版的duilib略有改动,我在下文中已经进行了修改。 ...用Duilib开发界面时,很多情况下库自带的控件不满足需求,就需要基于Duilib建立自定义控件(自绘新的控件,或者用来封装win32的子窗体,来显示视频、网页等)。 ...从Duilib的自带控件上可以看出,那么GetClass函数返回的字符串一般是DUI_CTR_XXXX,这个经常用于duilib内部识别具体控件类型用。...总结: 差不多就说道这里了,把常见的自定义控件的基本步骤说明了一下,实际开发时还要多看Duilib的源码,才能称心如意的开发控件,希望对刚接触Duilib的朋友有帮助!
贴图的描述方式有两种,其实看 // 1、aaa.jpg // 2、file='aaa.jpg' res='' restype='0' d...
1、JS-git Git SCM Implemented as a set of JavaScript modules for use in any JS https://www.bountysource.com.../fundraisers/325-js-git 2、JSON库 官网为:http://www.json.org/,介绍了不同语言的JSON库,可以了解一下。...Duilib 目前支持Windows 32 、Window CE、Mobile等平台,使用C++开发,遵循BSD协议,可以免费用于商业项目。...支持带透明通道的png 图片 这里是使用Duilib做的一个 demo:http://www.oschina.net/code/snippet_125020_4577 Duilib源码托管:http:/.../code.google.com/p/duilib/ Duilib参考项目:http://www.viksoe.dk/code/windowless1.htm 4、可扩展的服务器IO完成端口以及如何使用
github:https://github.com/juhuaguai/duilib gitee:https://gitee.com/juhuaguai_net/duilib 最初是由官方的duilib...( https://github.com/duilib/duilib ) 复制过来的,可以使用vs2008打开,新增一些学习测试用的demo,代码也会同步官方的后续修改。...这篇文章算是给自己的维护的这个duilib仓库做的广告文。测试使用过程中有任何问题可以提issue或者在这里留言私信等。也可以发邮件juhuaguai@yeah.net。 欢迎交流编程技术!
之前有个duilib预览工具duilibpreview,可以嵌入notepad++和editplus中,非常方便的预览duilib的xml文件。...预览工具地址:https://github.com/juhuaguai/duilib/tree/master/DuilibPreview ,自行编译即可,exe我就不提供了。...推荐使用duilib的朋友使用duilibpreview插件。...5.自己写插件用于调用duilib预览工具duilibpreview 1)打开sublime text 3,在sublime的菜单栏里,点击“工具-插件开发-新建插件”,会创建个python...== 哈哈,还有一种简单的方法: 1)打开sublime text 3,在sublime的菜单栏里,点击 工具-编译系统-新建编译系统 ,大括号中的代码改为如下所示: { "cmd": ["E:\\duilib
最近又有朋友问我duilib多语言的支持,干脆做个demo,顺便简单写个介绍,仅供参考,有更好的方案也欢迎交流。...demo地址:https://github.com/juhuaguai/duilib/tree/master/MultiLanguagDemo 上图是demo的效果,不用重启应用程序,直接切换,界面直接就更新了...原理就是依赖于duilib里PaintManager里面的多语言接口。核心是%{i},i是整型,可以认为是ID。...这个过程在duilib的CRenderEngine和部分控件的paintText中自动进行了。
const TImageInfo* AddImage(LPCTSTR bitmap, HBITMAP hBitmap, int iWidth, int iHei...
Windows界面开发,笔者使用过的方案有三种:MFC、Duilib、WEB(基于CEF运行容器),各有优缺点。...Duilib进行界面开发,其使用DUI技术,通过XML文件编写布局、控件、设置属性,国内很多知名软件(包括微信PC版、91助手、钉钉等)都使用Duilib库作为界面开发库,缺点是有bug很久没有更新,如果自己没有界面开发库的沉淀...,建议将Duilib库作为基础,进行扩展和BUG修订。...笔者在项目实践过程中,采用混合开发方案,将Duilib和WEB两种方案结合起来,对于要求高性能的界面(比如窗口实时渲染)使用Duilib(C++)开发,对于复杂界面、炫酷界面使用WEB开发,然后扩展CEF...提供JS接口让WEB可以跟原生C++层进行通信,基于该通信通道WEB就可以将需要调用原生的逻辑交给C++来实现。
因为通过鼠标拖动滚动条,实际内部用到了定时器,具体有兴趣的可以查看duilib的源码。...我们的程序在处理时常常也会用到WM_TIMER消息,通过拦截WM_TIMER消息来做一些定时器处理,不能拖动的原因很有可能就是我们拦截了定时器消息之后,不管触发这个消息的定时器ID是多少,我们统统都不再继续传递给duilib
duilib的容器的滚动条是根据子控件来判断是否展示的。如果父控件可以根据情况在SetPos里面动态调整子控件的大小,在这个条件下,存在这样一种情况: 1.滚动条一开始不展示。...第二种需要自行修改duilib库源码,或者派生新的控件来处理,应该是没有什么问题的。这两种办法我都没有严格测试。请谨慎。
领取专属 10元无门槛券
手把手带您无忧上云