Exemplo n.º 1
0
	BOOL CCustomMenu::ChangeMenuItem(CMenu* pMenu, BOOL bTop)
	{
		if(pMenu != NULL)
		{
			int itemCount = pMenu->GetMenuItemCount();

			for (int i = 0 ; i < itemCount ; i++)
			{
				int itemId = pMenu->GetMenuItemID(i);

				CMenu* pSubMenu = pMenu->GetSubMenu(i);

				if(itemId == -1 && bTop)		//Application menu or context menu.
				{
					m_MenuInfoList[m_uItemIndex].m_miiItemId = 
						TOPMOST_MENU;
				}
				else if (itemId == -1)	//Child menu.
				{
					m_MenuInfoList[m_uItemIndex].m_miiItemId = CHILD_MENU;
					m_MenuInfoList[m_uItemIndex].m_miiIconIndex = m_uIconIndex;
					m_uIconIndex++;
				}
				else if (itemId == 0)	//Separator.
				{
					m_MenuInfoList[m_uItemIndex].m_miiItemId = SEPARATOR_MENU;
				}
				else if(itemId > 0)	//Common menu item.
				{
					m_MenuInfoList[m_uItemIndex].m_miiItemId = itemId;
					m_MenuInfoList[m_uItemIndex].m_miiIconIndex = m_uIconIndex;
					m_uIconIndex++;
				}

				pMenu->GetMenuString(i, 
					m_MenuInfoList[m_uItemIndex].m_miiItemText, MF_BYPOSITION);
				pMenu->ModifyMenu(i, MF_BYPOSITION | MF_OWNERDRAW | MF_STRING,
					m_MenuInfoList[m_uItemIndex].m_miiItemId, 
					(LPCTSTR)(&m_MenuInfoList[m_uItemIndex]));

				m_uItemIndex++;	//Item index increase.

				if(pSubMenu)
				{
					ChangeMenuItem(pSubMenu);
				}
			}
		}
		return TRUE;
	}
Exemplo n.º 2
0
void CNewMenu::ChangeMenuItem(CMenu *pMenu)
{
	int itemCount=pMenu->GetMenuItemCount();
	for(int i=0;i<itemCount;i++)
	{
		CString *pText=new CString;
		UINT itemID=pMenu->GetMenuItemID(i);//获取菜单项ID号
		pMenu->GetMenuString(i,*pText,MF_BYPOSITION);//获取菜单文本

		//ModifyMenu函数最后一个参数对应DRAWITEMSTRUCT结构里的itemData变量
		pMenu->ModifyMenu(i,MF_OWNERDRAW|MF_BYPOSITION|MF_STRING,itemID,(LPSTR)pText);
		//pMenu->ModifyMenu(i,MF_BYPOSITION|MF_STRING,itemID,(LPSTR)pText);
		if(itemID==-1)//如果是一个弹出式菜单
		{
			ChangeMenuItem(pMenu->GetSubMenu(i));
		}
		m_relea.push_back(pText);
	}  
}