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

📄 bcgpvisualmanager.cpp

📁 远程网络监视程序的源码
💻 CPP
📖 第 1 页 / 共 5 页
字号:
	CPen* pPenOld = (CPen*) pDC->SelectObject (&pen);

	pDC->MoveTo (rect.left, rect.top);
	pDC->LineTo (rect.left, rect.bottom-1);
	pDC->LineTo (rect.right-1, rect.bottom-1);
	pDC->LineTo (rect.right-1, rect.top);
	if (bNoTitle)
	{
		pDC->LineTo (rect.left, rect.top);
	}
	else
	{
		pDC->LineTo (rect.right-1, rect.top-1);
	}
	pDC->SelectObject (&pPenOld);
	
}
//**********************************************************************************
void CBCGPVisualManager::OnDrawTask(CDC* pDC, CBCGPTask* pTask, CImageList* pIcons, 
								   BOOL bIsHighlighted, BOOL /*bIsSelected*/)
{
	ASSERT_VALID(pDC);
	ASSERT_VALID(pIcons);
	ASSERT(pTask != NULL);

	CRect rectText = pTask->m_rect;

	if (pTask->m_bIsSeparator)
	{
		CPen pen (PS_SOLID, 1, globalData.clrBarFace);
		CPen* pPenOld = (CPen*) pDC->SelectObject (&pen);

		pDC->MoveTo (rectText.left, rectText.CenterPoint ().y);
		pDC->LineTo (rectText.right, rectText.CenterPoint ().y);

		pDC->SelectObject (&pPenOld);
		return;
	}

	// ---------
	// Draw icon
	// ---------
	CSize sizeIcon(0, 0);
	::ImageList_GetIconSize (pIcons->m_hImageList, (int*) &sizeIcon.cx, (int*) &sizeIcon.cy);
	if (pTask->m_nIcon >= 0 && sizeIcon.cx > 0)
	{
		pIcons->Draw (pDC, pTask->m_nIcon, rectText.TopLeft (), ILD_TRANSPARENT);
	}
	int nTaskPaneOffset = pTask->m_pGroup->m_pPage->m_pTaskPane->GetGroupCaptionHorzOffset();
	rectText.left += sizeIcon.cx + (nTaskPaneOffset != -1 ? nTaskPaneOffset : m_nTasksIconHorzOffset);

	// ---------
	// Draw text
	// ---------
	BOOL bIsLabel = (pTask->m_uiCommandID == 0);

	CFont* pFontOld = NULL;
	COLORREF clrTextOld = pDC->GetTextColor ();
	if (bIsLabel)
	{
		pFontOld = pDC->SelectObject (&globalData.fontRegular);
		pDC->SetTextColor (globalData.clrWindowText);
	}
	else if (!pTask->m_bEnabled)
	{
		pDC->SetTextColor (globalData.clrGrayedText);
		pFontOld = pDC->SelectObject (&globalData.fontRegular);
	}
	else if (bIsHighlighted)
	{
		pFontOld = pDC->SelectObject (&globalData.fontUnderline);
		pDC->SetTextColor (globalData.clrWindowText);
	}
	else
	{
		pFontOld = pDC->SelectObject (&globalData.fontRegular);
		pDC->SetTextColor (globalData.clrWindowText);
	}
	int nBkModeOld = pDC->SetBkMode(TRANSPARENT);

	pDC->DrawText (pTask->m_strName, rectText, DT_SINGLELINE | DT_VCENTER);
	
	pDC->SetBkMode(nBkModeOld);
	pDC->SelectObject (pFontOld);
	pDC->SetTextColor (clrTextOld);
}
//**********************************************************************************
void CBCGPVisualManager::OnDrawScrollButtons(CDC* pDC, const CRect& rect, const int nBorderSize,
									int iImage, BOOL bHilited)
{
	ASSERT_VALID (pDC);

	CRect rectImage (CPoint (0, 0), CMenuImages::Size ());

	CRect rectFill = rect;
	rectFill.top -= nBorderSize;

	pDC->FillRect (rectFill, &globalData.brBarFace);

	if (bHilited)
	{
		CBCGPDrawManager dm (*pDC);
		dm.HighlightRect (rect);

		pDC->Draw3dRect (rect,
			globalData.clrBarHilite,
			globalData.clrBarDkShadow);
	}

	CPoint point (
		rect.left + (rect.Width () - rectImage.Width ()) / 2,
		rect.top + (rect.Height () - rectImage.Height ()) / 2);

	CMenuImages::Draw (pDC, (CMenuImages::IMAGES_IDS) iImage, point);
}
//**********************************************************************************
void CBCGPVisualManager::OnDrawSlider (CDC* pDC, CBCGPSlider* pSlider, CRect rect, BOOL bAutoHideMode)
{
	ASSERT_VALID (pDC);
	ASSERT_VALID (pSlider);

	pDC->FillRect (rect, &globalData.brBarFace);

	if (bAutoHideMode)
	{
		// draw outer edge;

		DWORD dwAlgn = pSlider->GetCurrentAlignment ();
		CRect rectBorder = rect;

		COLORREF clrBorder = globalData.clrBarDkShadow;
		
		if (dwAlgn & CBRS_ALIGN_LEFT)
		{
			rectBorder.left = rectBorder.right;
		}
		else if (dwAlgn & CBRS_ALIGN_RIGHT)
		{
			rectBorder.right = rectBorder.left;
			clrBorder = globalData.clrBarHilite;
		}
		else if (dwAlgn & CBRS_ALIGN_TOP)
		{
			rectBorder.top = rectBorder.bottom;
		}
		else if (dwAlgn & CBRS_ALIGN_BOTTOM)
		{
			rectBorder.bottom = rectBorder.top;
			clrBorder = globalData.clrBarHilite;
		}
		else
		{
			ASSERT(FALSE);
			return;
		}

		pDC->Draw3dRect (rectBorder, clrBorder, clrBorder);
	}
}
//********************************************************************************
void CBCGPVisualManager::OnDrawSplitterBorder (CDC* pDC, CBCGPSplitterWnd* pSplitterWnd, CRect rect)
{
	ASSERT_VALID(pDC);

	pDC->Draw3dRect (rect, globalData.clrBarShadow, globalData.clrBarHilite);
	rect.InflateRect(-CX_BORDER, -CY_BORDER);
	pDC->Draw3dRect (rect, globalData.clrBarFace, globalData.clrBarFace);
}
//********************************************************************************
void CBCGPVisualManager::OnDrawSplitterBox (CDC* pDC, CBCGPSplitterWnd* pSplitterWnd, CRect& rect)
{
	ASSERT_VALID(pDC);
	pDC->Draw3dRect(rect, globalData.clrBarFace, globalData.clrBarShadow);
}
//********************************************************************************
void CBCGPVisualManager::OnFillSplitterBackground (CDC* pDC, CBCGPSplitterWnd* pSplitterWnd, CRect rect)
{
	ASSERT_VALID(pDC);
	pDC->FillSolidRect (rect, globalData.clrBarFace);
}
//**********************************************************************************
void CBCGPVisualManager::OnDrawCheckBox (CDC *pDC, CRect rect, 
										 BOOL bHighlighted, 
										 BOOL bChecked,
										 BOOL bEnabled)
{
	if (bHighlighted)
	{
		pDC->DrawFocusRect (rect);
	}

	rect.DeflateRect (1, 1);
	pDC->FillSolidRect (&rect, bEnabled ? globalData.clrWindow :
		globalData.clrBarFace);

	pDC->Draw3dRect (&rect, 
					globalData.clrBarDkShadow,
					globalData.clrBarHilite);
	
	rect.DeflateRect (1, 1);
	pDC->Draw3dRect (&rect,
					globalData.clrBarShadow,
					globalData.clrBarLight);

	if (bChecked)
	{
		CSize sizeImage = CMenuImages::Size ();
		CPoint ptImage (rect.left + (rect.Width () - sizeImage.cx) / 2,
						rect.top + (rect.Height () - sizeImage.cy) / 2);

		CMenuImages::Draw (pDC, CMenuImages::IdCheck, ptImage,
							CMenuImages::ImageBlack);
	}
}
//**********************************************************************************
void CBCGPVisualManager::OnDrawSpinButtons(CDC *pDC, const CRect &rectSpin, int iState, BOOL bOrientation)
{
	ASSERT_VALID(pDC);
	ASSERT_VALID (this);


	CRect rect[2];

	rect[0] = rect[1] = rectSpin;


	if(!bOrientation) 
	{
		rect[0].DeflateRect(0, 0, 0, rect[0].Height() / 2);
		rect[1].top = rect[0].bottom + 1;
	}
	else
	{
		rect[0].DeflateRect(0, 0, rect[0].Width() / 2, 0);
		rect[1].left = rect[0].right + 1;
	}

	pDC->FillSolidRect (rectSpin, globalData.clrBarFace);
	pDC->Draw3dRect (rectSpin, globalData.clrBarHilite, globalData.clrBarHilite);
	CMenuImages::IMAGES_IDS id[2][2] = {{CMenuImages::IdArowUp, CMenuImages::IdArowDown}, {CMenuImages::IdArowLeft, CMenuImages::IdArowRight}};

	int idxPressed = (iState & (SPIN_PRESSEDUP | SPIN_PRESSEDDOWN)) - 1;
	BOOL bDisabled = iState & SPIN_DISABLED;

	for(int i = 0; i < 2; i ++)
	{

		CPoint pointTriangle (
			rect[i].left + (rect[i].Width () - CMenuImages::Size ().cx) / 2 ,
			rect[i].top + (rect[i].Height () - CMenuImages::Size ().cy) / 2 );

		if (idxPressed == i)
		{
			pDC->Draw3dRect (&rect[i], globalData.clrBarShadow, globalData.clrBarHilite);
		}
		else
		{
			pDC->Draw3dRect (&rect[i], globalData.clrBarHilite, globalData.clrBarShadow);
		}


		CMenuImages::Draw (pDC, id[bOrientation][i], pointTriangle,
			bDisabled ? CMenuImages::ImageGray : CMenuImages::ImageBlack);
	}
}
//**************************************************************************************
void CBCGPVisualManager::OnDrawExpandingBox (CDC* pDC, CRect rect, BOOL bIsOpened,
											COLORREF colorBox)
{
	ASSERT_VALID(pDC);

	pDC->Draw3dRect (rect, colorBox, colorBox);

	rect.DeflateRect (2, 2);

	CPen penLine (PS_SOLID, 1, globalData.clrBarText);
	CPen* pOldPen = pDC->SelectObject (&penLine);

	CPoint ptCenter = rect.CenterPoint ();

	pDC->MoveTo (rect.left, ptCenter.y);
	pDC->LineTo (rect.right, ptCenter.y);

	if (!bIsOpened)
	{
		pDC->MoveTo (ptCenter.x, rect.top);
		pDC->LineTo (ptCenter.x, rect.bottom);
	}

	pDC->SelectObject (pOldPen);
}
//***********************************************************************************
COLORREF CBCGPVisualManager::OnFillCalendarBarNavigationRow (CDC* pDC, CRect rect)
{
	ASSERT_VALID (pDC);

	CBrush br (globalData.clrInactiveCaption);
	pDC->FillRect (rect, &br);

	pDC->Draw3dRect (rect, globalData.clrInactiveBorder, globalData.clrInactiveBorder);
	return globalData.clrInactiveCaptionText;
}
//*************************************************************************************
void CBCGPVisualManager::OnFillCalendarBarWeekColumn (CDC* pDC, CRect rect,
								  COLORREF& clrText, COLORREF& clrTextDisabled)
{
	ASSERT_VALID (pDC);

	pDC->FillSolidRect (rect, globalData.clrBarShadow);

	clrText = globalData.clrBarHilite;
	clrTextDisabled = globalData.clrBarLight;
}
//*************************************************************************************
void CBCGPVisualManager::OnDrawControlBorder (CWnd* pWndCtrl)
{
	ASSERT_VALID (pWndCtrl);

	CWindowDC dc (pWndCtrl);

	CRect rect;
	pWndCtrl->GetWindowRect (rect);

	rect.bottom -= rect.top;
	rect.right -= rect.left;
	rect.left = rect.top = 0;
	
	dc.Draw3dRect (rect, globalData.clrBarDkShadow, globalData.clrBarHilite);
}
//***********************************************************************************
void CBCGPVisualManager::OnDrawShowAllMenuItems (CDC* pDC, CRect rect, 
												 CBCGPVisualManager::BCGBUTTON_STATE /*state*/)
{
	ASSERT_VALID (pDC);

	CPoint pointImage (
		rect.left + (rect.Width () - CMenuImages::Size ().cx) / 2,
		rect.top + (rect.Height () - CMenuImages::Size ().cy) / 2);

	CMenuImages::Draw (pDC, CMenuImages::IdArowShowAll, pointImage);
}
//************************************************************************************
int CBCGPVisualManager::GetShowAllMenuItemsHeight (CDC* /*pDC*/, const CSize& /*sizeDefault*/)
{
	return CMenuImages::Size ().cy + 2 * TEXT_MARGIN;
}
//**********************************************************************************
void CBCGPVisualManager::GetTabFrameColors (const CBCGPBaseTabWnd* pTabWnd,
				   COLORREF& clrDark,
				   COLORREF& clrBlack,
				   COLORREF& clrHighlight,
				   COLORREF& clrFace,
				   COLORREF& clrDarkShadow,
				   COLORREF& clrLight,
				   CBrush*& pbrFace,
				   CBrush*& pbrBlack)
{
	ASSERT_VALID (pTabWnd);

	COLORREF clrActiveTab = pTabWnd->GetTabBkColor (pTabWnd->GetActiveTab ());

	if (pTabWnd->IsOneNoteStyle () && clrActiveTab != (COLORREF)-1)
	{
		clrFace = clrActiveTab;
	}
	else
	{
		clrFace = globalData.clrBarFace;
	}

	clrDark = globalData.clrBarShadow;
	clrBlack = globalData.clrBarText;
	clrHighlight = globalData.clrBarHilite;
	clrDarkShadow = globalData.clrBarDkShadow;
	clrLight = globalData.clrBarLight;

	pbrFace = &globalData.brBarFace;
	pbrBlack = &globalData.brBlack;
}
//*********************************************************************************
void CBCGPVisualManager::OnFillAutoHideButtonBackground (CDC* pDC, CRect rect, CBCGPAutoHideButton* /*pButton*/)
{
	ASSERT_VALID (pDC);
	pDC->FillRect (rect, &globalData.brBarFace);
}
//*********************************************************************************
void CBCGPVisualManager::OnDrawAutoHideButtonBorder (CDC* pDC, CRect rectBounds, CRect rectBorderSize, CBCGPAutoHideButton* /*pButton*/)
{
	ASSERT_VALID (pDC);

	COLORREF clr = globalData.clrBarShadow;

	COLORREF clrText = pDC->GetTextColor ();

	if (rectBorderSize.left > 0)
	{
		pDC->FillSolidRect (rectBounds.left, rectBounds.top, 
							rectBounds.left + rectBorderSize.left, 
							rectBounds.bottom, clr);
	}
	if (rectBorderSize.top > 0)
	{
		pDC->FillSolidRect (rectBounds.left, rectBounds.top, 
							rectBounds.right, 
							rectBounds.top + rectBorderSize.top, clr);
	}
	if (rectBorderSize.right > 0)
	{
		pDC->FillSolidRect (rectBounds.right - rectBorderSize.right, rectBounds.top, 
							rectBounds.right, 
							rectBounds.bottom, clr);
	}
	if (rectBorderSize.bottom > 0)
	{
		pDC->FillSolidRect (rectBounds.left, rectBounds.bottom - rectBorderSize.bottom,  
							rectBounds.right, 
							rectBounds.bottom, clr);
	}

	pDC->SetTextColor (clrText);
}

/////////////////////////////////////////////////////////////////////////////////////
// CBCGPWinXPThemeManager

CBCGPWinXPThemeManager::CBCGPWinXPThemeManager ()
{
	m_hThemeToolBar = NULL;
	m_hThemeButton = NULL;
	m_hThemeStatusBar = NULL;
	m_hThemeWindow = NULL;
	m_hThemeRebar = NULL;
	m_hThemeComboBox = NULL;
	m_hThemeProgress = NULL;
	m_hThemeHeader = NULL;
	m_hThemeScrollBar = NULL;
	m_hThemeExplorerBar = NULL;
	m_hThemeTree = NULL;
	m_hThemeStartPanel = NULL;
	m_hThemeTaskBand = NULL;
	m_hThemeTaskBar = NULL;

	m_hinstUXDLL = LoadLibrary (_T("UxTheme.dll"));

	if (m_hinstUXDLL != NULL)
	{
		m_pfOpenThemeData = (OPENTHEMEDATA)::GetProcAddress (m_hinstUXDLL, "OpenThemeData");
		m_pfCloseThemeData = (CLOSETHEMEDATA)::GetProcAddress (m_hinstUXDLL, "CloseThemeData");
		m_pfDrawThemeBackground = (DRAWTHEMEBACKGROUND)::GetProcAdd

⌨️ 快捷键说明

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