Duilib for Delphi 正在参加 2020 年度 OSC 中国开源项目评选,请投票支持!
Duilib for Delphi 在 2020 年度 OSC 中国开源项目评选 中已获得 {{ projectVoteCount }} 票,请投票支持!
投票让它出道
已投票
Duilib for Delphi 获得 2020 年度 OSC 中国开源项目评选「最佳人气项目」 !
Duilib for Delphi 获得 2020 年度 OSC 中国开源项目评选「最佳人气项目」「最积极运营项目」 !
Duilib for Delphi 获得 2020 年度 OSC 中国开源项目评选「最积极运营项目」 !
授权协议 Apache-2.0
开发语言 Delphi/Pascal
操作系统 Windows
软件类型 开源软件
所属分类 程序开发GUI开发框架
开源组织
地区 国产
投 递 者 不在乎y
适用人群 未知
收录时间 2015-11-30

软件简介

导读

       什么是Duilib for Delphi?  Duilib for Delphi是一个基于C++Duilib的开源工程,主要致力于在Delphi中使用Duilib库构建漂亮的UI。 

       怎么学习?首先对Duilib有基本的了解,特别是XML构建的UI上,可以在网上查找duilib的文章,学习如何构建基于XML的UI,其次要有一定的Delphi基础,不然学起来会很麻烦。

       是否跨平台? 不能跨平台,除非Duilib能跨平台了。

       是否支持低版本Delphi,比如Delphi7? 已经支持D7


一、初衷

         原本是看着Delphi一直是使用控件快速拖出来的界面,现存也未找到较好的UI与界面分离的库, 看着c++的那么多优秀的UI库,有时候也会“眼红”下的,因为一直喜欢Delphi,所以也一直希望在Delphi中也有这样一套UI库或者说使用这种,虽然说思想上偏离了Delphi原本的快速开发,但我觉得有时候不失为一种新的解决之道。 


二、行动

       于是去年利用周末的时间去翻译,因为原Duilib的库的代码太多了,所以翻译了几个单元之后就放弃了,没有这么多精力去完全翻译,于是另想到一种:既然不想翻译那就走调用他的路吧,可是原 duilib库是提供给c++用的,所以并没有直接使用的接口,只能自己改造下,一开始并没有成功,后来因为工作的原因就忘记这个东西了,今年突然又想起来这个事了,找到以前的代码,经过调试后发现以前没成功的原因,并用Delphi重写了部分原duilib QQ界面的demo


三、现状

        一直在寻找最快速的转换访求,中间不停的尝试着不同的方法,最后无懒选择了一种折中的办法,相对第一版要简单些,相对第二版又较麻烦些。由是代码实在太多了,就算第二种办法也需要花费大量的时间做基础工作,于是萌生了自动化的思想,花了几个小时写了一个转换工具,那晚一直写到大概快凌晨5点才睡觉。由于第一版的工具是一个说即做的产品,很多地方都是直接怎么简单就怎么写,效果也不是特别的好,调整也麻烦,于是抽了点时间重写了转换工具,这次的转换上质量高,基本转出来就能直接使用。但还有一点未开始做,不然也会增加翻译的工作量,根据c++的虚函数生成一个新的类,用来与Delphi交互用。 但愿后面补上这个功能。如果能更简单的话就直接生成Delphi的类,这样工作量减轻了至少80%。


四、不足之处

       在关于类虚拟方式的重载问题上暂是没有好的办法,只能通过重写类,然后中转操作。另外hook方面也试过,还有想好有什么更好的办法(因为博主不想改动duilib的源代码而达到这种需求,此举是为了今后的升级作着想,另外有些方面也因为考虑升级不方便的问题而只能改用最直接的方式)。

展开阅读全文

代码

的 Gitee 指数为
超过 的项目

评论 (0)

加载中
更多评论
暂无内容
发表了博客
2014/10/09 09:27

duilib

一、Duilib的整体架构 二、Duilib框架基本流程(Win32创建窗口流程) 第一步:实例句柄与渲染类关联 CPaintManagerUI::SetInstance(hInstance); CPaintManagerUI::SetResourcePath(LPCTSTRpStrPath) 第二步: 初始化COM库, 为加载COM库提供支持 ::CoInitialize 第三步:创建窗口类 第四步:调用CWindowWnd::Create创建窗口,Create函数实现了注册窗口,指定回调函数,创建窗口,处理消息等。 第五步:窗口居中 CWindowWnd::Cent...

0
4
发表了博客
2014/05/20 09:11

duilib (-)

从GoogleCode上下载的duilib工程中附带的一副总体设计图(如下所示),可以先整体了解一下,有个初步的认识,对后续进一步深入了解学习会很有帮助。 通过设计图有了一个初步认识后,接下来开始进一步深入学习了解,主要从以下几个方面进行了解学习: 库的组成;框架基本流程;元素创建机制;消息处理机制。 1. 库的基本组成 1.1 工具库 由于duilib没有对外部的任何库进行依赖,所以在其内部实现了很多用于支撑项目的基础类(如下...

0
2
发表了博客
2011/06/02 14:36

DuiLib简介

国内首个开源 的directui 界面库,开放,共享,惠众,共赢,遵循bsd协议,可以免费用于商业项目,目前支持Windows 32 、Window CE、Mobile等平台。 Duilib 是一款强大的界面开发工具,可以将用户界面和处理逻辑彻底分离,极大地提高用户界面的开发效率。提供所见即所得的开发工具UIDesigner。使用DirectUI后将使得我们的设计人员彻底解 放,不会受到开发的束缚,可以充分地发挥其设计能力来设计软件界面,并参与到用户界面开发过...

0
8
发表了博客
2019/04/10 10:10

duilib入门教程

duilib使用手册 1.简介 duilib是一个开源 的directui 界面库,使用XML来描述界面风格,界面布局,将界面与逻辑分离,能够快速开发美观的界面。 2.代码下载与编译 2.1代码下载 github网址:https://github.com/duilib/duilib 下载后的代码结构如下: 2.2编译 打开根目录的Duilib.sln,github上的工程是VS2013的,使用VS2017打开时,会提示升级工程,点升级即可。如果没有升级成功,在工程配置中修改如下选项,选择win10的sdk和V...

0
0
发表了博客
2019/04/16 11:50

Duilib总体框架

从GoogleCode上下载的duilib工程中附带的一副总体设计图(如下所示),可以先整体了解一下,有个初步的认识,对后续进一步深入了解学习会很有帮助。 通过设计图有了一个初步认识后,接下来开始进一步深入学习了解,主要从以下几个方面进行了解学习: 库的组成;框架基本流程;元素创建机制;消息处理机制。 1. 库的基本组成 1.1 工具库 由于duilib没有对外部的任何库进行依赖,所以在其内部实现了很多用于支撑项目的基础类(如下...

0
1
发表于大前端专区
2019/05/08 02:44

DuiLib在VS2012下的编译

DuiLib在VS2012下的编译 DuiLib在VS2012下的编译 一. 直接修改*.vcxproj 1.修改vcxproj文件 2.使用VS2012打开工程 3.修改对应Plamtform Toolset 3.编译报错 error C2065 ;代码加一回车,编译成功 二 使用cmake重建工程 1.下载CMake,地址:https://cmake.org/download/ 2.打开cmake-gui.exe 3.修改 CMAKE_INSTALL_PREFIX,并生成代码 4.打开工程 4.修改Post-Build Event DuiLib开源界面库。下载DuiLib,https://github.com/duil...

0
2
发表了博客
2020/05/16 13:59

duilib 小知识 之窗口

窗口管理类: duilib有一个窗口管理类: class WindowsManager { public:   SINGLETON_DEFINE(WindowsManager);   WindowsManager();   virtual ~WindowsManager();   //根据窗口类名和id注册窗口   bool RegisterWindow(const std::wstring wnd_class_name, const std::wstring wnd_id, WindowEx *wnd);   //根据窗口类名和id注销窗口   void UnRegisterWindow(const std::wstring &wnd_class_name, const std::wstring &wnd_id, Win...

0
0
发表了博客
2020/08/21 15:09

duilib 自定义控件

0 自定义控件原因: duilib已经写了许多基本控件,但是需求总是多样的,要满足这些需求,就得自定义控件 比如,显示窗口快照的控件 这里,窗口是通过HWND 直接绘制在控件中的,而不是通过设置背景图的方式。 1 自定义控件类 我要自定义的控件,是显示HWND窗口图,不涉及子控件,因此,只要继承自Control控件就可以了 1.1)继承原控件类 //HWND bmp #ifndef _UIHBITMAPCONTROL_H_ #define _UIHBITMAPCONTROL_H_ #pragma once n...

0
0
发表了博客
2014/04/04 21:20

Duilib使用的点滴记录

最近在一个新的产品上使用了duilib,终于可以方便的做出漂亮的界面了,在此要感谢开发者。不过在使用的过程中也发现了几个问题,但duilib的源码好像已经不更新了,所以就在此记录下来,方便后来人。 遇到的问题主要TreeView这个控件,一个是树节点模板加载的问题,一个是树的叶子节点不显示展开按钮的问题。 1. 树节点模板加载 在我们的实际使用中,一般只是在主xml中写一个TreeView,然后TreeNode会写在一个单独的xml中,比如就...

0
2
没有更多内容
加载失败,请刷新页面
点击加载更多
加载中
下一页
暂无内容
0 评论
12 收藏
分享
OSCHINA
登录后可查看更多优质内容
返回顶部
顶部