最近改玩WinRT和Metro了,看到有些朋友还在玩基于GDI的DirectUI,正好自己以前也尝试写过的,反正放着也没用,开源吧。

这个DirectUI界面库主要参考一个老外的程序, 支持各种Layout模式,实现了各种基本控件(SplitBar, PictureBox, Button, Radio, CheckBox, Label, HyperLink, ProgressBar, trackBar, ListBox, Edit, ComboBox, Tab Control, Toolbar, Menu, tree),控件基本全部支持键盘操作,支持键盘导航,支持Tooltip,支持多语言,支持换肤,支持异形窗口,支持Layered Window, 支持插件2次开发,支持Alpha通道,支持各种图像处理。

当然这套东西离商业化还有一定距离,Demo也比较粗糙,都是自己弄的图片,将就着看吧。









源代码下载: DUI Source code
posted on 2012-07-03 23:18 Richard Wei 阅读(36022) 评论(35)  编辑 收藏 引用 所属分类: 开源业余作品

FeedBack:
# re: 开源一套DirectUI界面库
2012-07-04 15:12 | 朱峰everettjf
支持个  回复  更多评论
  
# re: 开源一套DirectUI界面库
2012-07-04 15:41 | bukebushuo
源码我看了,很不错的东西,有很多值得学习的地方
3KS  回复  更多评论
  
# re: 开源一套DirectUI界面库
2012-07-04 17:59 | skylly
十分感谢楼主的分享精神!!!!!  回复  更多评论
  
# re: 开源一套DirectUI界面库
2012-07-11 10:16 |
垃圾,你这东西和老外的什么差别??几乎没动啊??  回复  更多评论
  
# re: 开源一套DirectUI界面库
2012-07-11 10:17 | 猪@乐园
效率不行啊,会卡。。。  回复  更多评论
  
# re: 开源一套DirectUI界面库
2012-07-11 10:33 | 先锋
我叉,居然用WTL,老外可是纯WIN32阿。  回复  更多评论
  
# re: 开源一套DirectUI界面库
2012-07-11 10:34 | 先锋
@圣
改成了WTL了。有差别。  回复  更多评论
  
# re: 开源一套DirectUI界面库
2012-07-11 11:00 | Richard Wei
@圣
真想骂人,你看过代码吗?? 别弄脏了这里。  回复  更多评论
  
# re: 开源一套DirectUI界面库
2012-07-11 11:03 | Richard Wei
@先锋
不用WTL,ATL就够了。
相信这套东西会给真正研究过DirectUI的朋友很多参考价值。  回复  更多评论
  
# re: 开源一套DirectUI界面库
2012-07-12 18:58 | 你好
楼主你好,很高兴你能够无私的开源自己的作品。
我改成静态LIB,结果除了以下链接问题,如何处理呢?谢谢。
1>------ 已启动生成: 项目: ControlDemo, 配置: Release Win32 ------
1>正在链接...
1>duilib.lib(DUIRenderEngine.obj) : error LNK2019: 无法解析的外部符号 __imp__GradientFill@24,该符号在函数 "private: static void __cdecl DUI::CDUIRenderEngine::GradientFill(struct HDC__ *,struct tagRECT const &,unsigned long,unsigned long,int)" (?GradientFill@CDUIRenderEngine@DUI@@CAXPAUHDC__@@ABUtagRECT@@KKH@Z) 中被引用
1>duilib.lib(DUIRenderEngine.obj) : error LNK2019: 无法解析的外部符号 __imp__AlphaBlend@44,该符号在函数 "public: static void __cdecl DUI::CDUIRenderEngine::DrawGradien(struct HDC__ *,struct tagRECT const &,class DUI::CARGB const &,class DUI::CARGB const &,int)" (?DrawGradien@CDUIRenderEngine@DUI@@SAXPAUHDC__@@ABUtagRECT@@ABVCARGB@2@2H@Z) 中被引用
1>duilib.lib(DUIDdb.obj) : error LNK2001: 无法解析的外部符号 __imp__AlphaBlend@44
1>duilib.lib(DUIDib.obj) : error LNK2001: 无法解析的外部符号 __imp__AlphaBlend@44
1>duilib.lib(DUIDdb.obj) : error LNK2019: 无法解析的外部符号 __imp__TransparentBlt@44,该符号在函数 "public: static int __cdecl DUI::CBitmapCommonFunction::TransparentBltWithoutStretch(struct HDC__ *,struct HBITMAP__ *,struct tagRECT const &,class DUI::CARGB const &)" (?TransparentBltWithoutStretch@CBitmapCommonFunction@DUI@@SAHPAUHDC__@@PAUHBITMAP__@@ABUtagRECT@@ABVCARGB@2@@Z) 中被引用
1>duilib.lib(DUIDib.obj) : error LNK2001: 无法解析的外部符号 __imp__TransparentBlt@44
1>../../bin/Release/ControlDemo.exe : fatal error LNK1120: 3 个无法解析的外部命令
1>生成日志保存在“file://f:\duilib_modify_version\dui\obj\release\ControlDemo\BuildLog.htm”
1>ControlDemo - 7 个错误,0 个警告
========== 生成: 成功 0 个,失败 1 个,最新 2 个,跳过 0 个 ==========  回复  更多评论
  
# re: 开源一套DirectUI界面库
2012-07-12 19:35 | 你好
@你好
哈,解决了。是自身疏忽造成的。  回复  更多评论
  
# re: 开源一套DirectUI界面库
2012-07-12 20:47 | 你好
晕死,静态链接是搞定了。又出了新问题。
DUILIB静态链接。
Fade_button采用DLL。
工程运行后无法显示控件了。DLL和EXE放一起了。其它显示正常。
楼主救命啊!!  回复  更多评论
  
# re: 开源一套DirectUI界面库
2012-07-16 18:31 |
看了你代码了,不好,资源居然不支持压缩包,用户得把界面消息都揉杂在一起处理  回复  更多评论
  
# re: 开源一套DirectUI界面库
2012-07-16 19:43 | Richard Wei
@圣
资源压缩和delegate方式的事件处理加上去也不难。
这套东西只是半成品,本来想写给自己用的,可看了WPF后,觉得没必要写了,微软已经把我们想做的东西做到了极致...  回复  更多评论
  
# re: 开源一套DirectUI界面库[未登录]
2012-07-19 17:30 | ming
楼主精神可嘉啊!挺不错的  回复  更多评论
  
# re: 开源一套DirectUI界面库
2012-07-19 22:10 | oksbsb
@Richard Wei
博主你好, 代码已经失效?求一份学习, oksbsb@126.com  回复  更多评论
  
# re: 开源一套DirectUI界面库
2012-07-20 08:36 | Richard Wei
@oksbsb
不知道你那边为什么不行,我试了下还是可以下的, 代码已发。  回复  更多评论
  
# re: 开源一套DirectUI界面库
2012-08-12 13:40 | oksbsb
@Richard Wei
Thanks A Lot  回复  更多评论
  
# re: 开源一套DirectUI界面库
2012-09-01 16:17 | mingfei200169
学习  回复  更多评论
  
# re: 开源一套DirectUI界面库
2012-10-17 15:38 | yyy
谢谢 分享  回复  更多评论
  
# re: 开源一套DirectUI界面库
2012-10-18 09:14 | dsngds
楼主好人,谢谢!  回复  更多评论
  
# re: 开源一套DirectUI界面库
2012-11-02 08:47 | ma wu
button上放 gif 怎么做啊,楼主大哥  回复  更多评论
  
# re: 开源一套DirectUI界面库[未登录]
2012-11-05 00:26 | 初学者
谢谢博主分享!!一定可以从中学到很多.  回复  更多评论
  
# re: 开源一套DirectUI界面库
2012-11-22 18:21 | jackpeng
博主你好, 代码已经失效?求一份学习, king8255@163.com  回复  更多评论
  
# re: 开源一套DirectUI界面库
2012-11-30 13:06 | zpf
顶起来  回复  更多评论
  
# re: 开源一套DirectUI界面库
2013-02-25 03:17 | 祖宗
谢谢  回复  更多评论
  
# re: 开源一套DirectUI界面库
2013-02-25 20:49 | Richard Wei
这里有内存泄露 :
else if(info.wParam == WPARAM_KILL_TIMER)
{
if(pTimerRet != NULL)
{
::KillTimer(m_hWnd, pTimerRet->nTimerIndex);
m_arTimer.erase(std::remove(m_arTimer.begin(), m_arTimer.end(), pTimerRet), m_arTimer.end());
delete pTimerRet; //内存泄露
lRet = S_OK;
}
}   回复  更多评论
  
# re: 开源一套DirectUI界面库
2013-03-05 16:06 | rqf
demo失去焦点的时候颜色变灰了  回复  更多评论
  
# re: 开源一套DirectUI界面库
2013-03-07 00:02 | 祖宗
请问能不能提供各控件的使用示例呀?  回复  更多评论
  
# re: 开源一套DirectUI界面库
2013-03-11 12:22 | cheng
你的代码是wtl,有没有win32 api的呀!可以提供一份吗?  回复  更多评论
  
# re: 开源一套DirectUI界面库[未登录]
2013-04-07 15:41 | albert
我就不知道怎么开始,如果有这个代码,将非常感谢啊!  回复  更多评论
  
# re: 开源一套DirectUI界面库
2013-09-16 10:17 | 永遇乐
学习了  回复  更多评论
  
# re: 开源一套DirectUI界面库
2014-03-15 09:21 | hsc456
厉害啊, 佩服佩服

楼主威武  回复  更多评论
  
# re: 开源一套DirectUI界面库
2014-08-01 21:55 | memleak.in
撸过学习  回复  更多评论
  
# re: 开源一套DirectUI界面库
2014-12-30 13:56 | MFC
功能上大部分达到要求了,但美观还不行。  回复  更多评论
  
# re: 开源一套DirectUI界面库
2015-01-29 15:05 | test
duilib 如何实现楼上的combox那种效果??  回复  更多评论
  

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理