Пример #1
0
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 );
}
Пример #2
0
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);
    }
}
Пример #3
0
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);
    }
  }
}
Пример #4
0
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);
        }

    }

}
Пример #5
0
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 );

}
Пример #6
0
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);
}
Пример #9
0
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);
}
Пример #11
0
void CChildView::OnPaint() 
{
CPaintDC dcPaint( this );
CExtMemoryDC dc( &dcPaint );
CRect rcClient;
	GetClientRect( &rcClient );
	dc.FillSolidRect(
		&rcClient,
		g_PaintManager->GetColor( COLOR_WINDOW )
		);
}
Пример #12
0
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);
}
Пример #14
0
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);
}
Пример #15
0
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);
}
Пример #16
0
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 );
}
Пример #17
0
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 );
}
Пример #18
0
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);
	}
}
Пример #19
0
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);
}
Пример #20
0
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);
            }
        }
    }
}
Пример #21
0
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);
}
Пример #23
0
void CExtButton::OnPaint() 
{
CPaintDC dcPaint( this );
	_DrawImpl( dcPaint );
}
Пример #24
0
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 );
}
Пример #25
0
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);
}
Пример #27
0
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());
	}
}