⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 bcgpvisualmanager.cpp

📁 远程网络监视程序的源码
💻 CPP
📖 第 1 页 / 共 5 页
字号:
			clrShadow = globalData.clrBarShadow;
		}

		pDC->Draw3dRect (rectPane, clrShadow, clrHilite);
	}
}
//*********************************************************************************
COLORREF CBCGPVisualManager::OnFillMiniFrameCaption (CDC* pDC, 
								CRect rectCaption, 
								CBCGPMiniFrameWnd* pFrameWnd, BOOL bActive)
{
	ASSERT_VALID (pDC);
	ASSERT_VALID (pFrameWnd);

	if (DYNAMIC_DOWNCAST (CBCGPBaseToolBar, pFrameWnd->GetControlBar ()) != NULL)
	{
		bActive = TRUE;
	}

	CBrush br (bActive ? globalData.clrActiveCaption : globalData.clrInactiveCaption);
	pDC->FillRect (rectCaption, &br);

    // get the text color
	return globalData.clrCaptionText;
}
//**************************************************************************************
void CBCGPVisualManager::OnDrawMiniFrameBorder (
										CDC* pDC, CBCGPMiniFrameWnd* pFrameWnd,
										CRect rectBorder, CRect rectBorderSize)
{
	ASSERT_VALID (pDC);
	ASSERT_VALID (pFrameWnd);
	
	BCGP_PREDOCK_STATE preDockState = pFrameWnd->GetPreDockState ();

	if (preDockState == PDS_DOCK_REGULAR)
	{
		// draw outer edge;
		pDC->Draw3dRect (rectBorder, RGB (127, 0, 0), globalData.clrBarDkShadow);
		rectBorder.DeflateRect (1, 1);
		pDC->Draw3dRect (rectBorder, globalData.clrBarHilite, RGB (127, 0, 0));
	}
	else if (preDockState == PDS_DOCK_TO_TAB)
	{
		// draw outer edge;
		pDC->Draw3dRect (rectBorder, RGB (0, 0, 127), globalData.clrBarDkShadow);
		rectBorder.DeflateRect (1, 1);
		pDC->Draw3dRect (rectBorder, globalData.clrBarHilite, RGB (0, 0, 127));
	}
	else
	{
		// draw outer edge;
		pDC->Draw3dRect (rectBorder, globalData.clrBarFace, globalData.clrBarDkShadow);
		rectBorder.DeflateRect (1, 1);
		pDC->Draw3dRect (rectBorder, globalData.clrBarHilite, globalData.clrBarShadow);
	}	

	// draw the inner egde
	rectBorder.DeflateRect (rectBorderSize.right - 2, rectBorderSize.top - 2);
	pDC->Draw3dRect (rectBorder, globalData.clrBarFace, globalData.clrBarFace);
	rectBorder.InflateRect (1, 1);
	pDC->Draw3dRect (rectBorder, globalData.clrBarFace, globalData.clrBarFace);
}
//**************************************************************************************
void CBCGPVisualManager::OnDrawFloatingToolbarBorder (
												CDC* pDC, CBCGPBaseToolBar* pToolBar, 
												CRect rectBorder, CRect /*rectBorderSize*/)
{
	ASSERT_VALID (pDC);

	pDC->Draw3dRect (rectBorder, globalData.clrBarFace, globalData.clrBarDkShadow);
	rectBorder.DeflateRect (1, 1);
	pDC->Draw3dRect (rectBorder, globalData.clrBarHilite, globalData.clrBarShadow);
	rectBorder.DeflateRect (1, 1);
	pDC->Draw3dRect (rectBorder, globalData.clrBarFace, globalData.clrBarFace);
}
//**************************************************************************************
COLORREF CBCGPVisualManager::GetToolbarButtonTextColor (CBCGPToolbarButton* pButton,
												  CBCGPVisualManager::BCGBUTTON_STATE state)
{
	ASSERT_VALID (pButton);

	BOOL bDisabled = (CBCGPToolBar::IsCustomizeMode () && !pButton->IsEditable ()) ||
		(!CBCGPToolBar::IsCustomizeMode () && (pButton->m_nStyle & TBBS_DISABLED));

	if (pButton->IsKindOf (RUNTIME_CLASS (CBCGPOutlookButton)))
	{
		return bDisabled ? globalData.clrBarFace : globalData.clrWindow;
	}

	if (pButton->IsKindOf (RUNTIME_CLASS (CBCGPCalendarButton)))
	{
		CBCGPCalendarButton* pCalendarButton = (CBCGPCalendarButton*) pButton;
		COLORREF clrText = pCalendarButton->GetTextColor ();
		if (clrText != (COLORREF) -1)
		{
			return clrText;
		}

		if (!pCalendarButton->IsCurrMonth ())
		{
			return globalData.clrGrayedText;
		}
	}

	return	(bDisabled ? globalData.clrGrayedText : 
			(state == ButtonsIsHighlighted) ? 
				CBCGPToolBar::GetHotTextColor () : globalData.clrBarText);
}
//***************************************************************************************
void CBCGPVisualManager::OnFillOutlookPageButton (CDC* pDC, 
												  const CRect& rect,
												  BOOL /*bIsHighlighted*/, BOOL /*bIsPressed*/,
												  COLORREF& clrText)
{
	ASSERT_VALID (pDC);

	pDC->FillRect (rect, &globalData.brBarFace);
	clrText = globalData.clrBarText;
}
//****************************************************************************************
void CBCGPVisualManager::OnDrawOutlookPageButtonBorder (
	CDC* pDC, CRect& rectBtn, BOOL bIsHighlighted, BOOL bIsPressed)
{
	ASSERT_VALID (pDC);

	if (bIsHighlighted && bIsPressed)
	{
		pDC->Draw3dRect (rectBtn, globalData.clrBarDkShadow, globalData.clrBarFace);
		rectBtn.DeflateRect (1, 1);
		pDC->Draw3dRect (rectBtn, globalData.clrBarShadow, globalData.clrBarHilite);
	}
	else
	{
		if (bIsHighlighted || bIsPressed)
		{
			pDC->Draw3dRect (rectBtn, globalData.clrBarFace, globalData.clrBarDkShadow);
			rectBtn.DeflateRect (1, 1);
		}

		pDC->Draw3dRect (rectBtn, globalData.clrBarHilite, globalData.clrBarShadow);
	}

	rectBtn.DeflateRect (1, 1);
}
//**********************************************************************************
COLORREF CBCGPVisualManager::GetCaptionBarTextColor (CBCGPCaptionBar* /*pBar*/)
{
	return globalData.clrWindow;
}
//***********************************************************************************
void CBCGPVisualManager::OnDrawCaptionBarBorder (CDC* pDC, 
	CBCGPCaptionBar* /*pBar*/, CRect rect, COLORREF clrBarBorder, BOOL bFlatBorder)
{
	ASSERT_VALID (pDC);

	if (clrBarBorder == (COLORREF) -1)
	{
		pDC->FillRect (rect, &globalData.brBarFace);
	}
	else
	{
		CBrush brBorder;
		brBorder.CreateSolidBrush (clrBarBorder);
		pDC->FillRect (rect, &brBorder);
	}

	if (!bFlatBorder)
	{
		pDC->Draw3dRect (rect, globalData.clrBarHilite, globalData.clrBarShadow);
	}
}
//**************************************************************************************
void CBCGPVisualManager::OnDrawStatusBarProgress (CDC* pDC, CBCGPStatusBar* /*pStatusBar*/,
			CRect rectProgress, int nProgressTotal, int nProgressCurr,
			COLORREF clrBar, COLORREF clrProgressBarDest, COLORREF clrProgressText,
			BOOL bProgressText)
{
	ASSERT_VALID (pDC);

	if (nProgressTotal == 0)
	{
		return;
	}

	CRect rectComplete = rectProgress;
	rectComplete.right = rectComplete.left + 
		nProgressCurr * rectComplete.Width () / nProgressTotal;

	if (clrProgressBarDest == (COLORREF)-1)
	{
		// one-color bar
		CBrush br (clrBar);
		pDC->FillRect (rectComplete, &br);
	}
	else
	{
		// gradient bar:
		CBCGPDrawManager dm (*pDC);
		dm.FillGradient (rectComplete, clrBar, clrProgressBarDest, FALSE);
	}

	if (bProgressText)
	{
		CString strText;
		strText.Format (_T("%d%%"), nProgressCurr * 100 / nProgressTotal);

		COLORREF clrText = pDC->SetTextColor (globalData.clrBarText);

		pDC->DrawText (strText, rectProgress, DT_CENTER | DT_SINGLELINE | DT_VCENTER | DT_NOPREFIX);

		CRgn rgn;
		rgn.CreateRectRgnIndirect (rectComplete);
		pDC->SelectClipRgn (&rgn);

		pDC->SetTextColor (clrProgressText == (COLORREF)-1 ?
			globalData.clrTextHilite : clrProgressText);
		
		pDC->DrawText (strText, rectProgress, DT_CENTER | DT_SINGLELINE | DT_VCENTER | DT_NOPREFIX);
		pDC->SelectClipRgn (NULL);
		pDC->SetTextColor (clrText);
	}
}
//****************************************************************************************
void CBCGPVisualManager::OnFillHeaderCtrlBackground (CBCGPHeaderCtrl* pCtrl,
													 CDC* pDC, CRect rect)
{
	ASSERT_VALID (pDC);
	pDC->FillRect (rect, 
		pCtrl->IsDialogControl () ? &globalData.brBtnFace : &globalData.brBarFace);
}
//****************************************************************************************
void CBCGPVisualManager::OnDrawHeaderCtrlBorder (CBCGPHeaderCtrl* pCtrl, CDC* pDC,
		CRect& rect, BOOL bIsPressed, BOOL /*bIsHighlighted*/)
{
	ASSERT_VALID (pDC);

	if (bIsPressed)
	{
		if (pCtrl->IsDialogControl ())
		{
			pDC->Draw3dRect (rect, globalData.clrBtnShadow, globalData.clrBtnShadow);
		}
		else
		{
			pDC->Draw3dRect (rect, globalData.clrBarShadow, globalData.clrBarShadow);
		}

		rect.left++;
		rect.top++;
	}
	else
	{
		if (pCtrl->IsDialogControl ())
		{
			pDC->Draw3dRect (rect, globalData.clrBtnHilite, globalData.clrBtnShadow);
		}
		else
		{
			pDC->Draw3dRect (rect, globalData.clrBarHilite, globalData.clrBarShadow);
		}
	}
}
//*****************************************************************************************
void CBCGPVisualManager::OnDrawHeaderCtrlSortArrow (CBCGPHeaderCtrl* pCtrl, 
												   CDC* pDC,
												   CRect& rectArrow, BOOL bIsUp)
{
	CPen penLight (1, PS_SOLID, 
		pCtrl->IsDialogControl () ? globalData.clrBtnHilite : globalData.clrBarHilite);
	CPen penDark (1, PS_SOLID, 
		pCtrl->IsDialogControl () ? globalData.clrBtnDkShadow : globalData.clrBarDkShadow);

	CPen* pPenOld = pDC->SelectObject (&penLight);
	ASSERT_VALID (pPenOld);

	if (!bIsUp)
	{
		pDC->MoveTo (rectArrow.right, rectArrow.top);
		pDC->LineTo (rectArrow.CenterPoint ().x, rectArrow.bottom);

		pDC->SelectObject (&penDark);
		pDC->LineTo (rectArrow.left, rectArrow.top);
		pDC->LineTo (rectArrow.right, rectArrow.top);
	}
	else
	{
		pDC->MoveTo (rectArrow.left, rectArrow.bottom);
		pDC->LineTo (rectArrow.right, rectArrow.bottom);
		pDC->LineTo (rectArrow.CenterPoint ().x, rectArrow.top);

		pDC->SelectObject (&penDark);
		pDC->LineTo (rectArrow.left, rectArrow.bottom);
	}

	pDC->SelectObject (pPenOld);
}
//*****************************************************************************************
void CBCGPVisualManager::OnDrawStatusBarSizeBox (CDC* pDC, CBCGPStatusBar* /*pStatBar*/,
			CRect rectSizeBox)
{
	ASSERT_VALID (pDC);

	CFont* pOldFont = pDC->SelectObject (&globalData.fontMarlett);
	ASSERT (pOldFont != NULL);

	const CString strSizeBox (_T("o"));	// Char of the sizing box in "Marlett" font

	UINT nTextAlign = pDC->SetTextAlign (TA_RIGHT | TA_BOTTOM);
	COLORREF clrText = pDC->SetTextColor (globalData.clrBarShadow);

	pDC->ExtTextOut (rectSizeBox.right, rectSizeBox.bottom,
		ETO_CLIPPED, &rectSizeBox, strSizeBox, NULL);

	pDC->SelectObject (pOldFont);
	pDC->SetTextColor (clrText);
	pDC->SetTextAlign (nTextAlign);
}
//*************************************************************************************
void CBCGPVisualManager::OnDrawEditBorder (CDC* pDC, CRect rect,
												BOOL /*bDisabled*/,
												BOOL bIsHighlighted,
												CBCGPToolbarEditBoxButton* /*pButton*/)
{
	ASSERT_VALID (pDC);

	if (bIsHighlighted)
	{
		pDC->DrawEdge (rect, EDGE_SUNKEN, BF_RECT);
	}
}
//**********************************************************************************
void CBCGPVisualManager::OnFillTasksPaneBackground(CDC* pDC, CRect rectWorkArea)
{
	ASSERT_VALID (pDC);

	pDC->FillRect (rectWorkArea, &globalData.brWindow);
}
//**********************************************************************************
void CBCGPVisualManager::OnDrawTasksGroupCaption(CDC* pDC, CBCGPTasksGroup* pGroup, 
						BOOL bIsHighlighted, BOOL /*bIsSelected*/, BOOL bCanCollapse)
{
	ASSERT_VALID(pDC);
	ASSERT(pGroup != NULL);

	// ---------------------------------
	// Draw caption background (Windows)
	// ---------------------------------
	COLORREF clrBckOld = pDC->GetBkColor ();
	pDC->FillSolidRect(pGroup->m_rect, 
		(pGroup->m_bIsSpecial ? globalData.clrHilite : globalData.clrBarFace)); 
	pDC->SetBkColor (clrBckOld);

	// ---------------------------
	// Draw an icon if it presents
	// ---------------------------
	BOOL bShowIcon = (pGroup->m_hIcon != NULL 
		&& pGroup->m_sizeIcon.cx < pGroup->m_rect.Width () - pGroup->m_rect.Height());
	if (bShowIcon)
	{
		CPoint pointIcon(pGroup->m_rect.left+1, pGroup->m_rect.bottom - pGroup->m_sizeIcon.cy);
		pDC->DrawIcon(pointIcon, pGroup->m_hIcon);
	}

	// -----------------------
	// Draw group caption text
	// -----------------------
	CFont* pFontOld = pDC->SelectObject (&globalData.fontBold);
	COLORREF clrTextOld = pDC->SetTextColor (pGroup->m_bIsSpecial ? 
			globalData.clrWindow : globalData.clrWindowText);
	int nBkModeOld = pDC->SetBkMode(TRANSPARENT);
	
	int nTaskPaneHOffset = pGroup->m_pPage->m_pTaskPane->GetGroupCaptionHorzOffset();
	int nTaskPaneVOffset = pGroup->m_pPage->m_pTaskPane->GetGroupCaptionVertOffset();

	CRect rectText = pGroup->m_rect;
	rectText.left += (bShowIcon ? pGroup->m_sizeIcon.cx	: 
		(nTaskPaneHOffset != -1 ? nTaskPaneHOffset : m_nGroupCaptionHorzOffset));
	rectText.top += (nTaskPaneVOffset != -1 ? nTaskPaneVOffset : m_nGroupCaptionVertOffset);
	rectText.right = max(rectText.left, rectText.right - pGroup->m_rect.Height());

	pDC->DrawText (pGroup->m_strName, rectText, DT_SINGLELINE);

	pDC->SetBkMode(nBkModeOld);
	pDC->SelectObject (pFontOld);
	pDC->SetTextColor (clrTextOld);

	// -------------------------
	// Draw group caption button
	// -------------------------
	if (bCanCollapse && !pGroup->m_strName.IsEmpty())
	{
		CSize sizeButton = CMenuImages::Size();
		CRect rectButton = pGroup->m_rect;
		rectButton.left = max(rectButton.left, 
			rectButton.right - (rectButton.Height()+1)/2 - (sizeButton.cx+1)/2);
		rectButton.top = max(rectButton.top, 
			rectButton.bottom - (rectButton.Height()+1)/2 - (sizeButton.cy+1)/2);
		rectButton.right = rectButton.left + sizeButton.cx;
		rectButton.bottom = rectButton.top + sizeButton.cy;

		if (rectButton.right <= pGroup->m_rect.right && rectButton.bottom <= pGroup->m_rect.bottom)
		{
			if (bIsHighlighted)
			{
				// Draw button frame
				CBrush brush (globalData.clrBarFace);
				CBrush* pBrushOld = (CBrush*) pDC->SelectObject (&brush);
				COLORREF clrBckOld = pDC->GetBkColor ();

				pDC->Draw3dRect(&rectButton, globalData.clrWindow, globalData.clrBarShadow);

				pDC->SetBkColor (clrBckOld);
				pDC->SelectObject (pBrushOld);
			}

			if (pGroup->m_bIsSpecial)
			{
				if (!pGroup->m_bIsCollapsed)
				{
					CMenuImages::Draw(pDC, CMenuImages::IdArowUp, rectButton.TopLeft());
				}
				else
				{
					CMenuImages::Draw(pDC, CMenuImages::IdArowDown, rectButton.TopLeft());
				}
			}
			else
			{
				if (!pGroup->m_bIsCollapsed)
				{
					CMenuImages::Draw(pDC, CMenuImages::IdArowUp, rectButton.TopLeft());
				}
				else
				{
					CMenuImages::Draw(pDC, CMenuImages::IdArowDown, rectButton.TopLeft());
				}
			}
			}
	}
}
//**********************************************************************************
void CBCGPVisualManager::OnFillTasksGroupInterior(CDC* /*pDC*/, CRect /*rect*/, BOOL /*bSpecial*/)
{
}
//**********************************************************************************
void CBCGPVisualManager::OnDrawTasksGroupAreaBorder(CDC* pDC, CRect rect, BOOL bSpecial, 
												   BOOL bNoTitle)
{
	ASSERT_VALID(pDC);

	// Draw caption background:
	CPen pen (PS_SOLID, 1, (bSpecial ? globalData.clrHilite : globalData.clrBarFace));

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -