第十一章 duilib 进阶教程.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
此教程是从Alberl的博客截取,送给各位没网的情况下也能看。感谢Alberl的分享。 在MFC中使用duilib (1) 由于入门教程的反响还不错,因此Alberl就以直播的形式来写《进阶教程》啦,本教程的前提:   1、请先阅读《仿迅雷播放器教程》   2、要有一定的duilib基础,如果还没,请先阅读《2013 duilib入门简明教程》。   3、下载基于VLC的MFC播放器(包含VLC等所有文件),csdn不允许上传相似的代码,因此后面的教程将不再上传VLC的dll、头文件等没有改变的文件。   《仿迅雷播放器教程 -- 基于VLC的MFC播放器 (6)》中界面是用MFC做的,因此我们要将它换成duilib。而在《2013 duilib入门简明教程 -- 结合win32和MFC (16)》中只讲了怎么在duilib中显示MFC窗口,以及在MFC中显示duilib窗口,但是没有讲消息的响应,因此有些基础薄弱的小伙伴还是不懂,这里借着这个机会讲解一下消息的响应,下面进入正题。   之前的MFC界面如下:  ?   现在我们将左边的三个按钮换成迅雷的,如下: ?   其中左边那块是纯duilib的界面,右边那块是在duilib的窗口里放了一个win32控件,这六个按钮都是有消息响应的,因此本教程实现了以下功能:   1、在MFC窗口显示了duilib窗口,并响应了duilib的控件。   2、在duilib的窗口显示了win32的控件,并响应了win32的控件。   所以与MFC结合的知识已经全面覆盖了(与win32结合也是类似的),到此,就不用担心老项目使用duilib带来问题了。   界面显示已经在《2013 duilib入门简明教程 -- 结合win32和MFC (16)》讲过了,那么这里只讲消息响应。 ? 一、纯duilib控件的响应:   只需在Notify函数做响应就行了,其中m_pDlgMain是MFC主窗口的指针。 void CDuiFrameWnd::Notify( TNotifyUI msg ) { if (m_pDlgMain) { if( msg.sType == _T(click) ) { if( msg.pSender-GetName() == _T(btnPrevious) ) { m_pDlgMain-OnBnClickedButtonPlayPrevious(); } else if( msg.pSender-GetName() == _T(btnNext) ) { m_pDlgMain-OnBnClickedButtonPlayNext(); } else if( msg.pSender-GetName() == _T(btnPlay) ) { m_pDlgMain-OnBnClickedButtonPlay(); } } } __super::Notify(msg); }   可见原有的MFC代码基本无需改动,是不是很简单呢~O(∩_∩)O~ ? 二、duilib中MFC控件的响应   由于duilib不够成熟,很多东西都要自己去处理,而如果水平不够的话,就很可能做不出来,已经有很多网友因为有些控件很难实现而放弃了。因此这种情况下,如果某个控件很难实现,我们用MFC的控件代替就是非常适合的,并且很多控件即使duilib能做出来,也还是取代不了MFC控件,比如虚拟表格等等,这些MFC控件已经很成熟了,并且界面也不难看,可自行定制,而如果用duilib去做虚拟表格的话,工作量肯定是很大的,因此这种情况下,也建议用MFC控件。那么在duilib中显示的MFC控件怎么响应呢?   其实也很简单,回到win32就行了,我们只需截获WM_COMMAND,而duilib的WM_COMMAND等windows消息可以在HandleMessage函数里截获,代码如下: LRESULT CDuiFrameWnd::HandleMessage( UINT uMsg, WPARAM wParam, LPARAM lParam ) { switch (uMsg) { case WM_COMMAND: if (IDC_BUTTON_DUI_NEXT == wParam)

文档评论(0)

kehan123 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档