摘要: 上一个教程讲解了怎么布局最大化、最小化、关闭按钮,但是如果手动去计算这三个按钮的位置和大小的话,非常的不直观,也很不方便。所以这一章准备介绍duilib的UI设计器,由于这个设计器很不完善,也有很多bug,有时候会导致XML数据丢失,所以很多大神都不建议用,不过我每次写代码都会用SVN,而且会原子提交,所以即使丢失也可以恢复。不过这不代表我赞同一直使用这个UI设计器,我建议大家布局的时候用设计器,布局完毕之后手写XML。这样按钮的大小和位置都很直观,很方便的可以确定,就用不着手动去计算了,当然,如果是美工给的界面,就没必要用设计器了,因为他们会把位置和大小都给过来。1、打开设计器:在duil. 阅读全文
posted @ 2013-10-16 16:26 hpze2000 阅读(925) 评论(0) 推荐(0) 编辑
摘要: 上一个教程实现的标题栏代码中,并没有看到处理自适应窗口大小的代码,但是窗口大小变化后,按钮的位置会跟着变化,这是因为我们将按钮放到了HorizontalLayout、VerticalLayout,这样duilib就会帮我们自动布局按钮的位置和大小,顾名思义,HorizontalLayout就是水平布局,VerticalLayout就是垂直布局。最开始的教程里面,窗口大小变化时,Hello World按钮会沾满整个窗口,并且文字始终居中,这就是HorizontalLayout的效果: 那么HorizontalLayout和VerticalLa... 阅读全文
posted @ 2013-10-16 16:12 hpze2000 阅读(863) 评论(0) 推荐(0) 编辑
摘要: 看了前面那么多教程,相信对duilib已有基本映像了,我们就快马加鞭,做出一个完整的自绘标题栏吧~看到下面这个效果图,小伙伴们是不是有点惊呆了呢~O(∩_∩)O~duilib实现以上效果非常简单, 1、将按钮图片的文件夹放到exe目录,点此下载 2、main.cpp的代码无需改动,只需改动XML,XML内容如下(受网页宽度限制,以下XML格式有点乱,请复制到本地的XML编辑器上,以方便查看): ... 阅读全文
posted @ 2013-10-16 16:07 hpze2000 阅读(393) 评论(0) 推荐(0) 编辑
摘要: 现在大家应该对XML描述界面不那么陌生了,那么我们做进一步介绍。 前面的教程我们写了很多代码,为的是让大家了解下基本流程,其实duilib已经对常用的操作做了很好的包装,正式使用时无需像前面的教程那样写那么多代码,下面我们就来看看XML的包装类WindowImplBase: WindowImplBase类是一个duilib的基础框架类,封装了常用操作,以方便大家使用。 它是以XML作为界面描述的,所以用它的时候,我们必须将界面描述写到XML里。 下面将是我们第三次实现Hello World程序~O(∩_∩)O~class CDuiFrameWnd : public WindowImp... 阅读全文
posted @ 2013-10-16 16:05 hpze2000 阅读(418) 评论(0) 推荐(0) 编辑
摘要: 前面那些教程都是为了让小伙伴们从win32、MFC过渡到duilib,让大家觉得duilib不是那么陌生,如果大家现在还对duilib非常陌生的话,那就说明前面的教程做得不好,请大家在下面留言,我会一一查看,并做出改进。从这个教程开始就是见证奇迹的时刻啦~\(^o^)/~其实duilib主打的界面制作方式是XML + UI引擎 + win32框架,其实和浏览器HTML + CSS + 渲染引擎的方式非常类似,可以将其理解为一个非常mini的浏览器。而用duilib写界面时,大部分是在写XML,类似于写HTML,这点可能会让习惯MFC等windows界面的伙伴们有点不习惯,需要克服克服,相信在. 阅读全文
posted @ 2013-10-16 16:03 hpze2000 阅读(504) 评论(0) 推荐(0) 编辑
摘要: 如果大家有做过标题栏的自绘,肯定会感慨各种不容易,并且现有的一些资料虽然完美的实现了功能,但是代码比较乱,需要自行整理。如果用duilib,就是小case啦。duilib其实并没有区分标题栏和客户区,它的实现方法是屏蔽了系统自带的标题栏,用客户区来模拟标题栏,所以想怎么画就怎么画,非常方便。1、我们首先屏蔽一下系统自带的标题栏, 在HandleMessage函数里屏蔽以下三个消息即可 WM_NCACTIVATE、WM_NCCALCSIZE、WM_NCPAINT代码如下: virtual LRESULT HandleMessage(UINT uMsg, WPARAM wParam, LPAR.. 阅读全文
posted @ 2013-10-16 14:48 hpze2000 阅读(501) 评论(0) 推荐(0) 编辑
摘要: 上一个Hello World的教程里有一句代码是这样的:CControlUI*pWnd=newCButtonUI;也就是说,其实那整块绿色背景区域都是按钮的区域。(这里简要介绍下,CControlUI 是duilib中所有控件的基类,而CButtonUI则是按钮类,更多的控件会在后面的教程一一介绍。)那么怎样响应按钮的点击消息呢?我们需要几个步骤:1、调用AddNotifier函数将消息加入duilib的消息循环2、给按钮设置一个唯一的控件ID(SetName函数)3、在Notify函数里处理按钮点击消息。代码如下:class CDuiFrameWnd : public CWindowWnd. 阅读全文
posted @ 2013-10-16 14:47 hpze2000 阅读(400) 评论(0) 推荐(0) 编辑
摘要: 小伙伴们有点迫不及待了么,来看一看Hello World吧:新建一个空的win32项目,新建一个main.cpp文件,将以下代码复制进去:#include #include int APIENTRY _tWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPTSTR lpCmdLine, int nCmdShow){ ::MessageBox(NULL, _T("Hello World !"), NULL, NULL); return 0;} 运行即可看到如下结果:咦,这不是win32程序么,你小子忽悠我?~O(∩_ 阅读全文
posted @ 2013-10-16 14:43 hpze2000 阅读(397) 评论(0) 推荐(0) 编辑
摘要: 会SVN和配置VS环境的请跳过此篇~既然是入门教程,那当然得基础点,因为搜索duilib相关资料时,发现有些小伙伴到处都是编译错误,以及路径配置错误等等,还有人不知道SVN,然后一个个文件手动下载的。其实吧,duilib的定位好像是这样的: 有一定的界面基础,懂MFC、WTL、windows消息机制等等。不然的话,即使环境配置好了,看Demo也绕晕你~\(^o^)/~所以对于没有任何基础的童鞋,请先打好基础,不然学习duilib会走更多歪路,推荐以下资料:书籍:《windows程序设计》教程: 孙鑫视频(这个我只下载了,但没看过,不过评价不错)网站:国际知名网站(国外网站:现在比codegu. 阅读全文
posted @ 2013-10-16 14:42 hpze2000 阅读(376) 评论(0) 推荐(0) 编辑
摘要: 关于duilib的介绍就不多讲了,一来不熟,二来小伙伴们想必已经对比了多个界面库,也无需赘述。下面进入正题: 不看广告看疗效! 已有众多知名公司采用duilib做为界面库,如华为网盘、金山快盘、酷我音乐、爱奇艺视频、百度杀毒、百度卫士、百度管家等一系列产品。而duilib自己提供的Demo有QQ、QQ旋风、360等等。下面是一部分截图:疗效就不用再多说了吧~O(∩_∩)O~这么好的东东,都开源三年多了,肿么一直没有个像样的文档和入门教程咧? 那些知名公司的界面小伙伴们能马上用么??? 此处省略N字... 这就是Alberl写入门教程的原因。Alberl虽然关注DirectUI快三年了,但是.. 阅读全文
posted @ 2013-10-16 14:24 hpze2000 阅读(422) 评论(0) 推荐(0) 编辑