// 加载XML文件 BOOL CDuiPanel::LoadXmlFile(CString strFileName) { DuiXmlDocument xmlDoc; DuiXmlNode pDivElem; if(!DuiSystem::Instance()->LoadXmlFile(xmlDoc, strFileName)) { DuiSystem::LogEvent(LOG_LEVEL_ERROR, _T("CDuiPanel::LoadXmlFile %s failed"), strFileName); return FALSE; } m_strXmlFile = strFileName; pDivElem = xmlDoc.child(_T("div")); if(pDivElem == NULL) { DuiSystem::LogEvent(LOG_LEVEL_ERROR, _T("CDuiPanel::LoadXmlFile %s failed, not found div node"), strFileName); return FALSE; } // 加载div节点属性 if(!Load(pDivElem)) { DuiSystem::LogEvent(LOG_LEVEL_ERROR, _T("CDuiPanel::LoadXmlFile %s failed, load div node fail"), strFileName); return FALSE; } return TRUE; }
// 加载XML文件 BOOL CDuiMenu::LoadXmlFile(CString strFileName, CWnd *pParent, CPoint point, UINT uMessageID, CString strSubItemName) { m_pParent = pParent; m_point = point; m_uMessageID = uMessageID; DuiXmlDocument xmlDoc; DuiXmlNode pDivElem; BOOL bRet = FALSE; if(DuiSystem::Instance()->LoadXmlFile(xmlDoc, strFileName)) { m_strXmlFile = strFileName; pDivElem = xmlDoc.child(GetClassName()); if(pDivElem) { if(!strSubItemName.IsEmpty()) { // 加载一下XML的root节点的内容(不加载子控件) Load(pDivElem, FALSE); // 指定了子菜单名,则按照子菜单名进行查找并加载 bRet = LoadSubMenu(pDivElem, strSubItemName); }else { // 加载menu节点属性 bRet = Load(pDivElem); } } } return bRet; }
// 加载XML文件中定义的菜单 BOOL CDuiMenu::LoadXmlFile(CString strFileName, CString strSubItemName) { DuiXmlDocument xmlDoc; DuiXmlNode pDivElem; if(DuiSystem::Instance()->LoadXmlFile(xmlDoc, strFileName)) { pDivElem = xmlDoc.child(GetClassName()); if(pDivElem != NULL) { if(!strSubItemName.IsEmpty()) { // 加载一下XML的root节点的内容(不加载子控件) Load(pDivElem, FALSE); // 指定了子菜单名,则按照子菜单名进行查找并加载 LoadSubMenu(pDivElem, strSubItemName); }else { // 加载menu节点(可以设置节点菜单项的XML文件属性) LoadXmlNode(pDivElem, strFileName); } } return TRUE; } return FALSE; }
// 从嵌套的xml文件中加载tab页 BOOL CDuiTabCtrl::LoadTabXml(CString strFileName) { // 首先将所有tab页都隐藏 for(size_t i = 0; i < m_vecItemInfo.size(); i++) { TabItemInfo &itemInfo = m_vecItemInfo.at(i); if(itemInfo.pControl != NULL) { itemInfo.pControl->SetVisible(FALSE); } } DuiXmlDocument xmlDoc; DuiXmlNode pTabElem; if(DuiSystem::Instance()->LoadXmlFile(xmlDoc, strFileName)) { pTabElem = xmlDoc.child(GetClassName()); if(pTabElem != NULL) { // 加载下层tab页 Load(pTabElem, FALSE); } } // 只显示当前活动的tab页对应的Panel对象,其他页面的Panel对象都隐藏 for(size_t i = 0; i < m_vecItemInfo.size(); i++) { TabItemInfo &itemInfo = m_vecItemInfo.at(i); if(itemInfo.pControl != NULL) { if(i == m_nDownItem) { itemInfo.pControl->SetVisible(TRUE); }else { itemInfo.pControl->SetVisible(FALSE); } } } // 重新计算每个tab页的位置,并刷新界面 RefreshItems(); return TRUE; }
// 加载XML文件 BOOL CDlgPopup::LoadXmlFile(CString strFileName) { DuiXmlDocument xmlDoc; DuiXmlNode pDivElem; if(DuiSystem::Instance()->LoadXmlFile(xmlDoc, strFileName)) { m_strXmlFile = strFileName; pDivElem = xmlDoc.child((const LPCTSTR)GetClassName()); if(pDivElem) { // 加载popup节点属性 Load(pDivElem); } } return TRUE; }
// 加载XML内容 BOOL CDlgPopup::LoadXmlContent(CString strXmlContent) { DuiXmlDocument xmlDoc; DuiXmlNode pDivElem; m_strXmlContent = strXmlContent; DuiXmlParseResult result = xmlDoc.load(m_strXmlContent); if(result) { pDivElem = xmlDoc.child((const LPCTSTR)GetClassName()); if(pDivElem) { // 加载popup节点属性 Load(pDivElem); } } return TRUE; }
// 从XML设置XML属性,加载XML文件的内容作为div容器内的内容 HRESULT CDuiPanel::OnAttributeXml(const CString& strValue, BOOL bLoading) { if (strValue.IsEmpty()) return E_FAIL; DuiXmlDocument xmlDoc; DuiXmlNode pDivElem; if(DuiSystem::Instance()->LoadXmlFile(xmlDoc, strValue)) { m_strXmlFile = strValue; pDivElem = xmlDoc.child(_T("div")); if(pDivElem != NULL) { // 加载div节点属性 Load(pDivElem); } } return bLoading?S_FALSE:S_OK; }