2013年12月6日

博客还是搬到csdn吧~

摘要: 从csdn转到博客园是因为博客园开放了博客接口,方便发博客,再者博客样式也比较多,排版兼容性也较好。 but, 博客园的链接在多个群里进行了宣传,当时大概有2000多的访问量,但是一个月过去了,现在还是只有3000多而已。 而csdn只是在论坛发了一下,帖子就被推荐,博客也被推荐,嗯,没怎... 阅读全文

posted @ 2013-12-06 21:33 Alberl 阅读(5923) 评论(22) 推荐(0) 编辑

2013年11月4日

【【【超高仿】】】迅雷播放器教程 -- 总结(14)

摘要: 代码下载:http://download.csdn.net/detail/qq316293804/6502879迅雷播放器教程汇总:仿迅雷播放器教程 -- 基于ffmpeg的C++播放器 (1)仿迅雷播放器教程 -- 媒体播放器对比 (2)仿迅雷播放器教程 -- 媒体播放三大底层架构简析 (3)仿迅雷播放器教程 -- 基于VLC的C++播放器 (4)仿迅雷播放器教程 -- 封装VLC (5)仿迅雷播放器教程 -- 基于VLC的MFC播放器 (6)仿迅雷播放器教程 -- 十年经验大牛对MFC的认识 (7)仿迅雷播放器教程 -- 权威界面库对比 (8)仿迅雷播放器教程 -- C++界面制作方法的对 阅读全文

posted @ 2013-11-04 23:38 Alberl 阅读(17340) 评论(23) 推荐(17) 编辑

duilib进阶教程 -- 总结 (17)

摘要: 整个教程的代码下载:http://download.csdn.net/detail/qq316293804/6502207 (由于duilib进阶教程主要介绍界面,所以这个教程只给出界面相关的代码,完整代码请进《仿迅雷播放器教程》)进阶教程汇总:duilib进阶教程 -- 在MFC中使用duilib (1)duilib进阶教程 -- 在duilib中使用MFC (2)duilib进阶教程 -- Container控件 (3)duilib进阶教程 -- XML嵌套及自定义控件 (4)duilib进阶教程 -- 图片和文字的位置调整 (5)duilib进阶教程 -- TreeView控件(6... 阅读全文

posted @ 2013-11-04 21:17 Alberl 阅读(10510) 评论(5) 推荐(2) 编辑

2013年11月3日

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

摘要: 一、控件隐藏后,允许用代码操作所有行为。 在做播放器的时候,最常用的功能莫过于顺序播放、随机播放了,而当我们切换歌曲的时候,显然应该选中该歌曲,List的选中函数是SelectItem,但是调用此函数时,却发现有时候没有效果,原因是每当播放歌曲或电影时,会隐藏播放列表,这个时候SelectItem会返回false,当然,我们在SelectItem之前显示播放列表,SelectItem之后再隐藏播放列表就可以绕过这个问题,但始终不是个好办法,并且这和常规逻辑不符合,或者说和MFC的逻辑不符合,可以看到Alberl在《仿迅雷播放器教程 -- 基于ffmpeg的C++播放器 (1)》和《仿迅雷播放. 阅读全文

posted @ 2013-11-03 00:02 Alberl 阅读(9918) 评论(0) 推荐(1) 编辑

2013年11月2日

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

摘要: 在前面的教程里,虽然图片都放到了skin文件夹里,但是XML却都在外面,当XML比较多时,就不太好看啦,如下图: 所以需要整理一下,将XML也放入skin文件夹,这样exe的目录就简洁多了: 将XML放入skin文件夹后,代码也要跟着变化哦,在duilib的Demo里经常可以看到如下代码: (其中SetResourcePath是设置资源的路径,包括XML和图片等各种资源;SetResourceZip是指资源都放到ListRes.zip文件里了。) CPaintManagerUI::SetInstance(hInstance); CPaintManagerUI::S... 阅读全文

posted @ 2013-11-02 23:23 Alberl 阅读(8568) 评论(0) 推荐(0) 编辑

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

摘要: 在《duilib进阶教程 -- TreeView控件的bug (9)》里,Alberl发现了两个bug,并解决了其中一个,现在教程已经接近尾声啦,所以Alberl就解决了另外一个bug。 Bug现象: 第一次启动软件时,由于播放列表并没有文件,所以没有显示垂直滚动条,当我们拖入文件后,就显示了垂直滚动条,这个时候会自动调整子控件的宽度,于是一切显示正常。 但是当我们第二次启动软件时,由于软件会加载文件到播放列表,所以一开始就显示了垂直滚动条,但这个时候并没有自动调整子控件的宽度,所以子控件显示到了列表的外面,如图: 其实不仅TreeView有问题,而且List也有问题,用如下代... 阅读全文

posted @ 2013-11-02 22:21 Alberl 阅读(6737) 评论(0) 推荐(0) 编辑

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

摘要: 一、windows原生消息 同样,入门教程只是给出了响应windows原生消息的方法,并没给出例子,这里以自适应屏幕分辨率为例。迅雷播放器虽然可以在启动的时候自动调整窗口大小,但是当屏幕分辨率实时改变时并没有调整窗口。我们做个改进,即可以实时调整大小,很明显,应该响应WM_DISPLAYCHANGE消息,而duilib自己处理windows消息的函数是在HandleMessage里,因此重载HandleMessage函数,加入如下代码:LRESULT CDuiFrameWnd::HandleMessage( UINT uMsg, WPARAM wParam, LPARAM lParam ){. 阅读全文

posted @ 2013-11-02 22:00 Alberl 阅读(9150) 评论(0) 推荐(0) 编辑

duilib进阶教程 -- 改进窗口拖动 (12)

摘要: 现在大家应该都知道caption="0,0,0,32",是指示标题栏区了吧,如果想要整个窗口都能拖动呢? 那直接把高度改成和窗口一样不就得了~O(∩_∩)O~ 嗯,这样是可以,比如窗口高度是600,那么我们指定caption="0,0,0,600",这样整个窗口就可以拖动了,但是如果窗口大小改变了呢?假如调整窗口的大小到800,这个时候最下面的200个像素的高度就不能拖动啦,因此这里进行一个改进,也是举手之劳,在WindowImplBase::OnNcHitTest里的 RECT rcCaption = m_PaintManager.GetCaption 阅读全文

posted @ 2013-11-02 21:33 Alberl 阅读(8127) 评论(4) 推荐(0) 编辑

duilib进阶教程 -- 扩展duilib的消息 (11)

摘要: duilib并没有提供双击和右键消息,所以需要我们自行扩展,这里以添加双击消息为例, 在UIDefine.h里,我们只看到了DUI_MSGTYPE_CLICK消息,却没有看到双击消息,因此需要在这里添加一个双击消息: #define DUI_MSGTYPE_DBCLICK (_T("dbclick")) 在UIManager.h里可以看到UIEVENT_DBLCLICK、UIEVENT_RBUTTONDOWN等消息,这是因为它的右键和双击等消息只给了内部的控件使用,这时我们需要让他传递出来,所以需要在CControlUI::DoEvent函数里传递双击消... 阅读全文

posted @ 2013-11-02 20:15 Alberl 阅读(7259) 评论(2) 推荐(0) 编辑

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

摘要: 到上一个教程为止,界面显示的代码就都介绍完啦,现在开始介绍控件的响应,其实在《2013 duilib入门简明教程 -- 事件处理和消息响应 (17)》里已经列出了duilib自己定义的所有消息,并且前面也介绍了Button和Tab的响应,还是有小伙伴们不知道怎么响应其他控件,因此这里介绍一下其他控件的响应。 需要注意的是,如果要响应控件,则必须给控件指定一个唯一的ID,在windows编程里,每个控件的ID都是一个数字,如IDC_BUTTON_ 等等,可以用GetDlgItem()来获取控件的指针;而duilib的ID却不是数字,而是一个字符串,如name="button1" 阅读全文

posted @ 2013-11-02 14:55 Alberl 阅读(10969) 评论(5) 推荐(0) 编辑

导航