亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來(lái)到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? menuex.cpp

?? vc++_完美實(shí)現(xiàn)真彩自繪菜單chengxudaima其可以實(shí)現(xiàn)多彩的菜單
?? CPP
?? 第 1 頁(yè) / 共 3 頁(yè)
字號(hào):
		
		// set submenu disabled imagelis
		if(lpMenuItem->bIsSubMenu)		
			lpMenuItem->pSubMenu->SetDisabledImageList(pImageList);
				
	}
}
/////////////////////////////////////////////////////////////////////////////
void CMenuEx::SetHotImageList(CImageList* pImageList)
{
	if(pImageList==NULL)
		return;
	
	LPMENUITEM lpMenuItem;
	m_pHotImageList =pImageList;
	
	if(m_pImageList==NULL&&m_pDisabledImageList==NULL)
	{		
		IMAGEINFO info;		

		// only hot imagelist is set
		// get imagelist size
		pImageList->GetImageInfo(0,&info);			
		m_szImage.cx=info.rcImage.right-info.rcImage.left;	
		m_szImage.cy=info.rcImage.bottom-info.rcImage.top;
	}

	for(int i = 0; i < m_MenuItemArr.GetSize(); i++)
	{
		lpMenuItem=m_MenuItemArr.GetAt(i);
		lpMenuItem->pHotImageList=pImageList;
		
		// set submenu hot imagelis
		if(lpMenuItem->bIsSubMenu)		
			lpMenuItem->pSubMenu->SetHotImageList(pImageList);		
	}	
}
/////////////////////////////////////////////////////////////////////////////
void CMenuEx::SetImageIndex(const UINT* nIDResource,UINT nIDCount)
{
	// set imagelist index from specific table "nIDResource[nIDCount]"
	// only can SetImageIndex after set one imagelist
	if(m_pImageList==NULL&&m_pHotImageList==NULL&&m_pDisabledImageList==NULL)
		return;

	LPMENUITEM lpMenuItem;
	for(UINT nIndex=0;nIndex<(UINT)m_MenuItemArr.GetSize();nIndex++)
	{
		lpMenuItem=m_MenuItemArr.GetAt(nIndex);

		// call submenu 's loadtoolbar
		if(lpMenuItem->bIsSubMenu)		
			lpMenuItem->pSubMenu->SetImageIndex(nIDResource,nIDCount);		
		else
		{
			for(UINT i=0;i<nIDCount;i++)
			{
				// if table's commandID equal menu item's command ID
				// set nImageIndex to table's index
				if(lpMenuItem->nID==nIDResource[i])
					lpMenuItem->nImageIndex=i;
			}
		}
	}
}
/////////////////////////////////////////////////////////////////////////////
void CMenuEx::LoadToolBar(const CToolBar* pToolBar)
{
	
	// load all imagelist from pToolBar
	SetImageList(pToolBar->GetToolBarCtrl().GetImageList());
	SetDisabledImageList(pToolBar->GetToolBarCtrl().GetDisabledImageList());
	SetHotImageList(pToolBar->GetToolBarCtrl().GetHotImageList());
	
	// pToolBar don't have imagelist
	if(m_pImageList==NULL&&m_pDisabledImageList==NULL&&m_pHotImageList==NULL)
		return;

	LPMENUITEM pItem;

	for(UINT nIndex=0;nIndex<(UINT)m_MenuItemArr.GetSize();nIndex++)
	{
		pItem=m_MenuItemArr.GetAt(nIndex);		
		
		// load submenu toolbar
		if(pItem->bIsSubMenu)		
			pItem->pSubMenu->LoadToolBar(pToolBar);		
		else
		{	
			for(UINT i=0;i<(UINT)pToolBar->GetToolBarCtrl().GetButtonCount();i++)
			{				 
				if(pItem->nID==pToolBar->GetItemID(i))
				{
					// if toolbar's commandID equal menu item's command ID
					// set nImageIndex to toolbar's index
					pItem->nImageIndex=i;

					// set all imagelist to toolbar's imagelist
					pItem->pImageList=m_pImageList;
					pItem->pDisabledImageList=m_pDisabledImageList;
					pItem->pHotImageList=m_pHotImageList;						
				}
			}
		}		
	}
}
/////////////////////////////////////////////////////////////////////////////
void CMenuEx::SetTextColor(COLORREF color)
{
	LPMENUITEM lpMenuItem;
	// set normal menu text color
	m_crText =color;
	for(int i = 0; i < m_MenuItemArr.GetSize(); i++)
	{
		lpMenuItem=m_MenuItemArr.GetAt(i);
		
		// set submenu text color
		if(lpMenuItem->bIsSubMenu)
			lpMenuItem->pSubMenu->SetTextColor(color);
	}
}
/////////////////////////////////////////////////////////////////////////////

void CMenuEx::SetBackgroundColor(COLORREF color)
{
	LPMENUITEM lpMenuItem;
	// set menu background color
	m_crBackground =color;
	for(int i = 0; i < m_MenuItemArr.GetSize(); i++)
	{
		lpMenuItem=m_MenuItemArr.GetAt(i);
		if(lpMenuItem->bIsSubMenu)
			lpMenuItem->pSubMenu->SetBackgroundColor(color);
	}
}
/////////////////////////////////////////////////////////////////////////////

void CMenuEx::SetTextSelectedColor(COLORREF color)
{
	LPMENUITEM lpMenuItem;
	// set selected menu text color
	m_crTextSelected =color;
	for(int i = 0; i < m_MenuItemArr.GetSize(); i++)
	{
		lpMenuItem=m_MenuItemArr.GetAt(i);
		if(lpMenuItem->bIsSubMenu)
			lpMenuItem->pSubMenu->SetTextSelectedColor(color);	
	}
}
/////////////////////////////////////////////////////////////////////////////

void CMenuEx::SetLeftColor(COLORREF color)
{
	LPMENUITEM lpMenuItem;
	// set menu left side color
	m_crLeft =color;
	for(int i = 0; i < m_MenuItemArr.GetSize(); i++)
	{
		lpMenuItem=m_MenuItemArr.GetAt(i);
		if(lpMenuItem->bIsSubMenu)
			lpMenuItem->pSubMenu->SetLeftColor(color);
	}
}
/////////////////////////////////////////////////////////////////////////////
void CMenuEx::SetSelectedBroderColor(COLORREF color)
{
	LPMENUITEM lpMenuItem;
	// set selected rectangle border color
	m_crSelectedBroder =color;
	for(int i = 0; i < m_MenuItemArr.GetSize(); i++)
	{
		lpMenuItem=m_MenuItemArr.GetAt(i);
		if(lpMenuItem->bIsSubMenu)
			lpMenuItem->pSubMenu->SetSelectedBroderColor(color);
	}
}
/////////////////////////////////////////////////////////////////////////////
void CMenuEx::SetSelectedFillColor(COLORREF color)
{
	LPMENUITEM lpMenuItem;
	// set selected rectangle fill color
	m_crSelectedFill =color;
	for(int i = 0; i < m_MenuItemArr.GetSize(); i++)
	{
		lpMenuItem=m_MenuItemArr.GetAt(i);
		if(lpMenuItem->bIsSubMenu)
			lpMenuItem->pSubMenu->SetSelectedFillColor(color);
	}
}
/////////////////////////////////////////////////////////////////////////////
void CMenuEx::SetPopupMenu(BOOL bPopupMenu)
{
	// set top-level menu indicator	
	m_bPopupMenu=bPopupMenu;
}
/////////////////////////////////////////////////////////////////////////////
void CMenuEx::UpdatePopupMenu()
{	
	// top-level menu do not need update popupmenu
	if(!m_bPopupMenu)
		return;
	
	LPMENUITEM pMenuItem;
	UINT nID,nState,nIndex;
	CSize  size;
	CString strMenu;
	UINT nSize=GetMenuItemCount();	
	CDC	 *pDC =AfxGetMainWnd()->GetDC();

	for(nIndex=0;nIndex<nSize;nIndex++)
	{
		nID=GetMenuItemID(nIndex);					// get menu ID
		nState=GetMenuState(nIndex,MF_BYPOSITION);	// get menu state
		GetMenuString(nIndex,strMenu,MF_BYPOSITION);// get menu name
		pMenuItem=GetMenuItem(nIndex);	
		
		if((pMenuItem==NULL)||(pMenuItem->nID!=nID))
		{
			pMenuItem=new MENUITEM;			
			
			if(nID==0)
			{	
				// insert separator
				pMenuItem->strText = "";						// no name
				pMenuItem->nID = 0;								// separator's ID
				pMenuItem->itemSize=CSize(0,m_nSeparator);		// separator's default size
				pMenuItem->pImageList=NULL;						// separator has no image
				pMenuItem->pDisabledImageList=NULL;
				pMenuItem->pHotImageList=NULL;
				pMenuItem->nImageIndex=-1;
				pMenuItem->bIsSubMenu=FALSE;					// separator must not be popupmenu
				pMenuItem->pSubMenu=NULL;				
				
				// modify menu item to ownerdrawn style
				// if this menu is not a top-level menu
				CMenu::ModifyMenu(nIndex,MF_SEPARATOR|MF_BYPOSITION|MF_OWNERDRAW,0,(LPCTSTR)pMenuItem);
				
				// insert menu item to array
				m_MenuItemArr.InsertAt(nIndex,pMenuItem);					
			}
			else if(nID==-1)
			{
				// bypass popupmenu's item number	
				nState&=0x00FFL;	
				// insert popupmenu
				CMenuEx* pSubMenu=new CMenuEx;				
				// create new popupmenu
				pSubMenu->SetPopupMenu(TRUE);
				
				// load popupmenu from specific handle
				pSubMenu->LoadMenu((HMENU)(CMenu::GetSubMenu(nIndex)->Detach()));
				size=pDC->GetTextExtent(strMenu);
				
				pMenuItem->strText = strMenu;
				pMenuItem->nID = -1;					
				// specified menu item size,do not include image's size
				pMenuItem->itemSize.cx=size.cx+25;
				pMenuItem->itemSize.cy=2;				
				pMenuItem->pImageList=m_pImageList;		
				pMenuItem->pDisabledImageList=m_pDisabledImageList;
				pMenuItem->pHotImageList=m_pHotImageList;
				pMenuItem->nImageIndex=-1;
				pMenuItem->bIsSubMenu=TRUE;
				pMenuItem->pSubMenu=pSubMenu;		// popupmenu's pointor				
				
				CMenu::ModifyMenu(nIndex,nState|MF_POPUP|MF_BYPOSITION|MF_OWNERDRAW,(UINT)(pSubMenu->m_hMenu),(LPCTSTR)pMenuItem);
				
				m_MenuItemArr.InsertAt(nIndex,pMenuItem);
			}
			else
			{					
				// insert normal menu item
				size=pDC->GetTextExtent(strMenu);
				
				pMenuItem->strText = strMenu;
				pMenuItem->nID = nID;			
				pMenuItem->itemSize.cx=size.cx+10;
				pMenuItem->itemSize.cy=2;		
				pMenuItem->pImageList=m_pImageList;		
				pMenuItem->pDisabledImageList=m_pDisabledImageList;
				pMenuItem->pHotImageList=m_pHotImageList;
				pMenuItem->nImageIndex=-1;
				pMenuItem->bIsSubMenu=FALSE;
				pMenuItem->pSubMenu=NULL;
				
				CMenu::ModifyMenu(nIndex,nState|MF_BYPOSITION|MF_OWNERDRAW,nID,(LPCTSTR)pMenuItem);
				
				m_MenuItemArr.InsertAt(nIndex,pMenuItem);					
			}			
		}
		else if((nID!=-1)&&((pMenuItem->strText==strMenu)||!(nState & MF_OWNERDRAW)))
		{	
			// system don't auto insert popup menu item
		    pMenuItem->strText=strMenu;
			CMenu::ModifyMenu(nIndex,nState|MF_BYPOSITION|MF_OWNERDRAW,nID,(LPCTSTR)pMenuItem);
		}
	}
	
	for(nIndex=nSize;nIndex<GetMenuItemSize();nIndex++)
	{
		pMenuItem=m_MenuItemArr.GetAt(nIndex);
		m_MenuItemArr.RemoveAt(nIndex);
		delete pMenuItem;
	}	
}
/////////////////////////////////////////////////////////////////////////////
void CMenuEx::InitPopupMenu(CMenu* pSubMenu,UINT nIndex,BOOL bSystem)
{
	//update pSubMenu's item to owerdrawn style
	if(bSystem)
		return;
	
	((CMenuEx*)pSubMenu)->UpdatePopupMenu();	
}
/////////////////////////////////////////////////////////////////////////////
void CMenuEx::MeasureItem(LPMEASUREITEMSTRUCT  lpMIS)
{
	// check measure ownerdraw menu or other controler
	if(lpMIS->CtlType!=ODT_MENU)		
		return;

	MENUITEM *lpMenuItem =(LPMENUITEM)lpMIS->itemData;
	
	// initialize width and height with itemSize
	lpMIS->itemWidth=lpMenuItem->itemSize.cx;
	lpMIS->itemHeight=lpMenuItem->itemSize.cy;

	// not separator,may be popupmenu or normal menu item
	if(lpMenuItem->nID!=0)
	{		
		IMAGEINFO info;

		if(lpMenuItem->pImageList!=NULL)
		{	
			// first add normal imagelist size
			lpMenuItem->pImageList->GetImageInfo(0,&info);				
			lpMIS->itemWidth+=(info.rcImage.right-info.rcImage.left);
			lpMIS->itemHeight+=(info.rcImage.bottom-info.rcImage.top);			
		}
		else if(lpMenuItem->pDisabledImageList!=NULL)
		{
			// or add disabled imagelist size
			lpMenuItem->pDisabledImageList->GetImageInfo(0,&info);				
			lpMIS->itemWidth+=(info.rcImage.right-info.rcImage.left);
			lpMIS->itemHeight+=(info.rcImage.bottom-info.rcImage.top);
		}
		else if(lpMenuItem->pHotImageList!=NULL)
		{
			// or add hot imagelist size
			lpMenuItem->pHotImageList->GetImageInfo(0,&info);				
			lpMIS->itemWidth+=(info.rcImage.right-info.rcImage.left);
			lpMIS->itemHeight+=(info.rcImage.bottom-info.rcImage.top);
		}
		else
		{		
			// add default size,if do not have imagelist
			lpMIS->itemWidth+=20;
			lpMIS->itemHeight+=20;
		}		
	}		
}
/////////////////////////////////////////////////////////////////////////////
UINT  CMenuEx::GetMenuItemSize() const 
{
	// get menu item counter
	return m_MenuItemArr.GetSize();
}
/////////////////////////////////////////////////////////////////////////////
LPMENUITEM CMenuEx::GetMenuItem(UINT nPosition)
{
	// get menu item by position
	if(nPosition>(UINT)m_MenuItemArr.GetUpperBound())
		return NULL;

	return m_MenuItemArr.GetAt(nPosition);
}
/////////////////////////////////////////////////////////////////////////////



?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
依依成人综合视频| 午夜亚洲国产au精品一区二区| 一区二区三区四区视频精品免费| 日韩福利视频导航| 国产99久久久国产精品潘金| 777色狠狠一区二区三区| 国产亚洲欧美激情| 日韩二区三区四区| 在线观看欧美黄色| 中文字幕在线观看一区二区| 美女视频网站久久| 欧美午夜精品一区二区蜜桃 | 国产精品一区二区不卡| 欧美这里有精品| 天天色综合天天| 不卡一区二区中文字幕| 精品欧美一区二区久久| 日韩二区在线观看| 欧美精品日韩一区| 午夜日韩在线电影| 在线视频你懂得一区二区三区| 国产精品美女久久久久aⅴ| 韩国视频一区二区| 欧美变态凌虐bdsm| 久久成人羞羞网站| 精品美女被调教视频大全网站| 日韩国产欧美在线观看| 欧美午夜精品电影| 亚洲自拍偷拍图区| 在线观看亚洲a| 亚洲香肠在线观看| 欧美另类高清zo欧美| 午夜视频在线观看一区| 欧美精品自拍偷拍动漫精品| 午夜久久久久久久久| 欧美日韩精品一区二区在线播放 | 色综合久久久久网| 亚洲精品日韩专区silk| 99久久精品99国产精品| 国产精品萝li| eeuss国产一区二区三区| 欧美大片在线观看一区二区| 狠狠色丁香久久婷婷综| 久久免费精品国产久精品久久久久| 奇米综合一区二区三区精品视频| 欧美一级免费大片| 久久国产剧场电影| 日本一区二区三区四区在线视频| 成人性生交大片免费看视频在线 | 欧美日韩免费视频| 午夜精品123| 欧美一级片在线观看| 国产激情一区二区三区桃花岛亚洲| 日韩三级av在线播放| 国产麻豆日韩欧美久久| 国产精品天美传媒| 欧美日韩久久一区| 国产综合色精品一区二区三区| 国产视频一区二区在线| 91麻豆免费观看| 天天综合日日夜夜精品| 2021久久国产精品不只是精品| 国产精品香蕉一区二区三区| 亚洲乱码中文字幕综合| 日韩女优制服丝袜电影| av激情亚洲男人天堂| 亚洲国产美国国产综合一区二区| 日韩精品一区二区三区四区 | 国产精品亚洲第一| 亚洲自拍另类综合| 精品国产1区二区| 99国产精品视频免费观看| 日韩精品国产欧美| 国产精品二区一区二区aⅴ污介绍| 在线视频一区二区三| 久久精品国产99| 亚洲天堂a在线| 精品国精品自拍自在线| 在线观看日韩电影| 国产成人av电影在线播放| 亚洲成人午夜影院| 国产日韩欧美一区二区三区综合| 欧美日韩国产综合一区二区| 国产超碰在线一区| 蜜桃视频在线观看一区二区| 日韩美女视频一区二区 | 欧美一区午夜视频在线观看| av电影在线不卡| 精品一区二区三区免费毛片爱| 亚洲美女视频在线| 国产日韩欧美综合一区| 日韩一区二区三区电影| 91成人网在线| www.激情成人| 岛国精品在线播放| 国产一区二区在线影院| 日本在线播放一区二区三区| 亚洲一区二区三区中文字幕在线| 中文字幕精品在线不卡| 久久久综合视频| 日韩免费电影一区| 91麻豆精品国产91久久久使用方法 | 91精品国产手机| 欧美日韩在线播放一区| 91麻豆6部合集magnet| 成人精品视频.| 成人激情午夜影院| 国产成人av电影在线观看| 精品一区二区三区av| 麻豆精品在线视频| 日韩电影免费在线看| 日韩av高清在线观看| 亚洲成av人片在www色猫咪| 伊人夜夜躁av伊人久久| 一区二区视频在线看| 一区二区在线免费观看| 亚洲男人电影天堂| 亚洲综合在线免费观看| 亚洲一区在线视频观看| 亚洲国产成人porn| 日本在线不卡视频| 美女久久久精品| 国产主播一区二区三区| 国产盗摄精品一区二区三区在线| 国产成人精品亚洲午夜麻豆| 国产成人小视频| 成人av片在线观看| 91精彩视频在线观看| 欧美日本一区二区三区四区| 欧美一区二区在线视频| 26uuu亚洲综合色| 国产精品午夜在线观看| 一区二区三区四区在线免费观看| 五月婷婷色综合| 精品一区二区日韩| 成人一区二区三区在线观看| 91精品1区2区| 日韩欧美国产综合一区| 国产精品久久久久久久蜜臀| 亚洲欧美电影一区二区| 日本伊人午夜精品| 成人中文字幕电影| 欧美日韩高清一区二区不卡| 欧美r级在线观看| 日韩理论片在线| 日韩电影免费在线观看网站| 国产不卡视频在线播放| 欧美性猛交xxxx黑人交| 日韩视频一区二区在线观看| 国产精品免费久久| 日本美女一区二区| 成人精品国产福利| 欧美高清视频在线高清观看mv色露露十八 | 国产亚洲1区2区3区| 亚洲乱码一区二区三区在线观看| 美女网站色91| 色综合久久88色综合天天| 精品奇米国产一区二区三区| 亚洲三级免费电影| 麻豆中文一区二区| 色综合天天在线| 久久久久高清精品| 日日夜夜精品视频免费| 成人av在线资源网站| 日韩欧美亚洲国产精品字幕久久久| 国产精品免费久久久久| 精品一区二区三区在线观看国产| 色综合一个色综合亚洲| 国产亚洲欧美日韩日本| 日韩不卡一二三区| 色综合色综合色综合| 日本一区二区综合亚洲| 久久99久久久久久久久久久| 欧美自拍偷拍午夜视频| 中文字幕制服丝袜成人av| 经典一区二区三区| 91精品国产黑色紧身裤美女| 亚洲精品ww久久久久久p站| 国产69精品久久99不卡| 欧美变态凌虐bdsm| 日本一区中文字幕| 欧美日本一区二区三区| 亚洲精品一二三| 99国产精品一区| 国产精品久久久久久久久免费丝袜| 国内精品自线一区二区三区视频| 欧美日韩国产在线观看| 亚洲一区二区三区视频在线| 色综合久久综合网97色综合| 国产精品色一区二区三区| 国产激情视频一区二区在线观看| 精品少妇一区二区三区| 奇米精品一区二区三区四区| 欧美丰满高潮xxxx喷水动漫| 亚洲高清视频中文字幕| 欧美在线|欧美| 亚洲国产精品天堂| 欧洲另类一二三四区| 亚洲自拍欧美精品| 欧美日韩一级二级三级|