BOOL CSplitter::OnPaint(HDC hDC) { CPaintDC dc(GetSafeHwnd()); // device context for painting CBrush cbr; CRect rcClient; GetClientRect(&rcClient); cbr.CreateSolidBrush(clrBg); CGDI MemDC; CBitmap m_BitmapMemDC; MemDC.CreateCompatibleDC(dc.m_hDC); m_BitmapMemDC.CreateCompatibleBitmap(dc.m_hDC,rcClient.Width(),rcClient.Height()); CBitmap *m_bitmapOld=new CBitmap(MemDC.SelectObject(&m_BitmapMemDC)); MemDC.FillRect(&rcClient,&cbr); DrawSplitter(m_rcSpplitter,m_rectLeft,m_rectRight,&MemDC); dc.BitBlt(0,0,rcClient.Width(),rcClient.Height(),MemDC.m_hDC, rcClient.left,rcClient.top,SRCCOPY); MemDC.SelectObject(m_bitmapOld); m_BitmapMemDC.DeleteObject(); MemDC.DeleteDC(); cbr.DeleteObject(); dc.DeleteDC(); m_bitmapOld->DeleteObject(); delete m_bitmapOld; return TRUE; }
//******************************************************************** void CHeaderView::OnPaint(HDC hDC) { CPaintDC dc(GetSafeHwnd()); // device context for painting CGDI MemDC; CBitmap m_BitmapMemDC; CRect rcClient; CRect rcWin; CBrush m_brush; //****************************************** GetWindowRect( &rcWin); GetClientRect( &rcClient ); MemDC.CreateCompatibleDC(dc.m_hDC); m_BitmapMemDC.CreateCompatibleBitmap(dc.m_hDC, rcClient.Width(),rcClient.Height()); CBitmap m_bitmapOld=MemDC.SelectObject(&m_BitmapMemDC); m_brush.CreateSysColorBrush(COLOR_3DFACE); MemDC.FillRect((LPCRECT)rcClient,&m_brush); //evita el horrible color negro CGradient M(CSize(rcClient.Width(),rcClient.Height())); M.PrepareVertical(&MemDC); M.Draw(&MemDC,rcClient.left,rcClient.top,0,0,rcClient.Width(),rcClient.Height(),SRCCOPY); ScreenToClient(rcWin); BiselaBoton(rcWin,&MemDC); int iNumItems=GetItemCount(); int sizeOfBuffer = 256 ; LPSTR lpBuffer= new TCHAR[sizeOfBuffer]; for (int i =0; i < iNumItems; i++) { HDITEM hdi; memset(lpBuffer,0x00,sizeOfBuffer); memset(&hdi,0x00,sizeof(HDITEM/*struct _HD_ITEMW*/)); GetItemFull(i,&hdi,lpBuffer,sizeOfBuffer); DrawItem(hdi,&MemDC); } delete[] lpBuffer; MemDC.Draw3dRect((LPCRECT)rcClient,CDrawLayer::GetRGBSemiShadow(),CDrawLayer::GetRGBSemiShadow()); dc.BitBlt(0,0,rcClient.Width(),rcClient.Height(),MemDC.m_hDC, rcClient.left,rcClient.top,SRCCOPY); MemDC.SelectObject(&m_bitmapOld); m_BitmapMemDC.DeleteObject(); MemDC.DeleteDC(); }
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
BOOL CContainer::OnPaint(HDC hDC) { CRect rcClient; CPaintDC dc(GetSafeHwnd()); // device context for painting CBrush cbr; CRect m_rectDraw; cbr.CreateSolidBrush(CDrawLayer::GetRGBColorFace()); GetClientRect(rcClient); CGDI MemDC; CBitmap m_BitmapMemDC; MemDC.CreateCompatibleDC(dc.m_hDC); m_BitmapMemDC.CreateCompatibleBitmap(dc.m_hDC,rcClient.Width(),rcClient.Height()); CBitmap *m_bitmapOld=new CBitmap(MemDC.SelectObject(&m_BitmapMemDC)); MemDC.FillRect(&rcClient,&cbr); m_rectTab=m_rectCliente; m_rectDraw=m_rectCliente; if (m_alnTab==ALN_BOTTOM) { if (m_Numtabs > 1) m_rectDraw.bottom=rcClient.bottom-(m_sizeImag.cy+SPACE_TAB+2); } else m_rectDraw.top=rcClient.top+(m_sizeImag.cy+SPACE_TAB+2); if (m_style != S3D) //si son carpetas estilo excel o tabbed como devstudio 7 { if (m_alnTab==ALN_BOTTOM) { m_rectCliente.bottom=rcClient.bottom-(DEFAULT_FLAT); m_rectTab.top=rcClient.bottom+2; } else { m_rectTab.bottom=rcClient.top+(DEFAULT_FLAT)+3; } } int nVal=0; if (m_alnTab!=ALN_TOP) { MemDC.FillRect(m_rectTab,&cbr); CRect mrc=m_rectDraw; } else { CRect rc=m_rectDraw; for (int i=0; i< 2; i++) { MemDC.Draw3dRect(rc,CDrawLayer::GetRGBColorFace(),CDrawLayer::GetRGBColorFace()); rc.DeflateRect(1,1); } rc.InflateRect(3,3); if (m_bDrawFrame) MemDC.Draw3dRect(rc,GetSysColor(COLOR_BTNSHADOW),GetSysColor(COLOR_BTNSHADOW)); else { CRect mrc=m_rectDraw; mrc.top+=nVal; MemDC.Draw3dRect(mrc,GetSysColor(COLOR_BTNSHADOW),GetSysColor(COLOR_BTNSHADOW)); } rc=m_rectDraw; rc.bottom=rc.top+3; MemDC.FillRect(rc,&cbr); } Drawtabs(&MemDC); dc.BitBlt(0,0,rcClient.Width(),rcClient.Height(),MemDC.m_hDC, rcClient.left,rcClient.top,SRCCOPY); MemDC.SelectObject(m_bitmapOld); m_BitmapMemDC.DeleteObject(); MemDC.DeleteDC(); cbr.DeleteObject(); m_bitmapOld->DeleteObject(); dc.DeleteDC(); delete m_bitmapOld; return TRUE; }
BOOL COutLook::OnPaint(HDC hDC) { CPaintDC dc(GetSafeHwnd()); CRect rect,rcClient; GetClientRect(&rect); CRect rcMsg; int iy=0; int m_iNumBotton= m_ArrayButtons.GetSize(); int iMitad= rect.Width()/2; iMitad-=(m_sizeImage.cx/2); iMitad--; int nMode; rcClient=rect; CBrush cbr; cbr.CreateSolidBrush(CDrawLayer::GetRGBColorFace()); CGDI MemDC; CBitmap m_BitmapMemDC; MemDC.CreateCompatibleDC(dc.m_hDC); m_BitmapMemDC.CreateCompatibleBitmap(dc.m_hDC, rect.Width(),rect.Height()); CBitmap m_bitmapOld=MemDC.SelectObject(&m_BitmapMemDC); MemDC.FillRect(&rect,&cbr); nMode =MemDC.SetBkMode(TRANSPARENT); CFont cfont(MemDC.SelectObject((HFONT)GetStockObject(DEFAULT_GUI_FONT))); for( int iCont=0; iCont< m_iNumBotton;iCont++) { CItems* cit=(CItems*)m_ArrayButtons[iCont]; CRect rcWin; cit->m_bt.GetWindowRect(rcWin); ScreenToClient(rcWin); rcMsg=rcWin; rcMsg.top=rcWin.bottom+2; rcMsg.bottom=rcMsg.top+16; rcMsg.left=rect.left; rcMsg.right=rect.right; if (m_TypeOutLook) MemDC.DrawText(cit->m_szMessage,rcMsg,DT_SINGLELINE|DT_CENTER|DT_VCENTER); } MemDC.SetBkMode(nMode); MemDC.SelectObject(cfont.GetFont()); if (m_iDrawFrameUp==TRUE) { m_rectArrowUp.top=5; m_rectArrowUp.bottom=m_rectArrowUp.top+16; m_rectArrowUp.right=rect.right-5; m_rectArrowUp.left=m_rectArrowUp.right-16; MemDC.DrawFrameControl(m_rectArrowUp,DFC_SCROLL,DFCS_SCROLLUP); } if (m_iDrawFrameDown==TRUE) { m_rectArrowDown.bottom=rect.bottom-5; m_rectArrowDown.top=m_rectArrowDown.bottom-16; m_rectArrowDown.right=rect.right-5; m_rectArrowDown.left=m_rectArrowDown.right-16; MemDC.DrawFrameControl(m_rectArrowDown,DFC_SCROLL,DFCS_SCROLLDOWN); } dc.BitBlt(0,0,rcClient.Width(),rcClient.Height(),MemDC.m_hDC, rcClient.left,rcClient.top,SRCCOPY); MemDC.SelectObject(&m_bitmapOld); m_BitmapMemDC.DeleteObject(); MemDC.DeleteDC(); return TRUE; }