Duilib XML配置界面

前端之家收集整理的这篇文章主要介绍了Duilib XML配置界面前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
  1. #pragma once
  2. /************************
  3. *Duiib XML配置界面
  4. *Author:邱于涵
  5. *2016年12月18日23:43:35
  6. *********************/
  7. #include<Windows.h>
  8. //Duilb的头文件
  9. #include<UIlib.h>
  10. //Duilib的命名空间
  11. using namespace DuiLib;
  12. //|根据宏判断语句 判断是否Unicode 以及相应的动态链接
  13. #ifdef _DEBUG
  14. # ifdef _UNICODE
  15. # pragma comment(lib,"DuiLib_ud.lib")
  16. # else
  17. # pragma comment(lib,"DuiLib_d.lib")
  18. # endif
  19. #else
  20. # ifdef _UNICODE
  21. # pragma comment(lib,"DuiLib_u.lib")
  22. # else
  23. # pragma comment(lib,"DuiLib.lib")
  24. # endif
  25. #endif
  26. // CDuiWnd 继承于 CWindowWnd 主要实现两个虚函数 GetWindowClassName
  27. //和 HandleMessage(相应消息)
  28. //如果需要相应控件的消息还需要继承INotifyUI实现虚函数Notify
  29. //每个CWindowWnd必须包含CPaintMessageUI界面管理器
  30. class CDuiFrameWnd :public CWindowWnd,public INotifyUI
  31. {
  32. protected:
  33. CPaintManagerUI m_PaintManager;
  34. public:
  35. //WindowClassName
  36. virtual LPCTSTR GetWindowClassName()const{ return _T("DUIWND"); }
  37. //响应控件消息
  38. virtual void Notify(TNotifyUI & msg)
  39. {
  40. //消息类型为点击
  41. if (msg.sType == _T("click"))
  42. {
  43. //这里的 GetName是唯一的,相当于MFC里面的ID
  44. if (msg.pSender->GetName() == _T("btnHello"))
  45. {
  46. MessageBox(NULL,_T("提示"),_T("你点击了"),NULL);
  47.  
  48. }
  49. }
  50. }
  51. //响应窗口消息
  52. virtual LRESULT HandleMessage(UINT uMsg,WPARAM wParam,LPARAM lParam)
  53. {
  54. //返回值
  55. LRESULT lRes = 0;
  56. //WM_CREATE消息
  57. if (uMsg == WM_CREATE)
  58. {
  59. //把自己的窗口句柄 与窗口绘制管理器挂钩
  60. m_PaintManager.Init(m_hWnd);
  61. //设置关联的xml文件
  62. CDialogBuilder builder;
  63. CControlUI * pRoot = builder.Create(_T("UISkin1.xml"),(UINT)0,NULL,&m_PaintManager);
  64. //把这个控件绘制到窗口上
  65. m_PaintManager.AttachDialog(pRoot);
  66. //// 把自己加入到CPaintManagerUI的m_aNotifiers数组中,用于处理Notify函数
  67. m_PaintManager.AddNotifier(this);
  68. return lRes;//返回
  69. }
  70. //如果此消息没有处理 就交给 绘制管理器 进行默认处理(Notify函数将在这里被绘制管理器调用
  71. if (m_PaintManager.MessageHandler(uMsg,wParam,lParam,lRes))
  72. {
  73. return lRes;
  74. }
  75. //如果还没处理就交给 CWindowWnd处理()
  76. return __super::HandleMessage(uMsg,lParam);
  77.  
  78. }
  79. };
  80. int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE preInstance,LPSTR lpCmdLin,int nCmdShow)
  81. {
  82. //将程序实例 与 皮肤绘制管理器挂钩
  83. CPaintManagerUI::SetInstance(hInstance);
  84. //这里设置 资源的路径(也就是xml皮肤文件在哪里~~(在实例的相同目录下))
  85. CPaintManagerUI::SetResourcePath(CPaintManagerUI::GetInstancePath());
  86. CDuiFrameWnd duiFrame;
  87. //Create创建窗口(发送WM_CREATE消息)
  88. duiFrame.Create(NULL,_T("涵涵的Duilib按钮实例"),WS_OVERLAPPEDWINDOW,WS_EX_WINDOWEDGE);
  89. //显示
  90. duiFrame.ShowModal();
  91. return 0;
  92.  
  93. }

UISkins1.xml(这个可用DUIDesigner生成)

  1. <?xml version="1.0" encoding="utf-8" standalone="yes" ?>
  2. <Window>
  3. <VerticalLayout enabled="true" width="400" height="400" bkimage="QQ截图20161217235251.png" bkcolor="#FF00FFFF">
  4. <Progress float="true" pos="251,143,0" enabled="true" width="60" height="30" bkcolor="#FFFF00FF" bkcolor2="#00008080" textcolor="#FF000000" disabledtextcolor="#FFA7A6AA" align="center" min="0" max="100" value="0" hor="true" />
  5. <Slider float="true" pos="246,242,0" enabled="true" width="60" height="30" bkcolor="#FF008000" bkcolor2="#00008080" textcolor="#FF000000" disabledtextcolor="#FFA7A6AA" align="center" min="0" max="100" value="50" hor="true" thumbimage="QQ截图20161217235137.png" thumbsize="10,10" />
  6. <Button name="btnHello" float="true" pos="81,116,0" enabled="true" width="60" height="30" bkcolor="#FF00FFFF" textcolor="#FF000000" disabledtextcolor="#FFA7A6AA" align="center" />
  7. </VerticalLayout>
  8. </Window>

文件


运行截图

猜你在找的XML相关文章