整个教程的代码下载:http://download.csdn.net/detail/qq316293804/6502207

  (由于duilib进阶教程主要介绍界面,所以这个教程只给出界面相关的代码,完整代码请进《仿迅雷播放器教程》)

进阶教程汇总:

duilib进阶教程 -- 在MFC中使用duilib (1)

  duilib的学习到此就差不多啦,现在简短总结下:

一、稳定性:

  目前已发现并解决了四五个bug,不过都属于一下子就能解决的bug,并且都是功能性方面的bug,并不会导致崩溃,已有很多公司用于产品开发,经过了长期的考验,因此稳定性方面已经很不错了。

二、功能性:

  Alberl在做这个播放器的时候,也不敢确定能不能完全实现迅雷那样的效果,现在看来,完全不是问题!

三、易用性:

  看到Alberl这么快就做出了迅雷播放器,还用怀疑易用性么?

四、学习难度:

  Alberl既不是做播放器的,也不是做界面的,只是业余爱好而已,还能一边学习一边写教程,并且在Alberl写了这些教程之后,入门已经没有难点啦,你觉得duilib能有多难学?

五、不方便的地方:

  因为是模仿迅雷播放器,所以这里和迅雷BOLT做一点点对比。

  图片资源都是从迅雷提取出来的,

  duilib有以下几点不便:

  1、Alberl做的最多的工作就是去计算source属性该填哪些值,因为一个按钮通常有四种状态的图标,而很多按钮的大小都不一样,所以这里对每个按钮都要计算其source属性,很不方便。

  这里有一个简单的解决方案,加上属性 splitimage="true"则说明此图片需要被分成四个部分显示。规定图片的四个部分依次按normalimage、hotimage、pushedimage、focusimage排列,程序就自动计算每个图片的位置,就无需在XML填写source位置啦~

  而且之后就算按钮大小变了,或者图片大小变了,都不需要改动XML。

  2、其次就是图片默认被拉伸了,很显然,绝大部分图片是不需要被拉伸的,有些按钮的大小和图片的大小并不一样,虽然dest属性可以解决这个问题,但是也很不方便,所以默认不应该被拉伸,并且图片垂直水平都居中,如果想要拉伸,则指定scaleimage="true"。 这就方便多啦。

  3、Slider控件的图片问题,进度条图片被放大到和整个控件的高度一样,这时的解决方案是,比如控件高度为20,图片高度为3,则需要把图片调成高度为20,其他17个高度都做成透明。如果控件高度调成40,那么图片又要调整。  所以可以加一个属性imageheight="3",这样Slider控件自动将图片垂直居中,或者无需指定imageheight属性,代码自动判断高度。

  4、部分属性不全,比如编辑框有FocusBordColor,却没有HotBordColor,这样要实现迅雷那样的编辑框,只能指定一个HotImage属性,显然也不方便。还有很多Color属性都不全,就不一一指出了。

  5、按钮状态切换时,只能指定一个图片,迅雷每个按钮除了切换hotimage以外,按钮的下面还有一个蓝色的光影,显然这个光影是可以重用的,说明迅雷的按钮切换时至少可以切换两张图片。并且那个光影可以显示在按钮外面,可以看到光影的宽度明显比按钮宽,甚至延长到了旁边的按钮下面。 这个改动可能涉及到核心,因此不建议去改,改一下图片就可以了。

  不过以上几点都是很容易实现的,因此实际项目使用中,可以花几天时间把以上几点实现了,后面开发就更方便啦~

  当然,这只是开发迅雷播放器中遇到的问题,开发其他项目可能会遇到其他问题。

  由于Alberl只是业余人士,就不做这些改进了。

  从实现效果来看,迅雷BOLT显然更成熟,更全面。但由于迅雷BOLT并不开源,而duilib也已经够用了,虽然提了这几点不便,但都是很容易解决的,也就说duilib已经非常方便了。

  可以看到Alberl做的播放器和迅雷看看的相似度达到95%以上,再往细节里做一下就可以以假乱真啦~O(∩_∩)O~

  Alberl在最开始也说了,选择从这个库开始研究,最主要的原因是因为很多大公司都用了它,所以Alberl在不知道哪个库好用的情况下,就跟着大牛走啦~O(∩_∩)O~

相信在看了Alberl的教程以及作品之后,对duilib应该心中有数了吧。

最后,祝小伙伴们学习愉快~O(∩_∩)O~

duilib进阶教程 -- 总结 (17)的更多相关文章

  1. duilib进阶教程 -- Container控件的bug (14)

    在<duilib进阶教程 -- TreeView控件的bug (9)>里,Alberl发现了两个bug,并解决了其中一个,现在教程已经接近尾声啦,所以Alberl就解决了另外一个bug. ...

  2. duilib进阶教程 -- 在MFC中使用duilib (1)

    由于入门教程的反响还不错,因此Alberl就以直播的形式来写<进阶教程>啦,本教程的前提: 1.请先阅读<仿迅雷播放器教程> 2.要有一定的duilib基础,如果还没,请先阅读 ...

  3. duilib进阶教程 -- TreeView控件(6)

    代码下载:http://download.csdn.net/detail/qq316293804/6483905 上一个教程中,界面已经和迅雷一模一样啦,大小和位置一个像素都不差哟,亏得Alberl调 ...

  4. duilib进阶教程 -- Container控件 (3)

    前面两个教程的目的是教大家与MFC结合,那么从这篇起,将不再使用MFC,而使用纯win32项目,本文的所有知识已经在<duilib入门教程>里面讲过了,因此基础知识不再赘述. 代码下载:h ...

  5. duilib进阶教程 -- 各种控件的响应 (10)

    到上一个教程为止,界面显示的代码就都介绍完啦,现在开始介绍控件的响应,其实在<2013 duilib入门简明教程 -- 事件处理和消息响应 (17)>里已经列出了duilib自己定义的所有 ...

  6. duilib进阶教程 -- 改进List控件 (16)

    一.控件隐藏后,允许用代码操作所有行为. 在做播放器的时候,最常用的功能莫过于顺序播放.随机播放了,而当我们切换歌曲的时候,显然应该选中该歌曲,List的选中函数是SelectItem,但是调用此函数 ...

  7. duilib进阶教程 -- 设置资源路径 (15)

    在前面的教程里,虽然图片都放到了skin文件夹里,但是XML却都在外面,当XML比较多时,就不太好看啦,如下图: 所以需要整理一下,将XML也放入skin文件夹,这样exe的目录就简洁多了: 将XML ...

  8. duilib进阶教程 -- 响应windows原生消息和自定义消息(13)

    一.windows原生消息 同样,入门教程只是给出了响应windows原生消息的方法,并没给出例子,这里以自适应屏幕分辨率为例.迅雷播放器虽然可以在启动的时候自动调整窗口大小,但是当屏幕分辨率实时改变 ...

  9. duilib进阶教程 -- 在duilib中使用MFC (2)

    好人做到底,送佛送到西.虽然上一篇教程已经说得很详细了,但Alberl还是再举一个例子.上一篇教程的主窗口是MFC的,所以这篇教程把主窗口换成duilib的~O(∩_∩)O~ 1.我们利用<20 ...

随机推荐

  1. 学习笔记008之Task

    栈 为后进先出 如何实现一个弹出窗体.

  2. html制作,点击文字超链接显示文本框,再点击文字超链接隐藏文本框

    </head><body> <script> window.onload=function(){ document.getElementById('click'). ...

  3. Python环境下NIPIR(ICTCLAS2014)中文分词系统使用攻略

    一.安装 官方链接:http://pynlpir.readthedocs.org/en/latest/installation.html 官方网页中介绍了几种安装方法,大家根据个人需要,自行参考!我采 ...

  4. servlet实现的三种方式对比(servlet 和GenericServlet和HttpServlet)

    第一种: 实现Servlet 接口 第二种: 继承GenericServlet 第三种 继承HttpServlet (开发中使用) 通过查看api文档发现他们三个(servlet 和GenericSe ...

  5. 常用UML模型简要小结

    关系: 关联(组合,生命周期相同:聚合,物以类聚),依赖,泛化(继承),实现 还有 包含,细化复用已有用例:扩展,非必要主要的用例 图: 1.用例图:就是描述一个功能场景(集合),其实用例编写(前后置 ...

  6. iOS字符串为空的判断

    //判断字符串 -(BOOL) isValidString:(id)input { if (!input) { return NO; } if ((NSNull *)input == [NSNull ...

  7. 20145225《Java程序设计》 第10周学习总结

    20145225<Java程序设计> 第10周学习总结 教材学习内容总结 一.网络编程 网络编程就是在两个或两个以上的设备(例如计算机)之间传输数据: 程序员所作的事情就是把数据发送到指定 ...

  8. 解决AndroidADT自带Eclipse编辑器不能自动代码提示的问题

    今天发现,我下载的AndroidADT开发套装中自带的Eclipse没有自动代码提示功能.通过参考http://blog.csdn.net/coolszy/article/details/724195 ...

  9. scrum 4.0

    1.准备看板. 形式参考图4. 2.任务认领,并把认领人标注在看板上的任务标签上. 先由个人主动领任务,PM根据具体情况进行任务的平衡. 然后每个人都着手实现自己的任务. 3.为了团队合作愉快进展顺利 ...

  10. H3C ipsec ike 协商配置

    1. 分几步设置 (1)定义ACL (2)创建 ipsec 安全建议 1.选择认证方式 ah 选择 ah头认证方式 不配置 ipsec不能建立成功 (3)创建IKE keychain 可以写多条key ...