2013年9月28日

2013 duilib入门简明教程 -- 简单控件介绍 (12)

摘要: 前面的教程应该让大家对duilib的整体有所映像了,下面就来介绍下duilib具体控件的使用。由于官方没有提供默认的控件样式,所以我就尽量使用win7或者XP自带的按钮样式了,虽然界面比较土鳖,但是想要换成百度杀毒那样的界面,只需要更换图片即可,如果有哪位小伙伴能够提供一些控件样式,那就再好不过啦~首先利用一下前面教程的框架,效果图如下:main.cpp的代码如下:class CDuiFrameWnd : public WindowImplBase{public: virtual LPCTSTR GetWindowClassName() const { return _T(... 阅读全文

posted @ 2013-09-28 23:42 Alberl 阅读(30751) 评论(7) 推荐(2) 编辑

2013 duilib入门简明教程 -- 部分bug (11)

摘要: 一、WindowImplBase的bug在第8个教程【2013 duilib入门简明教程 -- 完整的自绘标题栏(8)】中,可以发现窗口最大化之后有两个问题,1、最大化按钮的样式还是没变,正确的样式应该是这样的2、再次点击最大化按钮,不能还原到正常大小。这个是WindowImplBase的bug,已经提交给官方有一段时间了,但是貌似没有被合并到SVN上去,所以这里说明一下,我们需要在WindowImplBase的OnSysCommand函数里,在if( ::IsZoomed(*this) != bZoomed )里面加上下面这段代码: if( ::IsZoomed(*this) != b... 阅读全文

posted @ 2013-09-28 22:56 Alberl 阅读(24378) 评论(20) 推荐(3) 编辑

2013 duilib入门简明教程 -- 界面设计器 DuiDesigner (10)

摘要: 上一个教程讲解了怎么布局最大化、最小化、关闭按钮,但是如果手动去计算这三个按钮的位置和大小的话,非常的不直观,也很不方便。所以这一章准备介绍duilib的UI设计器,由于这个设计器很不完善,也有很多bug,有时候会导致XML数据丢失,所以很多大神都不建议用,不过我每次写代码都会用SVN,而且会原子提交,所以即使丢失也可以恢复。不过这不代表我赞同一直使用这个UI设计器,我建议大家布局的时候用设计器,布局完毕之后手写XML。这样按钮的大小和位置都很直观,很方便的可以确定,就用不着手动去计算了,当然,如果是美工给的界面,就没必要用设计器了,因为他们会把位置和大小都给过来。1、打开设计器:在duili 阅读全文

posted @ 2013-09-28 00:46 Alberl 阅读(43022) 评论(19) 推荐(2) 编辑

2013 duilib入门简明教程 -- 界面布局(9)

摘要: 上一个教程实现的标题栏代码中,并没有看到处理自适应窗口大小的代码,但是窗口大小变化后,按钮的位置会跟着变化,这是因为我们将按钮放到了HorizontalLayout、VerticalLayout,这样duilib就会帮我们自动布局按钮的位置和大小,顾名思义,HorizontalLayout就是水平布局,VerticalLayout就是垂直布局。最开始的教程里面,窗口大小变化时,Hello World按钮会沾满整个窗口,并且文字始终居中,这就是HorizontalLayout的效果: 那么HorizontalLayout和VerticalLa... 阅读全文

posted @ 2013-09-28 00:06 Alberl 阅读(37930) 评论(8) 推荐(1) 编辑

2013年9月27日

2013 duilib入门简明教程 -- 完整的自绘标题栏(8)

摘要: 看了前面那么多教程,相信对duilib已有基本映像了,我们就快马加鞭,做出一个完整的自绘标题栏吧~看到下面这个效果图,小伙伴们是不是有点惊呆了呢~O(∩_∩)O~duilib实现以上效果非常简单, 1、将按钮图片的文件夹放到exe目录,点此下载 2、main.cpp的代码无需改动,只需改动XML,XML内容如下(受网页宽度限制,以下XML格式有点乱,请复制到本地的XML编辑器上,以方便查看): ... 阅读全文

posted @ 2013-09-27 23:19 Alberl 阅读(40780) 评论(29) 推荐(3) 编辑

2013 duilib入门简明教程 -- XML基础类(7)

摘要: 现在大家应该对XML描述界面不那么陌生了,那么我们做进一步介绍。 前面的教程我们写了很多代码,为的是让大家了解下基本流程,其实duilib已经对常用的操作做了很好的包装,正式使用时无需像前面的教程那样写那么多代码,下面我们就来看看XML的包装类WindowImplBase: WindowImplBase类是一个duilib的基础框架类,封装了常用操作,以方便大家使用。 它是以XML作为界面描述的,所以用它的时候,我们必须将界面描述写到XML里。 下面将是我们第三次实现Hello World程序~O(∩_∩)O~class CDuiFrameWnd : public WindowImp... 阅读全文

posted @ 2013-09-27 23:04 Alberl 阅读(36022) 评论(35) 推荐(4) 编辑

2013 duilib入门简明教程 -- XML配置界面(6)

摘要: 前面那些教程都是为了让小伙伴们从win32、MFC过渡到duilib,让大家觉得duilib不是那么陌生,如果大家现在还对duilib非常陌生的话,那就说明前面的教程做得不好,请大家在下面留言,我会一一查看,并做出改进。从这个教程开始就是见证奇迹的时刻啦~\(^o^)/~其实duilib主打的界面制作方式是XML + UI引擎 + win32框架,其实和浏览器HTML + CSS + 渲染引擎的方式非常类似,可以将其理解为一个非常mini的浏览器。而用duilib写界面时,大部分是在写XML,类似于写HTML,这点可能会让习惯MFC等windows界面的伙伴们有点不习惯,需要克服克服,相信在看 阅读全文

posted @ 2013-09-27 22:18 Alberl 阅读(44737) 评论(12) 推荐(0) 编辑

2013 duilib入门简明教程 -- 自绘标题栏(5)

摘要: 如果大家有做过标题栏的自绘,肯定会感慨各种不容易,并且现有的一些资料虽然完美的实现了功能,但是代码比较乱,需要自行整理。如果用duilib,就是小case啦。duilib其实并没有区分标题栏和客户区,它的实现方法是屏蔽了系统自带的标题栏,用客户区来模拟标题栏,所以想怎么画就怎么画,非常方便。1、我们首先屏蔽一下系统自带的标题栏, 在HandleMessage函数里屏蔽以下三个消息即可 WM_NCACTIVATE、WM_NCCALCSIZE、WM_NCPAINT代码如下: virtual LRESULT HandleMessage(UINT uMsg, WPARAM wParam, LPA... 阅读全文

posted @ 2013-09-27 21:56 Alberl 阅读(36956) 评论(9) 推荐(0) 编辑

2013 duilib入门简明教程 -- 响应按钮事件(4)

摘要: 上一个Hello World的教程里有一句代码是这样的:CControlUI*pWnd=newCButtonUI;也就是说,其实那整块绿色背景区域都是按钮的区域。(这里简要介绍下,CControlUI 是duilib中所有控件的基类,而CButtonUI则是按钮类,更多的控件会在后面的教程一一介绍。)那么怎样响应按钮的点击消息呢?我们需要几个步骤:1、调用AddNotifier函数将消息加入duilib的消息循环2、给按钮设置一个唯一的控件ID(SetName函数)3、在Notify函数里处理按钮点击消息。代码如下:class CDuiFrameWnd : public CWindowWnd, 阅读全文

posted @ 2013-09-27 21:17 Alberl 阅读(43796) 评论(10) 推荐(2) 编辑

2013 duilib入门简明教程 -- 第一个程序 Hello World(3)

摘要: 小伙伴们有点迫不及待了么,来看一看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-09-27 20:48 Alberl 阅读(59065) 评论(20) 推荐(3) 编辑

导航