加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

MFC中使用Duilib--2

发布时间:2020-12-15 23:40:14 所属栏目:百科 来源:网络整理
导读:在上一篇文章"MFC中使用Duilib--1"中,没有用到资源文件,即xml,本篇讲怎样加载文件。 1. 在exe输出目录下,创建一个skin目录,里面放入需要用到的图片文件,以及创建一个或几个xml文件,在这里,我创建一个skin.xml文件。内容如下: [html] view plain cop

在上一篇文章"MFC中使用Duilib--1"中,没有用到资源文件,即xml,本篇讲怎样加载文件。

1. 在exe输出目录下,创建一个skin目录,里面放入需要用到的图片文件,以及创建一个或几个xml文件,在这里,我创建一个skin.xml文件。内容如下:

[html] view plain copy
  1. <?xmlversion="1.0"encoding="UTF-8"?>
  2. <Windowmininfo="200,360"size="480,320">
  3. Defaultname="Button"value="normalimage="file='skinbutton_nor.bmp'corner='4,2,4,2'fade='200'hsl='true'"hotimage="file='skinbutton_over.bmp'corner='4,2'fade='200'hsl='true'"pushedimage="file='skinbutton_down.bmp'corner='4,2'fade='200'hsl='true'""/>
  4. Fontname="幼圆"size="16"default="true"/>
  5. VerticalLayoutbkcolor="#FFFF00FF">
  6. Buttonname="changeskinbtn"height="20"text="测试按钮"maxwidth="120"RichEditname="testrichedit"bordercolor="#FF0000"bordersize="0"borderround="18,18"inset="4,2"bkcolor="#FFF2F5FA"bkcolor2="#FFA0A000"bkcolor3="#FFF2F5FA"font="1"multiline="true"vscrollbar="true"autovscroll="true"enabled="true"rich="true"readonly="false"text="测试richedit"</RichEditEditname="testedit"text="测试编辑框"VerticalLayoutWindow>


需要用到的资源图片有button_nor.bmp、button_over.bmp、button_down.bmp。

再将上节内容中的CTestDlg的HandleMessage函数中的WM_CREATE消息改成如下内容:

[cpp] copy
    LRESULTCTestDlg::HandleMessage(UINTuMsg,WPARAMwParam,87); background-color:inherit; font-weight:bold">LPARAMlParam)
  1. {
  2. if(uMsg==WM_CREATE){
  3. //m_pm.Init(m_hWnd);
  4. //CControlUI*pButton=newCButtonUI;
  5. //pButton->SetName(_T("closebtn"));
  6. //pButton->SetBkColor(0xFFFF0000);
  7. //m_pm.AttachDialog(pButton);
  8. //m_pm.AddNotifier(this);
  9. m_pm.Init(m_hWnd);
  10. CDialogBuilderbuilder;
  11. CControlUI*pRoot=builder.Create(L"skinskin.xml",(UINT)0,NULL,&m_pm);
  12. ASSERT(pRoot&&"FailedtoparseXML");
  13. m_pm.AttachDialog(pRoot);
  14. m_pm.AddNotifier(this);
  15. return0;
  16. }
  17. elseif(uMsg==WM_DESTROY){
  18. ::PostQuitMessage(0);
  19. }
  20. LRESULTlRes=0;
  21. if(m_pm.MessageHandler(uMsg,wParam,lParam,lRes))returnlRes;
  22. returnCWindowWnd::HandleMessage(uMsg,lParam);
  23. }

编译运行即可。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读