- 博客(14)
- 资源 (3)
- 收藏
- 关注
原创 DuiLib表格类和树控件 虚表实体数据
实际使用中发现,虚表模式编辑表格时,挺啰嗦的。比如选中多行时,这个选中行信息是需要调用方自己维护的。所以我认为虚表只适合列表模式下的数据展示,比如中数据库或者文件中读取行去显示。上一个版本中,实表模式有点鸡肋,不仅速度慢还非常占用内存。这次改动很大,主要是奔着实表模式下节约内存和提高速度去的,我在原有的基础上做改动,结果推倒重来无数次,忍无可忍只好从白板开始重新写了。CGridListUI、CGridListHeaderUI、GGridListBodyUI、CGridListRowUI、CGridL
2021-06-16 18:27:18
1436
5
原创 __VA_ARGS__ 可变参数宏 和 C/C++结构体序列化、json转换、xml转换。
我好像记得大学的教材是这么说的,我们现在学C++了,以前C语言是这样子的,#define pi 3.1415926现在学C++推荐这么用const double pi = 3.1415926;好吧,不带这么埋汰宏的,感觉宏是C语言的糟粕似的。宏的作用是强势替换展开,它是帮你写程序的,不是给你定义变量的。众所周知,C/C++运行时无法知道变量名字。比如说这个结构体struct tagTest{ int id; //id号 string .
2021-04-11 23:03:44
998
原创 DuiLib表格类 1
一直以来duilib并没有Grid,大多还是使用CListUI做数据表格,或者有些人像我一样,把CGridCtrl(也就是MFCGridCtrl)这个开源库拉进来用。只是CGirdCtrl有个不好的是它继承自CWnd类,是个MFC类,为此,特意开发CGridListUI,作为数据表格,同时为了以后在项目中替代CGridCtrl。CGridListUI主要是结合CListUI和CGridCtrl,我的目标是替代CGridCtrl,所以函数调用等格式尽量兼容CGridCtrl。每个单元格都是一个容器
2021-02-23 15:38:16
1367
原创 正式发布DuiLib脚本系统 结合angelscript
这篇主要介绍duilib如何使用脚本。我认为脚本的存在的意义就是补充UI库的不足,与业务逻辑无关的UI操作,都应该在脚本中完成。在所有类C++脚本语言里,angelscript与C++的相似度是最高的,不需要学习新的语法。并且,C++开发的软件集成angelscript也很方便。需要注意几点,1,和所有脚本语言一样,脚本中没有指针,相应的操作是“@”为指针,&为引用。比如脚本中这么写,CPaintManagerUI @pManager = btnControl.GetManag
2021-01-23 11:53:29
1238
1
原创 DuiLib中图片属性的编辑
DuiLib中图片属性的编辑在DuiLib中图片属性编辑还是挺麻烦的一件事情,特别是手写xml。这次介绍如何在DuiEditor中可视化操作,轻松快速选取图片。先看一下界面:接下来主要演示各种场景的使用,以及image属性的含义。1,dest属性。如下图,我想在这个按钮的确认前面加个图标,...
2020-12-15 01:08:00
2747
3
原创 DuiLib多语言解决方案
DuiLib多语言解决方案我参考了一下现有的duilib多语言解决办法,基本上就是手工维护字符串列表,在GetText中通过偷梁换柱的方式把显示的文本替换掉了,包括tooltip、tipvalue,其中也可以把image属性也作为多语言的字符串处理,还有在DiableBuilder偷偷换掉xml名字去加载。特点都是纯手工维护,对于稍微大型的软件,维护起来就困难重重。为了贯彻能偷懒就偷懒的方针,决定依靠设计器实现统一维护多语言包。我的想法是,回归到数字ID作为属性去匹配字符串,每个xml产生单独.
2020-12-08 11:30:13
1669
5
原创 duilib仿百度网盘界面
duilib仿百度网盘界面这一篇我们介绍使用DuiEditor做一个百度网盘的demo界面。首先简单分析一下这个界面,这是一个上下布局结构,第一层包括了标题拦、工具栏,第二层为客户区。1,新建文件,保存为MainFrame.xml,并设置Window大小为1000,700。设置VerticalLayout背景色为白色。2,选中左边控件树VerticalLayout,依次插入一个HorizontalLayout和Tab...
2020-10-05 17:12:06
2371
5
原创 DuiEditor高级教程
DuiEditor的高级教程这一章主要介绍DuiEditor的设计技巧和说明。一,duilib.xml属性文件。这个文件标注了duilib的所有控件和属性,在老版的DuiDesigner里面,控件和属性都是写死的,不方便扩展,如果你改动了属性默认值或者增加控件等等,修改设计器会变成很烦躁的工作,不仅复杂还不好维护。为此,DuiEditor在原版的属性文件上做了一写扩展,设计器仅从这个文件载入控件和属性。比如你为duilib写了一个...
2020-06-27 00:11:48
1857
原创 duilib设计器 DuiEditor简易教程 (DuiDesigner) (三)
DuiEditor简易教程(二)4,设计主界面继续。上一章有个错漏的地方,没有给工具栏按钮设置group属性。回到界面设计,工具栏下来是一条水平分割线。它只需要3个属性就搞定了。接下来是主界面,这里有两排,一排Option和Tablayout页面。我们原先插入的是HorizontalLayout控件,应该是错了。点击设计器工具栏的代码按钮,如图,把箭头所指HorizontalLayout改成VerticalLayout。取名...
2020-06-19 00:06:36
2187
5
原创 duilib设计器 DuiEditor简易教程 (DuiDesigner) (二)
DuiEditor简易教程接上文。3,设计工具栏。这个工具栏分2部分,左边是工具栏按钮,右边是一个大的logo图片。选中工具栏这一块的HorizontalLayout,为了方便述说,取名为HC。在HC中插入2个HorizontalLayout子控件,分别取名为HD,HE。设置HE的属性width=150,在HE中插入一个按钮,给按钮设置bkimage=logo.png。当然也可以不插入按钮而是直接给HE设备背景图片,其实这个按钮...
2020-06-17 10:49:41
1622
原创 duilib设计器 DuiEditor简易教程 (DuiDesigner) (一)
DuiEditor简易教程一,DuiEditor是什么?DuiEditor是duilib界面库的界面设计器,编写过程中参考了老版UIDesignner的大量代码,改名只是为了稍作区分,没有任何剽窃或不尊重原作者之意。其实这个工具已经写了好几年了,提不起太大的兴趣写什么教程,自己好用就行,毫无疑问的,设计器比手写xml大大的提高了效率。DuiEditor已经开源,任何公司或个人可以随意修...
2020-06-15 16:02:13
9977
11
原创 给duilib增加脚本支持(三)
这一章介绍脚本插件的编写,现在才是划重点的时候了。angelscrript的作者提供了很完整的文档,由于本人英语有限,我错误恳请指出。angelscript简直就是给C++程序量身订造的脚本语言,和C++语言基本无差别,还是那句话,可惜没有流行起来。不说闲话,开始上代码。先定义两个导出函数。供duilib回调创建脚本引擎和删除脚本引擎。extern "C" __declspec(dlle...
2020-04-06 12:34:34
334
原创 给duilib增加脚本支持(二)
上篇文章介绍了脚本响应duilib控件事件,以及脚本中调用duilib的函数。现在说一下具体的实现方式。为了避免对duilib库太大的改动,使用插件方式载入。首先在CPaintManagerUI头部定义一个接口。class UILIB_API IScriptEngine{public: virtual bool AddScriptCode(LPCTSTR pScriptCod...
2020-04-06 11:25:30
309
DuiEditor源代码 (新版DuiLib UIDesigner)
2020-06-15
候捷-深入浅出MFC chm 简体中文
2009-03-02
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人