duilib进阶教程 -- 改进List控件 (16)】的更多相关文章

一.控件隐藏后,允许用代码操作所有行为. 在做播放器的时候,最常用的功能莫过于顺序播放.随机播放了,而当我们切换歌曲的时候,显然应该选中该歌曲,List的选中函数是SelectItem,但是调用此函数时,却发现有时候没有效果,原因是每当播放歌曲或电影时,会隐藏播放列表,这个时候SelectItem会返回false,当然,我们在SelectItem之前显示播放列表,SelectItem之后再隐藏播放列表就可以绕过这个问题,但始终不是个好办法,并且这和常规逻辑不符合,或者说和MFC的逻辑不符合,可以…
现在大家应该都知道caption="0,0,0,32",是指示标题栏区了吧,如果想要整个窗口都能拖动呢? 那直接把高度改成和窗口一样不就得了~O(∩_∩)O~ 嗯,这样是可以,比如窗口高度是600,那么我们指定caption="0,0,0,600",这样整个窗口就可以拖动了,但是如果窗口大小改变了呢?假如调整窗口的大小到800,这个时候最下面的200个像素的高度就不能拖动啦,因此这里进行一个改进,也是举手之劳,在WindowImplBase::OnNcHitTest…
整个教程的代码下载:http://download.csdn.net/detail/qq316293804/6502207 (由于duilib进阶教程主要介绍界面,所以这个教程只给出界面相关的代码,完整代码请进<仿迅雷播放器教程>) 进阶教程汇总: duilib进阶教程 -- 在MFC中使用duilib (1) duilib进阶教程 -- 在duilib中使用MFC (2) duilib进阶教程 -- Container控件 (3) duilib进阶教程 -- XML嵌套及自定义控件 (4)…
在<duilib进阶教程 -- TreeView控件的bug (9)>里,Alberl发现了两个bug,并解决了其中一个,现在教程已经接近尾声啦,所以Alberl就解决了另外一个bug. Bug现象: 第一次启动软件时,由于播放列表并没有文件,所以没有显示垂直滚动条,当我们拖入文件后,就显示了垂直滚动条,这个时候会自动调整子控件的宽度,于是一切显示正常. 但是当我们第二次启动软件时,由于软件会加载文件到播放列表,所以一开始就显示了垂直滚动条,但这个时候并没有自动调整子控件的宽度,所以子控件显示…
由于入门教程的反响还不错,因此Alberl就以直播的形式来写<进阶教程>啦,本教程的前提: 1.请先阅读<仿迅雷播放器教程> 2.要有一定的duilib基础,如果还没,请先阅读<2013 duilib入门简明教程>. 3.下载基于VLC的MFC播放器(包含VLC等所有文件),csdn不允许上传相似的代码,因此后面的教程将不再上传VLC的dll.头文件等没有改变的文件. <仿迅雷播放器教程 -- 基于VLC的MFC播放器 (6)>中界面是用MFC做的,因此我们…
<zw版·Halcon-delphi系列原创教程>halconxlib控件列表 Halcon v11.01版,com控件,安装后,共有75个控件,      不过最重要的控件,只有两个,THImagex.THOperatorSetX控件. THImagex控件效率极高,可以视为内部数据交换模式,但与标准的Halcon函数有所差异,建议有经验的用户使用.        THOperatorSetX控件,采用类似仿真的模式,向Halcon模块提供脚本指令,由Halcon系统处理后,生成结果数据,再…
Xamarin iOS教程之页面控件 Xamarin iOS 页面控件 在iPhone手机的主界面中,经常会看到一排小白点,那就是页面控件,如图2.44所示.它是由小白点和滚动视图组成,可以用来控制翻页.在滚动滚动视图时可通过页面控件中的小白点来观察当前页面的位置,也可通过点击页面控件中的小白点来滚动到指定的页面.   图2.44  页面控件 在此图中,小白点对应的当前页被高亮显示.此控件指示内容分为两个页面. [示例2-26]以下将使用页面视图来控制图像的显示.具体步骤如下: (1)创建一个S…
Xamarin XAML语言教程构建ControlTemplate控件模板 (四) 2.在页面级别中构建控件模板 如果开发者要在页面级别中构建控件模板,首先必须将ResourceDictionary添加到页面中,然后在ResourceDictionary中实现模板的构建即可,其语法形式如下: <Page> <Page.Resources> <ResourceDictionary> <ControlTemplate x:Key="KeyName"…
Xamarin XAML语言教程构建ControlTemplate控件模板 (三) (3)打开MainPage.xaml.cs文件,编写代码,实现主题的切换功能.代码如下: using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using Xamarin.Forms; namespace ControlTemplateD…
Xamarin XAML语言教程构建ControlTemplate控件模板 (二) (2)打开MainPage.xaml文件,编写代码,将构建的控件模板应用于ContentView中.代码如下: <?xml version="1.0" encoding="utf-8" ?> <ContentPage xmlns="http://xamarin.com/schemas/2014/forms" xmlns:x="http:…
Xamarin XAML语言教程构建ControlTemplate控件模板 控件模板ControlTemplate ControlTemplate是从Xamarin.Forms 2.1.0开始被引入的.ControlTemplate被称为控件模板,它将页面的外观和内容进行了分离,从而让开发者可以更方便的创建基于主题的页面.本节将讲解控件模板相关的内容,其中包括构建控件模板以及控件模板的模板绑定等内容. 构建控件模板 控件模板可以在应用程序级别中构建,也可以在页面级别中构建.以下将对这两个构建方式…
DevExpress2011控件教程)编辑控件(comboBox,AspxCheckBox) 范例1 AspxCheckBox 是一个检查编辑控件去展示特殊条件是否关闭或者打开.它一般会展示Yes/No 或者是 True/False 的选择给用户.用户能够通过用鼠标点击编辑控件改变Check状态或者通过按 SPACE键来改变. 2011版本号同意有2或3种状态. ASPxCheckBox支持2到3中状态.依赖 AllowGrayed属性设置. 用程序设置状态,一般使用Checked 或者 Che…
代码下载:http://download.csdn.net/detail/qq316293804/6483905 上一个教程中,界面已经和迅雷一模一样啦,大小和位置一个像素都不差哟,亏得Alberl调了好久,不过既然决定要山寨了,那当然得学习下华强北~O(∩_∩)O~ 那么现在只剩下播放列表和四个网页啦,那四个网页很简单,用ActiveX控件和Tab控件就搞定了,具体参见<2013 duilib入门简明教程 -- 复杂控件介绍 (13)>,那么接下来就来介绍播放列表的实现. 看到播放列表,小伙…
到上一个教程为止,界面显示的代码就都介绍完啦,现在开始介绍控件的响应,其实在<2013 duilib入门简明教程 -- 事件处理和消息响应 (17)>里已经列出了duilib自己定义的所有消息,并且前面也介绍了Button和Tab的响应,还是有小伙伴们不知道怎么响应其他控件,因此这里介绍一下其他控件的响应. 需要注意的是,如果要响应控件,则必须给控件指定一个唯一的ID,在windows编程里,每个控件的ID都是一个数字,如IDC_BUTTON_ 等等,可以用GetDlgItem()来获取控件的…
前面两个教程的目的是教大家与MFC结合,那么从这篇起,将不再使用MFC,而使用纯win32项目,本文的所有知识已经在<duilib入门教程>里面讲过了,因此基础知识不再赘述. 代码下载:http://download.csdn.net/detail/qq316293804/6433161 效果如下(可拖拽边缘调节窗口大小,图片会自动居中) 此例子唯一需要说明的就是XML,代码如下: <?xml version="1.0" encoding="utf-8&qu…
上一个教程中,虽然播放列表的框架和迅雷一样了,但是字体大小.文字居中还没有解决.如果是刚学duilib,搞定这个可不容易,因为在有了入门教程的指导后,很容易就想到去看[属性列表.XML],但是当你试了一圈之后,发现font.itemfont.align.itemalign等等,都没有效果! 这个时候就只有去看duilib内部的代码了,和上个教程一样,虽然小伙伴们花一个晚上或者几个晚上就能搞出来,但一样没什么含金量,纯体力活,所以Alberl在这里告知一下小伙伴,省得重复掉坑. 虽然CTreeVi…
上个教程说到了TreeView的文字不能垂直居中的问题,而我们用LabelUI其实是可以垂直居中的,为什么不说是TreeView的bug,而说是Label控件的bug呢?因为影响TreeView垂直居中的就是Label,可以发现LabelUI的[属性列表.XML]里有valign属性,而代码里却找不到,是因为valign属性被合并到align属性里去了,只要设置align="center"就可以水平垂直都居中,但是想要垂直居中,水平左对齐啥的,就犯难了,因此这里需要将两个属性分开,va…
一.不自动调整子控件的宽度(TreeView宽度小于260时) 相信亲们用同样的代码,显示效果肯定和Alberl不一样吧~O(∩_∩)O~ 嘿嘿,仔细对比下,看看你们的列表头背景图片是下面这样的么? 细心的小伙伴们应该早就发现了,可以看到右边那个箭头并没有完全显示出来,这是因为TreeView又调皮啦! 最开始觉得是TreeView没有自动调整控件的宽度,去看了下代码,没啥问题,并且TestApp1里面那个tree也没出现这种现象,所以就一直以为是自己的XML代码出了问题.由于对duilib并不…
首先将本节要介绍的控件全部拖到界面上,并调整好位置,如图:  然后将Name属性改成其他名字,         不能是[控件名+UI+数字]这种,因为这是DuiDesigner默认的名字,它不会实际写入到XML,所以如果控件的名字被取成ActiveXUI1.ActiveXUI2.ButtonUI1这种格式的话,Name属性会被忽略,可以看到XML是没有Name属性的:     所以我们必须给它们指定其他的名字,这里格式统一为[控件名+Demo+数字],如图:     XML如下(删除了暂时没用到…
    在[2013 duilib入门简明教程 -- 复杂控件介绍 (13)]中虽然介绍了界面设计器上的所有控件,但是还有一些控件并没有被放到界面设计器上,还有一些常用控件duilib并没有提供(比如菜单控件).虽然duilib没有提供这些控件,但是自己绘制起来也是非常方便的,不过duilib的自绘可比MFC方便得不止一点点了,其实duilib的自绘大都不用自己绘制,就是一些控件和图片的组合而已,相当简单方便~~~       一.菜单控件     其实菜单控件的外观和ListBox非常像,所以…
前面的教程应该让大家对duilib的整体有所映像了,下面就来介绍下duilib具体控件的使用.    由于官方没有提供默认的控件样式,所以我就尽量使用win7或者XP自带的按钮样式了,虽然界面比较土鳖,但是想要换成百度杀毒那样的界面,只需要更换图片即可,如果有哪位小伙伴能够提供一些控件样式,那就再好不过啦~    首先利用一下前面教程的框架,效果图如下: main.cpp的代码如下: class CDuiFrameWnd : public WindowImplBase { public: vir…
已经有8个晚上没写教程啦,因为之后遇到了一些问题,主要是TreeView控件的问题,这个问题搞了几个晚上,然后还需要调试代码才能知道它的用法,虽然能够调试出来,但毕竟没什么含金量,只是重复劳动而已,相信很多前辈已经做过了.好吧,天朝的开源状况一向如此,重复造轮子的事情就由Alberl来终结吧,希望能给后面的小伙伴们节省时间,这里向那些提供Demo的大神们致敬,向duilib的作者致敬~O(∩_∩)O~ 说说这8个晚上干了啥吧: 1.前两个晚上实现了Treeview的基本界面,因为Demo里只有一…
好人做到底,送佛送到西.虽然上一篇教程已经说得很详细了,但Alberl还是再举一个例子.上一篇教程的主窗口是MFC的,所以这篇教程把主窗口换成duilib的~O(∩_∩)O~ 1.我们利用<2013 duilib入门简明教程 -- 完整的自绘标题栏(8)>里的XML做为主窗口,并且把客户区的控件都去掉,换成一个自定义控件<Dialog />.将XML改名为XMP_MAIN.xml,并放到exe目录. 2.在CDuiFrameWnd::CreateControl()函数里,加入自定义…
duilib并没有提供双击和右键消息,所以需要我们自行扩展,这里以添加双击消息为例, 在UIDefine.h里,我们只看到了DUI_MSGTYPE_CLICK消息,却没有看到双击消息,因此需要在这里添加一个双击消息: #define DUI_MSGTYPE_DBCLICK (_T("dbclick")) 在UIManager.h里可以看到 UIEVENT_DBLCLICK.UIEVENT_RBUTTONDOWN等消息,这是因为它的右键和双击等消息只给了内部的控件使用,这时我们需要让他传…
1 只有一个DCU文件的组件.DCU文件是编译好的单元文件,这样的组件是作者不想把源码公布.一般来说,作者必须说明此组件适合Delphi的哪种版本,如果版本不对,在安装时就会出现错误.也正是因为没有源码,给使用者带来了不便,那就是一旦Delphi版本升级,此组件就不能再使用了,当然有的作者给出了几种版本的DCU文件,用户根据需要选择使用.这样的组件的安装方法是:在Component菜单中,选择install component,在对话框 "into existing package"页…
代码下载:http://download.csdn.net/detail/qq316293804/6433937 之前入门教程里已经讲过了自定义控件,这里借着迅雷播放器再次举个例子. 1.我们先给迅雷播放器加入下面那一排按钮. 和上个教程一样,我们可以选择直接放在主XML里面,也可以选择放到Container里面,在这里,为了让主XML的代码更简洁一点,我们选择放到单独的XML里面.而这个单独的XML就相当于一个自定义控件了,将控件名取为WndPlayPanel,XML取名为[WndPlayPa…
(游戏蛮牛首发)大家好我是孙广东.官网提供了专业的视频教程http://www.daikonforge.com/dfgui/tutorials/,只是是在youtube上.要观看是须要FQ的. 只是教程还是文本更好一些,便于观看查找. 2.2  加入一个buttonButton 来看看特有的属性:Button Properties Data 显示的文本 Behavior 中的几个: Aoto Size 选中时就是button的背景会依据Data中的文本缩放成最小的范围. Space to Cli…
加入自己定义控件可能有两种不同的情况: 1.  在duilib库中加入的自己定义控件. 2.  在我们的应用程序中自己重写了一个控件. 以下開始解说不同的情况下怎么才干支持在xml文件配置控件: 1.  库中情况 假如自己定义的控件是CGifUI类. 库中情况相对是比較简单的,仅仅需在分析xml文件时候将控件创建出来即可了,所以我找到的函数是CControlUI* CDialogBuilder::_Parse(CMarkupNode* pRoot, CControlUI* pParent, CP…
本文主要介绍PyQt5界面最基本使用的单选按钮.复选框.下拉框三种控件的使用方法进行介绍. 1.RadioButton单选按钮/CheckBox复选框.需要知道如何判断单选按钮是否被选中. 2.ComboBox下拉框.需要知道如何对下拉框中的取值进行设置以及代码实现中如何获取用户选中的值. 带着这些问题下面开始介绍这RadioButton单选按钮.CheckBox复选框.ComboBox下拉框三种基本控件的使用方法 QRadioButton单选按钮 单选按钮为用户提供多选一的选择,是一种开关按钮…
上一节了解了大体流程,但是界面控件元素是如何被加载.解析.构建.管理.控件消息如何处理的呢?接下来我们将结合控件构造器进行分析: CDialogBuilder:控件构造器,主要用以解析xml配置文件并以此创建相应控件及相关属性. 类成员数据: m_xml:xml解析器,用以读取并解析xml配置文件: m_pCallback:构造器回调函数,用以给予用户可以实现自定义的构造控件对象的方式: m_pstrtype:以NULL为结束符的字符串,资源类型,参数含义同EnumResLangProc函数中的…