void CExtLabel::OnPaint() { ASSERT_VALID( this ); DWORD dwWndStyle = GetStyle(); DWORD dwWndType = (dwWndStyle&SS_TYPEMASK); if( dwWndType == SS_BLACKRECT || dwWndType == SS_GRAYRECT || dwWndType == SS_WHITERECT || dwWndType == SS_BLACKFRAME || dwWndType == SS_GRAYFRAME || dwWndType == SS_WHITEFRAME || dwWndType == SS_USERITEM || dwWndType == SS_OWNERDRAW || dwWndType == SS_BITMAP || dwWndType == SS_ENHMETAFILE || dwWndType == SS_ETCHEDHORZ || dwWndType == SS_ETCHEDVERT || dwWndType == SS_ETCHEDFRAME ) { Default(); return; } CPaintDC dcPaint( this ); CRect rcClient; GetClientRect( &rcClient ); if( rcClient.IsRectEmpty() ) return; DoPaint( &dcPaint, rcClient ); }
void CToolbarControlBar::OnPaint(void) { CRect rcClient, updateRect, toolbarRect, intersectRect; GetClientRect(&rcClient); GetUpdateRect(&updateRect); m_pToolbar->GetClientRect(&toolbarRect); CPaintDC dcPaint(this); // Use our background color ::FillRect(dcPaint.m_hDC, &rcClient, sysInfo.m_hbrBtnFace); #ifdef _WIN32 DrawBorders(&dcPaint, rcClient); #endif m_pToolbar->MapWindowPoints(this, &toolbarRect); if(intersectRect.IntersectRect(updateRect, toolbarRect)) { MapWindowPoints(m_pToolbar, &intersectRect); m_pToolbar->RedrawWindow(&intersectRect); } }
void CToolBarCombo::updateBoxLen(const wchar_t* txt){ const wchar_t* str=NULL; if (txt==NULL){ wchar_t edittxet[1024]={}; GetWindowText(edittxet,1024); int nLength = GetWindowTextLength(); if (nLength==0){ return; }else{ str=edittxet; } }else{ str=txt; } CPaintDC dcPaint(m_hWnd); dcPaint.SelectFont(EDITTXTFONT); SIZE fontsize; dcPaint.GetTextExtent(str,(int)wcslen(str),&fontsize); RECT comboxRect; GetClientRect(&comboxRect); int slen=comboxRect.right - comboxRect.left; static const int TEMPLEN=45; if (fontsize.cx>slen-TEMPLEN){ int diff=fontsize.cx-slen+TEMPLEN; ::SendMessage(GetParent().m_hWnd,WM_SEP_TOOLBAR_MOUSEMOVE,1,diff+100); }else{ if (fontsize.cx+200<slen-TEMPLEN){ int diff=slen-TEMPLEN-(fontsize.cx+200); ::SendMessage(GetParent().m_hWnd,WM_SEP_TOOLBAR_MOUSEMOVE,1,-diff-100); } } }
void CNSToolbar2::OnPaint(void) { CRect rcClient, updateRect, buttonRect, intersectRect; GetClientRect(&rcClient); GetUpdateRect(&updateRect); CPaintDC dcPaint(this); // Use our background color ::FillRect(dcPaint.m_hDC, &rcClient, sysInfo.m_hbrBtnFace); for (int i = 0; i < m_nNumButtons; i++) { m_pButtonArray[i]->GetClientRect(&buttonRect); m_pButtonArray[i]->MapWindowPoints(this, &buttonRect); if(intersectRect.IntersectRect(updateRect, buttonRect)) { MapWindowPoints(m_pButtonArray[i], &intersectRect); m_pButtonArray[i]->RedrawWindow(&intersectRect); } } }
void CLineNumberStatic::OnPaint() /* ============================================================ Function : CLineNumberStatic::OnPaint Description : Handler for WM_PAINT. Return : void Parameters : none Usage : Called from Windows. ============================================================*/ { CPaintDC dcPaint( this ); CRect rect; GetClientRect( &rect ); // We double buffer the drawing - // preparing the memory CDC CDC dc; dc.CreateCompatibleDC( &dcPaint ); int saved = dc.SaveDC(); // Create GDI and select objects CBitmap bmp; CPen pen; bmp.CreateCompatibleBitmap( &dcPaint, rect.Width(), rect.Height() ); pen.CreatePen( PS_SOLID, 1, m_fgcol ); dc.SelectObject( &bmp ); dc.SelectObject( &pen ); // Painting the background dc.FillSolidRect( &rect, m_bgcol ); dc.MoveTo( rect.right - 1, 0 ); dc.LineTo( rect.right - 1, rect.bottom ); // Setting other attributes dc.SetTextColor( m_fgcol ); dc.SetBkColor( m_bgcol ); dc.SelectObject( GetParent()->GetFont() ); // Output the line numbers if( m_bottomline ) { int lineheight = dc.GetTextExtent( _T( "0" ) ).cy; for( int t = m_topline ; t < m_bottomline ; t++ ) { CString output; output.Format( m_format, t+1); int topposition = m_topmargin + lineheight * ( t - m_topline ); dc.TextOut( 2, topposition, output ); } } dcPaint.BitBlt( 0, 0, rect. right, rect.bottom, &dc, 0, 0, SRCCOPY ); dc.RestoreDC( saved ); }
void CExtEdit::OnPaint() { CRect rectClient; GetClientRect( &rectClient ); CPaintDC dcPaint( this ); CExtMemoryDC dcmm( &dcPaint, &rectClient ); DefWindowProc( WM_PAINT, (WPARAM)dcmm.GetSafeHdc(), (LPARAM)0 ); }
void CXTPDockingPaneSidePanel::OnPaint() { CPaintDC dcPaint(this); CXTPClientRect rc(this); CXTPBufferDC dc(dcPaint); GetPaintManager()->DrawSidePanel(&dc, this, rc); }
void CXTPDockingPaneTabbedContainer::OnPaint() { CPaintDC dcPaint(this); CXTPClientRect rc(this); CXTPBufferDC dc(dcPaint); CXTPDockingPaneBase::GetPaintManager()->DrawPane(&dc, this, rc); }
void CExtProgressWnd::OnPaint() { ASSERT_VALID( this ); CRect rcClient; GetClientRect( &rcClient ); CPaintDC dcPaint(this); CExtMemoryDC dc( &dcPaint ); OnPaintProgress( dc, rcClient ); }
void CXTPCoreTreeControl::OnPaint() { CPaintDC dcPaint(this); // device context for painting CRect rcPaint(dcPaint.m_ps.rcPaint); CXTPBufferDC dc(dcPaint); OnDraw(&dc, rcPaint); }
void CChildView::OnPaint() { CPaintDC dcPaint( this ); CExtMemoryDC dc( &dcPaint ); CRect rcClient; GetClientRect( &rcClient ); dc.FillSolidRect( &rcClient, g_PaintManager->GetColor( COLOR_WINDOW ) ); }
void CFeedIcoItemListCtrl::OnPaint() { CRect rectClip; { CPaintDC dcPaint(this); // device context for painting //dcPaint.GetClipBox(rectClip); } CRect rectClient; GetClientRect(&rectClient); //获取客户区大小 CClientDC dc(this); //背景图 获取客户区DC dc.GetClipBox(rectClip); CDC dcMem; //定义一个显示设备对象 dcMem.CreateCompatibleDC(NULL);//随后建立与屏幕显示兼容的内存显示设备 CBitmap MemBitmap;//定义一个位图对象(画布) MemBitmap.CreateCompatibleBitmap(&dc,rectClient.Width(),rectClient.Height()); //将位图选入到内存显示设备中 CBitmap *pOldBit = dcMem.SelectObject(&MemBitmap);//相当于将此位图设置为画布 dcMem.SetBkMode(TRANSPARENT); CBrush *pBKBrush = new CBrush( RGB(0xf3,0xf3,0xf3/*246, 252, 251*/) ); dcMem.FillRect( rectClient, pBKBrush );//填充客户区背景色 delete pBKBrush; //CMemDC dcMem(&dc, rectClient); //dcMem.BitBlt(0, 0, rectClient.Width(), rectClient.Height(), &dc, 0, 0, SRCCOPY); //CFont * pListFont = GetFont(); //CFont * pOrgMemFont = NULL; //if ( pListFont != NULL ) //{ // pOrgMemFont = dcMem.SelectObject(pListFont); //} //dcMem.SetBkMode(TRANSPARENT); if ( GetItemCount() > 0 ) { DrawGroupInfo(dcMem, rectClip, rectClient); DrawItems(dcMem, rectClip, rectClient); } //if ( pOrgMemFont != NULL ) //{ // dcMem.SelectObject(pOrgMemFont); //} //dcMem->Flush(); dc.BitBlt( rectClient.left, rectClient.top, rectClient.Width(),rectClient.Height(), &dcMem, 0,0, SRCCOPY );//最终贴图 }
void COXComboPickerCtrl::OnPaint() { // Detect OS. If the OS is XP or higher we use the OS painting routines, // else we do custom painting. OSVERSIONINFO ovi = {0}; ovi.dwOSVersionInfoSize = sizeof OSVERSIONINFO; GetVersionEx(&ovi); bool bXPOrHigher = (ovi.dwMajorVersion >= 5) && (ovi.dwMinorVersion >= 1); if( (m_pDropDown==NULL) || bXPOrHigher ) { Default(); return; } CPaintDC dcPaint(this); BOOL bIsEnabled=IsWindowEnabled(); CRect rectClient; GetClientRect(rectClient); // draw dropdown button CRect rectDropdownButton=GetDropdownButtonRect(); dcPaint.DrawFrameControl(rectDropdownButton,DFC_SCROLL, DFCS_SCROLLDOWN | (GetDroppedState() ? DFCS_PUSHED|DFCS_FLAT : 0) | (bIsEnabled ? 0 : DFCS_INACTIVE)); // draw border dcPaint.Draw3dRect(rectClient,::GetSysColor(COLOR_3DSHADOW), ::GetSysColor(COLOR_3DHILIGHT)); rectClient.DeflateRect(1,1); dcPaint.Draw3dRect(rectClient,::GetSysColor(COLOR_3DDKSHADOW), ::GetSysColor(COLOR_3DFACE)); rectClient.DeflateRect(1,1); // adjust for dropdown button rectClient.right=rectDropdownButton.left; rectClient.DeflateRect(1,1); // do default painting DRAWITEMSTRUCT dis={ sizeof(&dis) }; dis.CtlType=ODT_COMBOBOX; dis.CtlID=GetDlgCtrlID(); dis.itemID=0; dis.itemAction=ODA_DRAWENTIRE; dis.hwndItem=GetSafeHwnd(); dis.hDC=dcPaint.GetSafeHdc(); dis.rcItem=rectClient; dis.itemData=0; dis.itemState=((::GetFocus()==GetSafeHwnd() && !GetDroppedState()) ? ODS_FOCUS : 0); DrawItem(&dis); }
void CDuiTipCtrl::OnPaint( CDCHandle dc ) { CPaintDC dcPaint(m_hWnd); CRect rc; GetClientRect(&rc); CBrush br; br.CreateSolidBrush(GetSysColor(COLOR_INFOBK)); HBRUSH hOld=dcPaint.SelectBrush(br); dcPaint.Rectangle(&rc); dcPaint.SelectBrush(hOld); rc.DeflateRect(MARGIN_TIP,MARGIN_TIP); dcPaint.SetBkMode(TRANSPARENT); HFONT hOldFont=(HFONT)dcPaint.SelectFont(m_font); ::DrawText(dcPaint,m_strTip,-1,&rc,DT_WORDBREAK); dcPaint.SelectFont(hOldFont); }
void CXTPPropertyPageStaticCaption::OnPaint() { CPaintDC dcPaint(this); CXTPBufferDC dc(dcPaint); CXTPClientRect rc(this); dc.FillSolidRect(rc, RGB(221, 231, 238)); dc.FillSolidRect(rc.left, rc.bottom - 1, rc.Width(), 1, RGB(197, 197, 197)); rc.DeflateRect(7, 0); CString strText; GetWindowText(strText); dc.SetBkMode(TRANSPARENT); dc.SetTextColor(RGB(0, 21, 110)); CXTPFontDC font(&dc, &XTPAuxData().fontBold); dc.DrawText(strText, rc, DT_VCENTER | DT_SINGLELINE); }
void CExtMiniDockFrameWnd::OnPaint() { CPaintDC dcPaint( this ); CRect rcClient; GetClientRect( &rcClient ); if( rcClient.IsRectEmpty() || !dcPaint.RectVisible( &rcClient ) ) return; CExtPaintManager::stat_ExcludeChildAreas( dcPaint.GetSafeHdc(), GetSafeHwnd() ); COLORREF clrBack = g_PaintManager->GetColor( CExtPaintManager::CLR_3DFACE_OUT ); dcPaint.FillSolidRect( &rcClient, clrBack ); }
void CExtMiniDockFrameWnd::OnPaint() { CPaintDC dcPaint( this ); return; //CRect rcClient; // GetClientRect( &rcClient ); // if( rcClient.IsRectEmpty() // || !dcPaint.RectVisible( &rcClient ) // ) // return; // CExtPaintManager::stat_ExcludeChildAreas( // dcPaint.GetSafeHdc(), // GetSafeHwnd() // ); //COLORREF clrBack = // g_PaintManager->GetColor( // CExtPaintManager::CLR_3DFACE_OUT // ); // dcPaint.FillSolidRect( &rcClient, clrBack ); }
void CXTPPopupControl::OnPaint() { //Get context CDC object CPaintDC dcPaint(this); //init client rect CRect rc(0, 0, m_szPopup.cx, m_szPopup.cy); //init temp buffer CDC object CXTPBufferDC dc(dcPaint, rc); //draw background m_pPaintManager->DrawBackground(&dc, this, rc); //draw all valid items for (int i = 0; i < GetItemCount(); i++) { CXTPPopupItem* pItem = GetItem(i); pItem->Draw(&dc); } }
void CBCGPToolTipCtrl::OnPaint() { if (m_Params.m_bBallonTooltip) { CToolTipCtrl::OnPaint (); return; } CPaintDC dcPaint(this); // device context for painting CBCGPMemDC memDC (dcPaint, this); CDC* pDC = &memDC.GetDC (); CRect rect; GetClientRect (rect); CRect rectMargin; GetMargin (rectMargin); CRect rectText = rect; rectText.DeflateRect (rectMargin); rectText.DeflateRect (m_ptMargin.x, m_ptMargin.y); COLORREF clrLine = m_Params.m_clrBorder == (COLORREF)-1 ? ::GetSysColor (COLOR_INFOTEXT) : m_Params.m_clrBorder; COLORREF clrText = m_Params.m_clrText == (COLORREF)-1 ? ::GetSysColor (COLOR_INFOTEXT) : m_Params.m_clrText; //----------------- // Fill background: //----------------- OnFillBackground (pDC, rect, clrText, clrLine); CPen penLine (PS_SOLID, 1, clrLine); CPen* pOldPen = pDC->SelectObject (&penLine); //------------- // Draw border: //------------- OnDrawBorder (pDC, rect, clrLine); //----------- // Draw icon: //----------- if (m_sizeImage != CSize (0, 0) && m_Params.m_bDrawIcon) { CRect rectImage = rectText; rectImage.right = rectImage.left + m_sizeImage.cx; rectImage.bottom = rectImage.top + m_sizeImage.cy; OnDrawIcon (pDC, rectImage); rectText.left += m_sizeImage.cx + m_ptMargin.x; } pDC->SetBkMode (TRANSPARENT); pDC->SetTextColor (clrText); //------------ // Draw label: //------------ int nTextHeight = OnDrawLabel (pDC, rectText, FALSE).cy; //------------------------------ // Draw separator + description: //------------------------------ if (!m_strDescription.IsEmpty () && m_Params.m_bDrawDescription) { CRect rectDescr = rectText; rectDescr.top += nTextHeight + 3 * m_ptMargin.y / 2; if (m_Params.m_bDrawSeparator) { OnDrawSeparator (pDC, rectDescr.left, rectDescr.right, rectDescr.top - m_ptMargin.y / 2); } OnDrawDescription (pDC, rectDescr, FALSE); } pDC->SelectObject (pOldPen); }
void CTestClockDlg::OnPaint() { if (IsIconic()) { CPaintDC dc(this); // 그리기를 위한 디바이스 컨텍스트 SendMessage(WM_ICONERASEBKGND, reinterpret_cast<WPARAM>(dc.GetSafeHdc()), 0); // 클라이언트 사각형에서 아이콘을 가운데에 맞춥니다. int cxIcon = GetSystemMetrics(SM_CXICON); int cyIcon = GetSystemMetrics(SM_CYICON); CRect rect; GetClientRect(&rect); int x = (rect.Width() - cxIcon + 1) / 2; int y = (rect.Height() - cyIcon + 1) / 2; // 아이콘을 그립니다. dc.DrawIcon(x, y, m_hIcon); } else { CPaintDC dcPaint(this); // device context for painting CDC dc; if (dc.CreateCompatibleDC(&dcPaint)) { CRect rect; GetClientRect(rect); CBitmap bitmap; if (bitmap.CreateCompatibleBitmap(&dcPaint, rect.Width(), rect.Height())) { CBitmap* pOldBitmap = dc.SelectObject(&bitmap); CBrush bgBrush; bgBrush.CreateSolidBrush(GetSysColor(COLOR_3DFACE)); dc.FillRect(rect, &bgBrush); // Draw the minute gradation CPen* pOldPen = static_cast<CPen*>(dc.SelectStockObject(BLACK_PEN)); CBrush* pOldBrush = static_cast<CBrush*>(dc.SelectStockObject(DKGRAY_BRUSH)); int i; for (i = 0; i < MINUTE_COUNT; i++) dc.Ellipse(m_arrMinuteGrad[i].x - m_nMinuteGradSize, m_arrMinuteGrad[i].y - m_nMinuteGradSize, m_arrMinuteGrad[i].x + m_nMinuteGradSize, m_arrMinuteGrad[i].y + m_nMinuteGradSize); dc.SelectObject(pOldBrush); // Draw the hour gradation CPen bluePen; bluePen.CreatePen(PS_SOLID, 1, RGB(0, 0, 255)); pOldPen = dc.SelectObject(&bluePen); CBrush lightBlueBrush; lightBlueBrush.CreateSolidBrush(RGB(0, 128, 192)); pOldBrush = dc.SelectObject(&lightBlueBrush); for (i = 0; i < HOUR_COUNT; i++) dc.Ellipse(m_arrHourGrad[i].x - m_nHourGradSize, m_arrHourGrad[i].y - m_nHourGradSize, m_arrHourGrad[i].x + m_nHourGradSize, m_arrHourGrad[i].y + m_nHourGradSize); dc.SelectObject(pOldBrush); dc.SelectObject(pOldPen); // Draw the hour hand pOldPen = static_cast<CPen*>(dc.SelectStockObject(BLACK_PEN)); pOldBrush = static_cast<CBrush*>(dc.SelectStockObject(LTGRAY_BRUSH)); dc.Polygon(m_pointHour, HOUR_HAND_POLYGON_COUNT); dc.SelectObject(pOldBrush); // Draw the minute hand pOldBrush = static_cast<CBrush*>(dc.SelectStockObject(GRAY_BRUSH)); dc.Polygon(m_pointMinute, MINUTE_HAND_POLYGON_COUNT); dc.SelectObject(pOldBrush); dc.SelectObject(pOldPen); // Draw the second hand CPen penSecondHand; penSecondHand.CreatePen(PS_SOLID, m_nSecondHandSize, RGB(0, 0, 0)); pOldPen = dc.SelectObject(&penSecondHand); dc.MoveTo(m_pointSecondFrom); dc.LineTo(m_pointSecondTo); // Draw the center point pOldBrush = static_cast<CBrush*>(dc.SelectStockObject(WHITE_BRUSH)); dc.Ellipse(m_pointCenter.x - m_nCenterPointSize, m_pointCenter.y - m_nCenterPointSize, m_pointCenter.x + m_nCenterPointSize, m_pointCenter.y + m_nCenterPointSize); dc.SelectObject(pOldBrush); dc.SelectObject(pOldPen); dcPaint.BitBlt(rect.left, rect.top, rect.Width(), rect.Height(), &dc, 0, 0, SRCCOPY); dc.SelectObject(pOldBitmap); } } } }
void CTBHeaderCtrl::OnPaint() { CPaintDC dcPaint(this); // device context for painting DrawHeader(&dcPaint); }
void CXTPShortcutBarPane::OnPaint() { CPaintDC dcPaint(this); // device context for painting CXTPBufferDC dc(dcPaint); OnDraw(&dc); }
void CExtButton::OnPaint() { CPaintDC dcPaint( this ); _DrawImpl( dcPaint ); }
LRESULT CExtWSGripper::WindowProc( UINT message, WPARAM wParam, LPARAM lParam ) { if( message == WM_NCHITTEST ) { CWnd * pWnd = GetParent(); ASSERT( pWnd != NULL ); ASSERT_VALID( pWnd ); if( pWnd->IsZoomed() ) return HTNOWHERE; __EXT_MFC_LONG_PTR dwExStyle = ::__EXT_MFC_GetWindowLong( pWnd->GetSafeHwnd(), GWL_EXSTYLE ); bool bRTL = ( (dwExStyle & WS_EX_LAYOUTRTL) != 0 ) ? true : false; return bRTL ? HTBOTTOMLEFT : HTBOTTOMRIGHT; } if( message == WM_CREATE ) { LRESULT lResult = CWnd::WindowProc( message, wParam, lParam ); CRect rcClient; GetClientRect( &rcClient ); POINT ptCorners[] = { { rcClient.left, rcClient.bottom }, { rcClient.right, rcClient.bottom }, { rcClient.right, rcClient.top }, }; HRGN hRgn = ::CreatePolygonRgn( ptCorners, sizeof(ptCorners)/sizeof(ptCorners[0]), ALTERNATE ); SetWindowRgn( hRgn, TRUE ); return lResult; } if( message == WM_MOUSEACTIVATE ) return MA_NOACTIVATEANDEAT; if( message == WM_ERASEBKGND ) return 0L; if( message == WM_PRINTCLIENT ) { CDC * pDC = CDC::FromHandle( (HDC)wParam ); DoPaint( pDC ); return (!0); } if( message == WM_PAINT ) { ASSERT_VALID( this ); CPaintDC dcPaint( this ); CRect rcClient; GetClientRect( &rcClient ); CExtMemoryDC dc( &dcPaint, &rcClient ); DoPaint( &dc ); return 0L; } return CWnd::WindowProc( message, wParam, lParam ); }
void CChildView::OnPaint() { CPaintDC dcPaint( this ); CExtPaintManager::stat_ExcludeChildAreas( dcPaint.GetSafeHdc(), GetSafeHwnd() ); CExtMemoryDC dc( &dcPaint ); CGdiObject * pOld0, * pOld1; CExtWndShadow _shadow; WORD _PatternBits0[8],_PatternBits1[8]; for( INT iPatternLine=0; iPatternLine < 8; iPatternLine++ ) { _PatternBits0[iPatternLine] = ( iPatternLine & 1 ) ? WORD(0xFFFF) : WORD( ~ ( 5<<iPatternLine ) ) ; _PatternBits1[iPatternLine] = ( iPatternLine & 1 ) ? WORD(0xFFFF) : WORD( ~ ( 1<<(8-iPatternLine) ) ) ; } CBitmap bmpPattern0,bmpPattern1; CBrush brPattern0,brPattern1; VERIFY( bmpPattern0.CreateBitmap(8,8,1,1,_PatternBits0) ); VERIFY( bmpPattern1.CreateBitmap(8,8,1,1,_PatternBits1) ); VERIFY( brPattern0.CreatePatternBrush(&bmpPattern0) ); VERIFY( brPattern1.CreatePatternBrush(&bmpPattern1) ); CRect rcPattern0(10,10,180,150), rcPattern1(40,30,80,200); dc.FillRect(rcPattern0,&brPattern0); _shadow.Paint( dc, rcPattern0, CRect(0,0,0,0), CRect(0,0,0,0), CExtWndShadow::DEF_SHADOW_SIZE, CExtWndShadow::DEF_BRIGHTNESS_MIN, CExtWndShadow::DEF_BRIGHTNESS_MAX, false ); pOld0 = dc.SelectStockObject( NULL_BRUSH ); pOld1 = dc.SelectStockObject( BLACK_PEN ); dc.Rectangle( rcPattern0 ); if( pOld0 != NULL ) dc.SelectObject( pOld0 ); if( pOld1 != NULL ) dc.SelectObject( pOld1 ); dc.FillRect(rcPattern1,&brPattern1); _shadow.Paint( dc, rcPattern1, CRect(0,0,0,0), CRect(0,0,0,0), CExtWndShadow::DEF_SHADOW_SIZE, CExtWndShadow::DEF_BRIGHTNESS_MIN, CExtWndShadow::DEF_BRIGHTNESS_MAX, false ); pOld0 = dc.SelectStockObject( NULL_BRUSH ); pOld1 = dc.SelectStockObject( BLACK_PEN ); dc.Rectangle( rcPattern1 ); if( pOld0 != NULL ) dc.SelectObject( pOld0 ); if( pOld1 != NULL ) dc.SelectObject( pOld1 ); CRect rc0(20,50,160,80); CRect rc1(160,50,210,80); CRect rc2(rc0.left,rc0.top,rc1.right,rc1.bottom); COLORREF clrLeft = RGB(0,255,0); COLORREF clrMiddle = RGB(255,255,0); COLORREF clrRight = RGB(255,0,0); CExtPaintManager::stat_PaintGradientRect( dc, rc0, clrLeft, clrMiddle ); CExtPaintManager::stat_PaintGradientRect( dc, rc1, clrMiddle,clrRight ); _shadow.Paint( dc, rc2, CRect(0,0,0,0), CRect(0,0,0,0), CExtWndShadow::DEF_SHADOW_SIZE, CExtWndShadow::DEF_BRIGHTNESS_MIN, CExtWndShadow::DEF_BRIGHTNESS_MAX, false ); pOld0 = dc.SelectStockObject( NULL_BRUSH ); pOld1 = dc.SelectStockObject( BLACK_PEN ); dc.Rectangle(rc2); if( pOld0 != NULL ) dc.SelectObject( pOld0 ); if( pOld1 != NULL ) dc.SelectObject( pOld1 ); CRect rc3(120,40,150,80); CRect rc4(120,80,150,160); CRect rc5(rc3.left,rc3.top,rc4.right,rc4.bottom); COLORREF clrUpper = RGB(255,0,255); COLORREF clrMiddleV = RGB(255,255,255); COLORREF clrLower = RGB(0,0,255); CExtPaintManager::stat_PaintGradientRect( dc, rc3, clrMiddleV, clrUpper, TRUE ); CExtPaintManager::stat_PaintGradientRect( dc, rc4, clrLower, clrMiddleV, TRUE ); _shadow.Paint( dc, rc5, CRect(0,0,0,0), CRect(0,0,0,0), CExtWndShadow::DEF_SHADOW_SIZE, CExtWndShadow::DEF_BRIGHTNESS_MIN, CExtWndShadow::DEF_BRIGHTNESS_MAX, false ); pOld0 = dc.SelectStockObject( NULL_BRUSH ); pOld1 = dc.SelectStockObject( BLACK_PEN ); dc.Rectangle(rc5); if( pOld0 != NULL ) dc.SelectObject( pOld0 ); if( pOld1 != NULL ) dc.SelectObject( pOld1 ); }
void CXTPDatePickerList::OnPaint() { CPaintDC dcPaint(this); // device context for painting if (!m_pControl) return; CXTPClientRect rcClient(this); CXTPBufferDC dcMem(dcPaint, rcClient); m_dtSelMonth.SetStatus(COleDateTime::null); int nMonth = m_dtMiddleMonth.GetMonth(); int nYear = m_dtMiddleMonth.GetYear(); //if (nYear <= 1601 && nMonth <= 4) //{ // //no shifting //} //else if (nYear <= 1601 && nMonth <= 5) // ShiftMonthDown(nYear, nMonth, m_nItemsAbove - 2); //else if (nYear <= 1601 && nMonth <= 6) // ShiftMonthDown(nYear, nMonth, m_nItemsAbove - 1); //else // ShiftMonthDown(nYear, nMonth, m_nItemsAbove); if (nYear <= 100 && nMonth <= 2) { //no shifting } else if (nYear <= 100 && nMonth <= 3) ShiftMonthDown(nYear, nMonth, m_nItemsAbove - 2); else if (nYear <= 100 && nMonth <= 4) ShiftMonthDown(nYear, nMonth, m_nItemsAbove - 1); else ShiftMonthDown(nYear, nMonth, m_nItemsAbove); CXTPDatePickerPaintManager* pPaintManager = m_pControl->GetPaintManager(); // prepare DC CFont* pOldFont = dcMem.SelectObject(pPaintManager->GetListControlTextFont()); int iPosY = 0; // fill background dcMem.FillSolidRect(rcClient, pPaintManager->GetListControlBackColor()); dcMem.SetTextColor(pPaintManager->GetListControlTextColor()); dcMem.SetBkMode(TRANSPARENT); CString strDisplayText; for (int nItem = 0; nItem < m_nItemsAbove + 1 + m_nItemsBelow; nItem++) { CRect rcItem; if (!m_pControl->m_strYearMonthFormat.IsEmpty()) { strDisplayText = CXTPCalendarUtils::GetDateFormat(COleDateTime(nYear, nMonth, 1, 0, 0, 0), m_pControl->m_strYearMonthFormat); } else { strDisplayText.Format(_T("%s %d"), (LPCTSTR)m_pControl->GetMonthName(nMonth), nYear); } CSize szItem = dcMem.GetTextExtent(_T(" "), 1); szItem.cy += 3; rcItem.SetRect(0, iPosY, m_rcListControl.Width(), iPosY + szItem.cy); dcMem.DrawText(strDisplayText, rcItem, DT_SINGLELINE | DT_CENTER | DT_VCENTER); if (IsSelected(nItem, rcItem)) { dcMem.InvertRect(rcItem); m_dtSelMonth.SetDate(nYear, nMonth, 1); m_dtSelMonth.SetStatus(COleDateTime::valid); } // next month ShiftMonthUp(nYear, nMonth, 1); iPosY += szItem.cy; } dcMem.SelectObject(pOldFont); }
void CXTPTabCtrlButtons::OnPaint() { CPaintDC dcPaint(this); CXTPClientRect rc(m_pTabCtrl); CXTPClientRect rcClient(this); CXTPBufferDC dc(dcPaint, rc); int nCount = m_pTabCtrl->GetItemCount(); if (!m_bShow || nCount == 0) { CWnd::DefWindowProc(WM_PAINT, (WPARAM)dc.m_hDC, 0); return; } COLORREF clrText =m_pTabCtrlBase->GetTheme()->FillButtons(&dc, this); CRect rcItem; m_pTabCtrl->GetItemRect(-1, &rcItem); int nTop = (rcItem.Height() - 13) / 2; int nRight = rcClient.right - 5; if (m_dwFlags & xtpNavBtnClose) { m_btnClose.SetRect(CRect(nRight - 14, nTop, nRight, nTop + 15)); m_btnClose.Draw(&dc, clrText); nRight -= 14; } else m_btnClose.SetRect(CXTPEmptyRect()); if (m_dwFlags & xtpNavBtnArrows) { ASSERT(m_pTabCtrl); if (!m_pTabCtrl) return; BOOL bEnableRight = FALSE, bEnableLeft = FALSE; if (nCount > 0) { CRect rcLastItem; m_pTabCtrl->GetItemRect(nCount - 1, &rcLastItem); bEnableRight = rcLastItem.right > rc.Width() - GetWidth(); m_pTabCtrl->GetItemRect(0, &rcLastItem); bEnableLeft = rcLastItem.left < 0; } m_btnRight.SetRect(CRect(nRight - 14, nTop, nRight, nTop + 15)); m_btnRight.SetEnable(bEnableRight); m_btnRight.Draw(&dc, clrText); m_btnLeft.SetRect(CRect(nRight - 28, nTop, nRight -14, nTop + 15)); m_btnLeft.SetEnable(bEnableLeft); m_btnLeft.Draw(&dc, clrText); } else { m_btnRight.SetRect(CXTPEmptyRect()); m_btnLeft.SetRect(CXTPEmptyRect()); } }