Giter VIP home page Giter VIP logo

duivision's Introduction

DuiVision

License QQ群325880743 GitHub stars GitHub forks

DuiVision界面库是参考了仿PC管家程序、金山界面库、DuiEngine、DuiLib等多个基于DirectUI的界面库开发的。

DirectUI技术一般是指将所有的界面控件都绘制在一个窗口上,这些控件的逻辑和绘图方式都必须自己进行编写和封装,而不是使用Windows控件,所以这些控件都是无句柄的。

DirectUI技术需要解决的主要问题如下:

  • 1、窗口的子类化,截获窗口的消息;
  • 2、封装自己的控件,并将自己的控件绘制到该窗口上;
  • 3、封装窗口的消息,并分发到自己的控件上,让自己的控件根据消息进行响应和绘制;
  • 4、根据不同的行为发送自定义消息给窗口,以便程序进行调用;
  • 5、一般窗口上控件的组织使用XML来描述。

通常DirectUI的界面库都采用XML配置文件+图片+控制脚本(Lua、Javascript等)的开发方式,非常类似于Web程序的开发方式,当然这里面控制脚本也可以直接使用C++代码来实现。这种开发方式可以大大提高开发效率,将程序员从繁琐的界面工作中解脱出来,并且通过美工的设计,可以使界面更美观。

DuiVision开源下载地址(github):https://github.com/blueantst/DuiVision

DuiVision开源下载地址(gitee):https://gitee.com/blueantst/DuiVision

蓝蚂蚁工作室主页:http://www.blueantstudio.net

作者Blog:http://blog.csdn.net/oceanheart

QQ群:325880743 (Script.NET&DuiVision社区)Script.NET&DuiVision社区

微信公众号:blueantstudio 或搜索 蓝蚂蚁工作室

下载DuiVision Demo程序:20240104版本

下载DuiVision 浏览器演示程序:20161218版本

下载DuiVision IM演示程序:20161218版本

下载DuiVision 仿360演示程序:20161218版本

下载DuiVision exe内嵌界面资源演示程序:20161218版本

DuiVision提供了VC向导用于创建应用工程,以前使用向导的安装包进行向导安装,目前推荐的向导安装方法是使用网友蜡笔小辛提供的js安装向导,首先下载github代码库到本地,然后直接点击执行DuiVision\DuiWizard\SetupWizard.js文件,会提示安装哪些VC版本的向导。这种方法安装的向导优点是每次界面库有更新不需要安装新版本的向导,只要更新了github库就可以自动使用最新的向导。注意DuiVision的目录最好不要放在有空格或中文的路径下面,否则向导可能会出现一些异常问题。

下载DuiVision开发手册:DuiVision开发手册-20200603.pdf

下载DuiVision控件开发指南:DuiVision控件开发指南-20190923.pdf

下载DuiVision Tcl脚本开发手册:DuiVision Tcl脚本开发手册-20201208.pdf

License

(The MIT License)

Copyright (c) 2013-2024 blueant studio. and other contributors

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the 'Software'), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

一些界面演示程序截图

主界面 控件演示1 控件演示2 控件演示3 控件演示4 支持复杂控件的弹出窗 仿360界面 仿QQ PC管家界面 仿360 10.0界面 Flash对话框 半透明对话框 Web控件 菜单

浏览器演示程序截图

浏览器主界面 浏览器设置窗口

IM演示程序截图

IM主界面 IM聊天界面

其他应用程序截图

OpenRTU界面 OpenRTU界面 OpenRTU界面

VC工程向导截图

选择工程模板 向导第1步 向导第2步 向导第3步 向导第4步

贡献者名单

DuiVision的基础代码有很多是从下面几个界面库移植的:

其他贡献者:

  • blueant : 移植代码,搭建DuiVision框架
  • 齐 : XML库移植到pugixml、XML封装库等
  • 蜡笔小新 : 完善VC向导...
  • water : 提供阴影窗口等代码,协助解决一些bug,提出若干改进建议
  • 风儿吹吹 : 增加了多字符集的支持,支持多字符集和Unicode两种编译方式
  • 黑色泡泡糖: 增加控件的鼠标右键事件处理代码
  • LieberVogel: 修改popuplist的滚动条问题
  • wPgg1es : edit控件增加背景色和显示滚动条显示功能
  • starrier : 优化文件拖拽等代码
  • Samuel : 修改树控件的一些问题
  • Crystal cat: 提供了自适应DPI虚拟化代码
  • 开始(HammerCheng) : 修改gridctrl删除子控件问题,以及其他若干内容,增加注册Windows消息接口
  • 畅爽,蛋蛋爸 : 修改64位编译问题
  • 随缘(lhc) : 修改DuiEdit控件的焦点问题
  • 山不转水转(shelovemee) : 修改阴影窗口等问题
  • 推推 : ComboBox下拉框优化
  • xfirefly : 升级pugixml版本到1.13

还有很多提出改进建议和改进方法的人,没有一一列出来,欢迎大家参与这个开源项目,共同完善。

捐赠

支付宝账号:

支付宝账号

duivision's People

Contributors

blueantst avatar hammercheng avatar hioscar avatar jinpengxuan avatar ligongjian avatar mxwxz avatar qihaiyan 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  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  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

duivision's Issues

dlgpopup中中resetControl减慢效率

最近升级的dui库,但发现其影响到了我的托盘菜单的绘制效率
我的制作的托盘菜单类似360的托盘菜单,其中有多个图片的按钮,和其他多种控件
(使用DuivisionDemo中的托盘菜单看不出来)
我在鼠标移出、移入按钮时,大概的需要0.5秒的样子,按钮才能重新绘制状态
菜单项的移入移出未见效率变低
经过定位,我发现在下面增加dlgpopup 中 resetControl修改之后导致的问题
如果我将resetControl注释掉,则效率提高。

请问这个resetControl的主要作用是什么?能否优化

Revision: ff71941
Author: blueantst
Date: 2015/4/21 1:43:30
Message:
popup窗口支持响应鼠标事件进行界面的刷新。


Modified : DuiVision/include/DlgPopup.h

Modified : DuiVision/source/DlgPopup.cpp

richedit

richedit 控件bug 小键盘输入 显示字母 比如 摁1 输入a ; enter换行无效;鼠标选择问题;群主有空 看看

class DuiXmlDocument : public DuiXmlNode 继承错误

class DuiXmlDocument : public DuiXmlNode 继承错误
\DuiVision\include\DuiXml.h中 77 行
应改为class DuiXmlDocument : public xml_document /DuiXmlNode [2016.06.05][MODIFY]/

  1. 编译不会产生错误。
  2. 可以使用m_document.save_file(contents);

支持多字节吗?

你好, 我在使用多字节进行编译的时候,一直没有通过,请问下,可以使用多字节吗?

MenuItem左侧图标宽度没有被设置

修正菜单左侧图标宽度没有被设置的问题。原因是创建MeneItem时使用了默认构建参数,
修正:在DuiMenu的SetMenuPoint中 增加设置 m_nLeft

combox自动加载列表,gridctrl 动态加载edit控件,输入值报错

在combox输入一个值,然后自动弹出一个下来列表,让用户选择需要的值,这个下来是怎么自动实现的。还有就是gridctrl 动态加载的edit控件,输入值报错,现在edit有keydown消息,获取的是上一次的值,有没有keyup之类的消息,就是输入edit的内容能够立即知道,谢谢。

BUG:弹出菜单项在菜单的最后一项时有问题

弹出菜单项位于菜单中的最后一项(或者第一项)时,鼠标向没有菜单项的方向移出菜单项时,弹出菜单不消失。
弹出菜单项有弹出菜单时,鼠标向任何一个没有菜单项的方向移出菜单项时,弹出菜单不消失。
而且在该弹出菜单存在的情况下,点击菜单上的其他控件textbtn之类的,textbtn无响应

分块布局需求

界面我分了几块,某块需要分情况显示和隐藏。隐藏后,它的位置需要释放给其他分块,目前只能通过代码定位,但是一拖拽,隐藏分块又把位置给占了。
建议方案:
增加一种布局方式,可以分块布局,每一块是一个div,可以设置某一块隐藏之后,自动进行其他块的位置调整。

高DPI支持

现在电脑分辨率1080p已经普及,为了让眼睛看的舒服,通常设置DPI为125%。
DuiVision在高DPI下,窗口/文字就会自动缩放的很小。不少direct ui的软件如QQ现在已经支持高DPI了

BUG:不能从zip中加载对话框的背景图

已经设置了

资源打包到zip,但无法从zip载入

我在dlgBase里面跟踪OnInitDialog,最后走的是
CString strImgFile = DuiSystem::GetSkinPath() + strBkSkin;
LoadImage(strImgFile);

tab控件中添加的控件隐藏问题

在tab中添加了很多控件,会根据不同的业务关系,显示不同的控件,如何实现相应控件的隐藏,现在设置show=0不起作用,然后就是程序设置了setvisiable(false)也是能刷新显示出来的,如何解决呢,谢谢。

bug:删黑色背景

界面最小化时,再最大化,会闪出一个黑色界面,然后界面才绘制出来,

关于CTimer的代码片段求教

-----代码片段--从duivision中摘出来的-,非最新-------

UINT CTimer::m_uAccuracy = 1; // 定义分辨率
BOOL CTimer::m_bIsTmierOK = false; // 是否可以定时

CTimer::CTimer(void)
{
m_bIsTmierOK = false;
}

--------结束---原文如此,暂时忽略拼写错误------

我有个问题:
m_bIsTmierOK 的用途是什么?
a.如果是标记 系统的定时器的分辨率是否可用,
那是不是应该只设置一次,
而不能在在每个CTimer实例生成时,被初始化为false
b.如果这个属性是CTimer内部的,那它是不是应该是成员变量更合适,而非静态变量

咨询:托盘菜单单选效果有么?

正在试用DuiVision,做托盘菜单,但没看见有实现但选效果例子。
有check选项,但托盘菜单每次弹出,菜单状态就复原了,
哪里有回调函数么?
谢谢

托盘菜单不会自动移动到屏幕内

环境win7
把任务栏,拉到屏幕上方
运行demo之后,在托盘图标上点右键,弹出托盘菜单,菜单直接显示在屏幕之外,不会根据位置自动向下弹出,以保证菜单在屏幕内。
任务栏在屏幕其他位置时,可以正常。

使用VC2008,DuiVision Demo打不开

大家好,
我在使用DuiVision 2.9+VC2008时遇到一个问题(不要见怪我还在用这么老的Visual Studio)。一开始编译DuiVision库,选的是Release_Multi,一切顺利。接着构建DuiVision Demo,选择相匹配的配置,先是遇到几十个相同的警告,说是什么“由于函数内部禁用了xxx,/GS选项也不能防止缓冲区溢出……”,结果运行程序直接崩溃了,都没见个样子。
请问这是怎么回事,如何解决?谢谢。

如何动态切换多语言?

  1. 如何在程序里动态切换多语言?

  2. 另外程序里有时窗口显示不出来,比如用DuiMessageBox显示一个窗口. 代码肯定是已经执行了,就是窗口看不到,导致程序其他部分也用不了。。。

用的是Zip加载资源,缓冲区加一后能减少问题的发生概率,但是还是会随机出现.

怎么动态给树控件的NODE下添加ITEM?

许多场景不能事先都把树控件的内容添加好,比如列举电脑上的所有文件夹,就不可能把文件夹列举完了之后再显示树控件,所以有两个问题:

  1. 怎么在没有给一个NODE添加ITEM的时候,显示NODE前面的EXPAND符号?

  2. 怎么响应EXPAND消息?以便让程序列举此NODE下面的子文件夹,并动态添加到这个NODE下?

谢谢

能用宏定义把wke部分头文件屏蔽么

我看见新的库中引入了wke,但目前我程序中还没有用到wke,
如果更新,有宏能屏蔽这部分么
(不好意思,我还没来得及试验,先问一下)

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.