Пример #1
0
bool CMenuSpawn::DrawItem(LPDRAWITEMSTRUCT lp)
{
	bool res = false;
	//pDC1.Draw3dRect(rcClient,CDrawLayer::GetRGBColorFace(),CDrawLayer::GetRGBColorShadow());
	if (lp->CtlType == ODT_MENU)
	{
		UINT id = lp->itemID;
		UINT state = lp->itemState;
		bool bEnab = !(state & ODS_DISABLED);
		bool bSelect = (state & ODS_SELECTED) ? true : false;
		bool bChecked = (state & ODS_CHECKED) ? true : false;
		bool bHotLight =(state & ODS_HOTLIGHT) ? true : false;
		CGDI  pDC(lp->hDC);
		SpawnItem * pItem = (SpawnItem *) lp->itemData;
		if (pItem)
		{
			CFont  pft=((HFONT) hMenuFont ? hMenuFont : hGuiFont);
			CFont  of=(pDC.SelectObject(pft));
			CRect rc=lp->rcItem;
			CRect rcImage(rc), rcText(rc);
			rcImage.right = rcImage.left + rc.Height();
			rcImage.bottom = rc.bottom;

			CBrush brush;
			brush.CreateSolidBrush(CDrawLayer::GetRGBColorFace());
			
			CRect rcImg=rcImage;
			rcImg.right+=1;
			pDC.FillRect(rcImg,&brush);
			if (pItem->iCmd != -4)
			{
				CGradient M(CSize(rcImg.Width(),rcImg.Height()));	
				M.PrepareHorizontal(&pDC,CDrawLayer::GetRGBColorWhite(),CDrawLayer::GetRGBColorFace());
				M.Draw(&pDC,rcImg.left,rcImg.top,0,0,rcImg.Width()+2,rcImg.Height(),SRCCOPY);	
			}
			if (bBackBitmap) 
			{
				CGDI tempDC;
				tempDC.CreateCompatibleDC(pDC);
				tempDC.FillSolidRect(rcText, crMenu);
				CBitmap  ob = tempDC.SelectObject(&bmpBack);
				pDC.FillSolidRect(rcText, crMenu);
				pDC.BitBlt(rc.left, rc.top, rc.Width(), rc.Height(), tempDC, rc.left, rc.top, SRCCOPY );
			}
			int obk = pDC.SetBkMode(TRANSPARENT);
			if (pItem->iCmd == -3) // is a separator
			{
				CBrush brush;
				CRect m_rc=rc;
				brush.CreateSolidBrush(CDrawLayer::GetRGBSkinMenu());
				rc.left+=rcImage.Width()+15;
				pDC.FillRect(rc,&brush);
				rc.top += rc.Height()>>1;	
				rc.left+= 5;
				brush.DeleteObject();
				pDC.DrawEdge(rc, EDGE_ETCHED, BF_TOP);	
				rcImg.right= rc.left-4;
				CGradient M(CSize(rcImg.Width(),rcImg.Height()));	
				M.PrepareHorizontal(&pDC);
				M.Draw(&pDC,rcImg.left,rcImg.top,0,0,rcImg.Width()-1,rcImg.Height(),SRCCOPY);	
				fltMenu.iCmd=-1;
		
			}
			else if (pItem->iCmd == -4) // is a title item