duilib进阶教程 -- XML嵌套及自定义控件 (4)
代码下载:http://download.csdn.net/detail/qq316293804/6433937
之前入门教程里已经讲过了自定义控件,这里借着迅雷播放器再次举个例子。
1、我们先给迅雷播放器加入下面那一排按钮。

和上个教程一样,我们可以选择直接放在主XML里面,也可以选择放到Container里面,在这里,为了让主XML的代码更简洁一点,我们选择放到单独的XML里面。而这个单独的XML就相当于一个自定义控件了,将控件名取为WndPlayPanel,XML取名为【WndPlayPanel.xml】,然后在CDuiFrameWnd::CreateControl里加入如下代码:
CControlUI* CDuiFrameWnd::CreateControl( LPCTSTR pstrClassName )
{
if (_tcsicmp(pstrClassName, _T("WndPlayPanel")) == )
{
CDialogBuilder builder;
CControlUI* pUI = builder.Create(_T("WndPlayPanel.xml"));
return pUI;
} return NULL;
}
这样自定义控件就创建出来了,接着把主XML的<HorizontalLayout height="55" /> 换成<WndPlayPanel height="55" />,自定义控件WndPlayPanel就显示到最下方了。
2、同样的道理,我们将标题栏也放到单独的XML里,取名为Caption,XML取名为【Caption.xml】,在CDuiFrameWnd::CreateControl里加入类似代码,即可显示标题栏区域。

XML的嵌套是不是很简单呢,和入门教程里的一样哦,只不过入门教程里的自定义控件是一个win32按钮,而这里是一个XML。
仿迅雷播放器图片

迅雷播放器原图

对比一下正宗的迅雷播放器,可以发现咱们的仿制品还有很多粗糙的地方,比如【打开文件】按钮就完全见不得人啦,还有右上角的那三个按钮,再就是左上方的【播放】按钮、以及中间的那一块蓝色光影,都和正宗的有所差别。这些将留到后面的教程讲解~O(∩_∩)O~
duilib进阶教程 -- XML嵌套及自定义控件 (4)的更多相关文章
- duilib进阶教程 -- 总结 (17)
整个教程的代码下载:http://download.csdn.net/detail/qq316293804/6502207 (由于duilib进阶教程主要介绍界面,所以这个教程只给出界面相关的代码,完 ...
- duilib进阶教程 -- Container控件的bug (14)
在<duilib进阶教程 -- TreeView控件的bug (9)>里,Alberl发现了两个bug,并解决了其中一个,现在教程已经接近尾声啦,所以Alberl就解决了另外一个bug. ...
- duilib进阶教程 -- 在MFC中使用duilib (1)
由于入门教程的反响还不错,因此Alberl就以直播的形式来写<进阶教程>啦,本教程的前提: 1.请先阅读<仿迅雷播放器教程> 2.要有一定的duilib基础,如果还没,请先阅读 ...
- duilib进阶教程 -- Container控件 (3)
前面两个教程的目的是教大家与MFC结合,那么从这篇起,将不再使用MFC,而使用纯win32项目,本文的所有知识已经在<duilib入门教程>里面讲过了,因此基础知识不再赘述. 代码下载:h ...
- duilib进阶教程 -- TreeView控件(6)
代码下载:http://download.csdn.net/detail/qq316293804/6483905 上一个教程中,界面已经和迅雷一模一样啦,大小和位置一个像素都不差哟,亏得Alberl调 ...
- duilib进阶教程 -- 在duilib中使用MFC (2)
好人做到底,送佛送到西.虽然上一篇教程已经说得很详细了,但Alberl还是再举一个例子.上一篇教程的主窗口是MFC的,所以这篇教程把主窗口换成duilib的~O(∩_∩)O~ 1.我们利用<20 ...
- duilib进阶教程 -- 设置资源路径 (15)
在前面的教程里,虽然图片都放到了skin文件夹里,但是XML却都在外面,当XML比较多时,就不太好看啦,如下图: 所以需要整理一下,将XML也放入skin文件夹,这样exe的目录就简洁多了: 将XML ...
- duilib进阶教程 -- 各种控件的响应 (10)
到上一个教程为止,界面显示的代码就都介绍完啦,现在开始介绍控件的响应,其实在<2013 duilib入门简明教程 -- 事件处理和消息响应 (17)>里已经列出了duilib自己定义的所有 ...
- duilib进阶教程 -- 图片和文字的位置调整 (5)
已经有8个晚上没写教程啦,因为之后遇到了一些问题,主要是TreeView控件的问题,这个问题搞了几个晚上,然后还需要调试代码才能知道它的用法,虽然能够调试出来,但毕竟没什么含金量,只是重复劳动而已,相 ...
随机推荐
- Need help with git commit - Error : "error: cannot run gpg: No such file or directory error: could not run gpg. fatal: failed to write commit object"support (self.git)
参考:https://www.reddit.com/r/git/comments/4jflp1/need_help_with_git_commit_error_error_cannot_run/ It ...
- 安装ansible集群管理和配置密钥互信
ansible特性 (1).no agents:不需要在被管控主机上安装任何客户端: (2).no server:无服务器端,使用时直接运行命令即可: (3).modules in any langu ...
- window 10系统怎样手动更改电脑的时间
win10系统的电脑显示时间默认的是自动网络校时,也就是电脑的时间跟网络时间同步,那么win10系统怎样手动更改电脑时间呢? 点击电脑左下方的win图标,找到菜单里的[设置] 点击菜单里的[设置],弹 ...
- win7 wamp 64位 php环境如何开启curl服务?
这篇文章主要介绍了PHP简单开启curl的方法,较为详细的讲述了PHP开启curl函数库的具体步骤与相关注意事项,需要的朋友可以参考下 本文讲述了PHP简单开启curl的方法.分享给大家供大家参考,具 ...
- MyEclipse启动时 弹出提醒框
1. MyEclipse has detected that less than 5% of the 31MB of PS Survivor Space (Heap memory) space rem ...
- Docker修改daemon.json后无法启动的问题
本文的运行环境为Centos 7.3,Docker与Kubernetes的安装方式见kubeadm安装kubernetes V1.11.1 集群 最近在整理Docker和Kubernetes中的日志与 ...
- maven学习二(dependencies)
在前面一篇文章maven学习一(HelloWorld工程)已经对maven有了基本介绍,本文开始介绍maven依赖,通过如何如何增加log4j来学习maven的dependencies no-depe ...
- 请远离include_once和require_once
尽量使用include, 而不是include_once, 理由是 include_once需要查询一遍已加载的文件列表, 确认是否存在, 然后再加载. 诚然, 这个理由是对的, 不过, 我今天要说的 ...
- 002_ASP.NET 换主题
网盘下载地址 http://pan.baidu.com/s/1c1VzIla 在线观看地址 http://www.bamn.cn/course/lesson/2 课程介绍 ASP.NET 实现更换主题 ...
- Ext4 ReiserFS Btrfs 等7种文件系统性能比拼
2009年02月04日 为了满足广大群众的热切需求,今天做了 Ext2.Ext3.Ext4.XFS.JFS.ReiserFS 和 Btrfs 的全面性能测试,对比结果如下: 本次测试所 ...