コード例 #1
0
ファイル: DuiMenu.cpp プロジェクト: Zhuguoping/DuiVision
// 加载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;
}
コード例 #2
0
ファイル: DuiMenu.cpp プロジェクト: Zhuguoping/DuiVision
// 加载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;
}
コード例 #3
0
ファイル: DuiMenu.cpp プロジェクト: ALEXGUOQ/DuiVision
// 加载指定名字的菜单节点
BOOL CDuiMenu::LoadSubMenu(TiXmlElement* pXmlElem, CString strSubItemName)
{
	if(pXmlElem == NULL)
	{
		return FALSE;
	}

	// 递归遍历下层节点,看是否有指定名字的节点
	TiXmlElement* pItemElem = NULL;
	for (pItemElem = pXmlElem->FirstChildElement(); pItemElem != NULL; pItemElem=pItemElem->NextSiblingElement())
	{
		CStringA strNameA = pItemElem->Attribute("name");
		if(strSubItemName == CA2T(strNameA, CP_UTF8))
		{
			// 加载子菜单
			return Load(pItemElem);
		}
		if(LoadSubMenu(pItemElem, strSubItemName))
		{
			// 如果递归加载成功则返回,否则继续向下遍历查找
			return TRUE;
		}
	}
	return FALSE;
}
コード例 #4
0
ファイル: DuiMenu.cpp プロジェクト: Zhuguoping/DuiVision
// 加载指定名字的菜单节点
BOOL CDuiMenu::LoadSubMenu(DuiXmlNode pXmlElem, CString strSubItemName)
{
	if(pXmlElem == NULL)
	{
		return FALSE;
	}

	// 递归遍历下层节点,看是否有指定名字的节点
	for (DuiXmlNode pItemElem = pXmlElem.first_child(); pItemElem; pItemElem=pItemElem.next_sibling())
	{
		CString strName = pItemElem.attribute(_T("name")).value();
		if(strSubItemName == strName)
		{
			// 加载子菜单
			return Load(pItemElem);
		}
		if(LoadSubMenu(pItemElem, strSubItemName))
		{
			// 如果递归加载成功则返回,否则继续向下遍历查找
			return TRUE;
		}
	}
	return FALSE;
}