Code Monkey home page Code Monkey logo

simdsoft / redm Goto Github PK

View Code? Open in Web Editor NEW
62.0 5.0 37.0 120.21 MB

REDM是一套基于商业化标准的开源directui界面框架,不仅能提供完善的项目管理方案、详细的文档框架,也可轻松协助完成可视化界面设计,其核心库的稳定性已在内部多个大型商化项目中通过验证。

Home Page: http://hgy413.com/3426.html

License: MIT License

CMake 1.04% C++ 98.46% C 0.23% Batchfile 0.17% PowerShell 0.10%
dui directui skia duimagic uidesigner pugixml

redm's Introduction

REDM


Latest Release

Build Status
Visual Studio 2022, C++17/20/23 CI
Visual Studio 2010,2013,2019 Build status

1. 为什么开源DM库

  • DM的部分代码,部分框架本来就是取之于各类开源,所以尝试开源DM库,取得于开源,回馈于开源,为开源软件业贡献自己的一份小小力量

  • 就目前所有开源的DUI库来看,个人认为有个很大的不足,那就是并未按商业化的标准来做这些开源项目:

    • 没有文档
    • 没有框架图
    • 没有帮助说明
    • 代码未规范化,基本无注释
    • 没有单元测试
    • 没有设计器

当然,瑕不掩瑜,个人还是非常佩服这些开源的大牛们的!

REDM是一套基于商业化标准的开源directui界面框架,不仅能提供完善的项目管理方案、详细的文档框架,也可轻松协助完成可视化界面设计,其核心库的稳定性已在内部多个大型商化项目中通过验证。

  • DM库有详细的文档,详细的框架图:DM\Docs\DM详细文档.doc;DM\Docs\DUI主流程图.vsdx
  • DM库运行了两年,前身为yggui,稳定可靠,部分示例
  • DM库的代码统一规范,注释统一使用doxygen支持方式,参考在文件头标明链接
  • DM库有详细的gtest单元测试,针对每个细分功能点
  • DM库使用全扩展性:支持注册皮肤解析类、样式类、布局类、解码类、资源打包类、渲染类、绘制类、LOG类、TIPS类、动画类、脚本类
  • DM有设计器,同样完全开源

2. 开源协议

DM库需要遵守什么开源协议?

无任何协议,无论个人,团体,公司,都可以随意使用,修改,COPY DM库,开源的目的不是为了强制你使用这个库,如果你能从这个库中拿到你需要的代码,这也是OK的

3. 关于

4. 附录

4.0 DM库快速入门任务式

  • DM库快速入门任务式教程(1小时内学会使用DM)

4.0.0 Effect-Designer

  • Effect-Designer,一款类似于抖音特效素材制作工具的,非常强大的短视频特效素材设计器,由天涯行客大神提供,天涯行客大神也是REDM的深度开发及维护者。 effectcreator

recordsoft

4.1 NSDM

  • NSDM,使用设计器设计安装界面,并用NSIS实现安装打包功能 nsdm

4.2 DMCef

  • DMCef插件,实现Cef相关功能 cef

4.3 设计器

简单的完整构建图 新建/打开资源
a b
双击打开历史资源 内置基础控件
c d
坐标调整 属性调整
e f
复制粘贴删除控件 多图增加皮肤
g h
跳转选中文件或文件夹 扫描校验错误
i j

4.4 部分项目

古剑奇谭登陆器 4366游戏大厅
a b
特牛游戏大厅 YY游戏大厅
c d
欢乐砸蛋 YPLAY
e f
YY游戏微端 LOL外服盒子
g h
YGP盒子 天刀盒子
i j
战舰盒子 YY端游独立下载器
k l
网吧桌面管理器 网吧后台进程管理器
m n
STREAM助手
o

4.5 自带Demo

DMDemo QQDemo
a b
TGPDemo
c

4.6 生成帮助文档

redm's People

Contributors

ancwarrior avatar ataluzik avatar elcondorpasa123 avatar halx99 avatar hgy413 avatar leiurayer avatar liufyhui avatar lzlong88 avatar monlove avatar tcbr avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

redm's Issues

Fix building with MSYS2 MinGW-w64

After #17 I could get cmake generated the ninja build script and I could start the build. But I'm unable to complete the build. It failed right away at DMDef.h.

如果开启了对话框阴影,双击对话框阴影即消失

win7以上可考虑如下方式:

static bool IsCompositionEnabled()
{
	static int NTVer = 6;
	if (NTVer < 6) return false;

	BOOL enabled = FALSE;
	DwmIsCompositionEnabled(&enabled);

	return enabled;
}
if (bShadow) {
       if(IsCompositionEnabled()) {
		// apply shadow
		int v = 2;
		DwmSetWindowAttribute(m_hWnd, 2, &v, 4);

		MARGINS margins = {1, 1, 1, 1};
		DwmExtendFrameIntoClientArea(m_hWnd, &margins);
	} else {
		; // Use CS_DROPSHADOW
	}
}

消息循环优化,模态对话框优化,关闭后父窗口被系统置于后层问题

关键问题原因是: Enable父窗口之前Destroy了模态对话框, 详见: https://blog.walterlv.com/post/fix-owner-window-dropping-down-when-close-a-modal-child-window.html
但现有代码里,gApp->Run消息循环结束后会DestroyWindow, 导致外部DHMDialog::DoModal里Enable父窗口时已经晚了,在Destory模态对话框时系统已经自动选择了其他进程窗口作为前台窗口, 优化思路:

  1. DMAppData::Run里面不再负责HWND的销毁, 也不再负责ActiveWindow的Enable,Disable/Enable最好成对出现,也就是只在DHMDialog::DoModal里去做, 可参考mfc代码
  2. 为了复用DMAppData::Run提供的消息循环,不在向外部暴露,进而使用顶级窗口类DMHWnd类向外暴露例如MainLoop, 进而hwnd的Destory也由DHHwnd负责

Roadmap

roadmap

v1.x 保持兼容的情况下修复一些问题

  • appveyor ci集成
  • 模态对话框父窗口隐藏问题 [bug]
  • 使用DWM重新实现对话框阴影,详见: #5
  • DUIWindow增加获取文本接口
  • 优化文本多行显示增强: a. 优化转义换行,更接近编程语言转义, b. 真实换行符支持
  • 设计器ValueEdit承载多行内容
  • 优化BSTR使用,修复内存泄露

v2.x 更多的优化,和特性

  • 升级pugixml库,保持可独立更新
  • 统一布局xml元素命名风格,目前看来有些大写,有些小写,早期dm对pugixml库做了特殊修改忽略大小写
  • 更换布局元素Static为label
  • 优化GetText/SetText,使之更易用,作为虚接口可作用于label, button, edit, richedit控件
  • 优化编码转换接口,统一为ntcvt实现,避免不必要的内存拷贝
  • CMake脚本增加C++标准选择, 例如: -D_CXX_STD=17
  • 优化BSTR使用,修复内存泄露
  • - UTF-8: 解析
    - UTF-16:
    - 文本渲染
    - 路径处理
    - 字体创建
  • 支持通过DM_EXCLUDE_XXX宏裁剪ActiveX等组件
  • 优化头文件包含,用户不再需要添加一堆DM头文件搜索路径,更方便集成到已有软件系统
  • DPI实现
  • 支持在vs2010~vs2022下编译
  • Github CI持续集成
  • svg支持
  • D2D渲染
  • Microsoft Edge webview2
  • 文档markdown化,后续可考虑集成readthedocs或docfx

v3.x 更远的理想

  • OpenGL渲染
  • Cross-platform

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.