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