MFC中使用Duilib--2

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

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

[html] view
plain
copy
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <Window mininfo="200,360" size=" 480,320 ">
  3. <Default name="Button" value="normalimage="file='skin\button_nor.bmp' corner='4,2,4,2' fade='200' hsl='true'" hotimage="file='skin\button_over.bmp' corner='4,2,4,2' fade='200' hsl='true'" pushedimage="file='skin\button_down.bmp' corner='4,2,4,2' fade='200' hsl='true' " " />
  4. <Font name="幼圆" size="16" default="true" />
  5. <VerticalLayout bkcolor="#FFFF00FF">
  6. <Button name="changeskinbtn" height="20" text="测试按钮" maxwidth="120"/>
  7. <RichEdit name="testrichedit" bordercolor="#FF0000" bordersize="0" borderround="18,18" inset="4,2,4,2" bkcolor="#FFF2F5FA" bkcolor2="#FFA0A000" bkcolor3="#FFF2F5FA" font="1" multiline="true" vscrollbar="true" autovscroll="true" enabled="true" rich="true" readonly="false" text="测试richedit">
  8. </RichEdit>
  9. <Edit name="testedit" text="测试编辑框" />
  10. </VerticalLayout>
  11. </Window>

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

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

  1. LRESULT CTestDlg::HandleMessage(UINT uMsg, WPARAM wParam, LPARAM lParam)
  2. {
  3. if( uMsg == WM_CREATE ) {
  4. //m_pm.Init(m_hWnd);
  5. //CControlUI *pButton = new CButtonUI;
  6. //pButton->SetName(_T("closebtn"));
  7. //pButton->SetBkColor(0xFFFF0000);
  8. //m_pm.AttachDialog(pButton);
  9. //m_pm.AddNotifier(this);
  10. m_pm.Init(m_hWnd);
  11. CDialogBuilder builder;
  12. CControlUI *pRoot = builder.Create(L"skin\\skin.xml", (UINT)0, NULL, &m_pm);
  13. ASSERT(pRoot && "Failed to parse XML");
  14. m_pm.AttachDialog(pRoot);
  15. m_pm.AddNotifier(this);
  16. return 0;
  17. }
  18. else if( uMsg == WM_DESTROY ) {
  19. ::PostQuitMessage(0);
  20. }
  21. LRESULT lRes = 0;
  22. if( m_pm.MessageHandler(uMsg, wParam, lParam, lRes) ) return lRes;
  23. return CWindowWnd::HandleMessage(uMsg, wParam, lParam);
  24. }

编译运行即可。

上一篇:设置IE8 多个Table只产生一个进程


下一篇:[MFC] 向文本编辑框写入数据与从其中读取数据