本文主要是介绍Duilib中的XML嵌套,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
duilib使用嵌套xml可以简化代码的书写,有利于模块化的页面布局分解,duilib库的xml嵌套主要有两种方式
方式一、以创建控件的方式嵌套xml
在CreateControl(LPCTSTR pstrClassname )中创建自定义的控件,并绑定到xml文件
1 CControlUI* FrameWnd::CreateControl( LPCTSTR pstrClassName )2 {3 if (_tcsicmp(pstrClassName, _T("Wnd_Xml_1")) == 0)4 {5 CDialogBuilder builder;6 CControlUI* pUI = builder.Create(_T("Wnd_Xml_2.xml")); 7 return pUI;8 }9 else if (_tcsicmp(pstrClassName, _T("Wnd_Xml_2")) == 0)
10 {
11 CDialogBuilder builder;
12 CControlUI* pUI = builder.Create(_T("Wnd_Xml_2.xml"));
13 return pUI;
14 }
15
16 return NULL;
17 }
FrameWnd的XML文件使用时
<Wnd_Xml_1 height="520" /><Wnd_Xml_2 height="521" />
Wnd_Xml_1和Wnd_Xml_2则只需按照普通Window的方式来实现即可
方式二、使用TableLayout嵌套xml
1 <TabLayout name="wizard_setup_tab" >
2 <Include source="configpage.xml" />
3 <Include source="installingpage.xml" />
4 <Include source="finishpage.xml" />
5 <Include source="uninstallpage.xml" />
6 <Include source="uninstallingpage.xml" />
7 <Include source="uninstallfinishpage.xml" />
8 </TabLayout>
使用的时候需要在指定具体的xml进行加载
例如使用finishpage.xml
使用时需要如下操作:
CTabLayoutUI * setup_tab = static_cast <CTabLayoutUI*>(m_PaintManager.FindControl(_T("wizard_setup_tab")));setup_tab->SelectItem(2);
方式三、以创建Frame的方式嵌套Frame从而达到嵌套xml的目的
g_pWordManagerFrame->Create(NULL, _T("WordManagerWnd"), UI_WNDSTYLE_DIALOG, WS_EX_WINDOWEDGE | WS_EX_TOOLWINDOW);
直接定义一个Frame来加载独立的xml
这篇关于Duilib中的XML嵌套的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!