📄 bcgpwinxpvisualmanager.cpp
字号:
}
}
}
}
//*************************************************************************************
void CBCGPWinXPVisualManager::OnDrawButtonSeparator (CDC* pDC,
CBCGPToolbarButton* pButton, CRect rect, CBCGPVisualManager::BCGBUTTON_STATE state,
BOOL bHorz)
{
if (m_hThemeToolBar == NULL)
{
CBCGPVisualManagerXP::OnDrawButtonSeparator (pDC, pButton, rect, state, bHorz);
return;
}
rect.InflateRect (2, 2);
(*m_pfDrawThemeBackground) (m_hThemeToolBar, pDC->GetSafeHdc(),
bHorz ? TP_SEPARATOR : TP_SEPARATORVERT,
0, &rect, 0);
}
//*************************************************************************************
void CBCGPWinXPVisualManager::OnDrawSeparator (CDC* pDC, CBCGPBaseControlBar* pBar,
CRect rect, BOOL bHorz)
{
ASSERT_VALID (pBar);
if (m_hThemeToolBar == NULL ||
pBar->IsDialogControl ())
{
CBCGPVisualManagerXP::OnDrawSeparator (pDC, pBar, rect, bHorz);
return;
}
if (m_bOfficeStyleMenus && pBar->IsKindOf (RUNTIME_CLASS (CBCGPPopupMenuBar)))
{
CBCGPVisualManagerXP::OnDrawSeparator (pDC, pBar, rect, bHorz);
return;
}
(*m_pfDrawThemeBackground) (m_hThemeToolBar, pDC->GetSafeHdc(),
bHorz ? TP_SEPARATOR : TP_SEPARATORVERT,
0, &rect, 0);
}
//***************************************************************************************
void CBCGPWinXPVisualManager::OnDrawCaptionButton (CDC* pDC, CBCGPCaptionButton* pButton,
BOOL bActive, BOOL bHorz, BOOL bMaximized, BOOL bDisabled,
int nImageID /*= -1*/)
{
if (m_hThemeButton == NULL)
{
CBCGPVisualManagerXP::OnDrawCaptionButton (pDC, pButton, bActive, bHorz, bMaximized, bDisabled, nImageID);
return;
}
ASSERT_VALID (pDC);
ASSERT (pButton != NULL);
BOOL bPushed = pButton->m_bPushed;
BOOL bFocused = pButton->m_bFocused;
int nState = PBS_NORMAL;
if (bDisabled)
{
nState = PBS_DISABLED;
}
else if (bPushed && bFocused)
{
nState = PBS_PRESSED;
}
else if (bFocused)
{
nState = PBS_HOT;
}
CRect rect = pButton->GetRect ();
(*m_pfDrawThemeBackground) (m_hThemeButton, pDC->GetSafeHdc(), BP_PUSHBUTTON,
nState, &rect, 0);
pButton->m_bPushed = FALSE;
pButton->m_bFocused = FALSE;
CBCGPVisualManagerXP::OnDrawCaptionButton (pDC, pButton, FALSE,
bHorz, bMaximized, bDisabled, nImageID);
// Restore state
pButton->m_bPushed = bPushed;
pButton->m_bFocused = bFocused;
}
//**********************************************************************************
void CBCGPWinXPVisualManager::OnDrawCaptionButtonIcon (CDC* pDC,
CBCGPCaptionButton* pButton,
CMenuImages::IMAGES_IDS id,
BOOL bActive, BOOL bDisabled,
CPoint ptImage)
{
ASSERT_VALID (pDC);
CMenuImages::IMAGE_STATE imageState;
if (bDisabled)
{
imageState = CMenuImages::ImageGray;
}
else
{
imageState = CMenuImages::ImageBlack;
}
CMenuImages::Draw (pDC, id, ptImage, imageState);
}
//***********************************************************************************
COLORREF CBCGPWinXPVisualManager::OnFillCommandsListBackground (CDC* pDC, CRect rect, BOOL bIsSelected)
{
if (m_hThemeWindow == NULL || m_bOfficeStyleMenus)
{
return CBCGPVisualManagerXP::OnFillCommandsListBackground (pDC, rect, bIsSelected);
}
::FillRect (pDC->GetSafeHdc (), rect, ::GetSysColorBrush (COLOR_MENU));
if (bIsSelected)
{
pDC->Draw3dRect (rect, globalData.clrMenuText, globalData.clrMenuText);
}
return globalData.clrMenuText;
}
//**********************************************************************************
void CBCGPWinXPVisualManager::OnDrawTearOffCaption (CDC* pDC, CRect rect, BOOL bIsActive)
{
CBCGPVisualManagerXP::OnDrawTearOffCaption (pDC, rect, bIsActive);
}
//***********************************************************************************
void CBCGPWinXPVisualManager::OnDrawMenuSystemButton (CDC* pDC, CRect rect,
UINT uiSystemCommand,
UINT nStyle, BOOL bHighlight)
{
if (m_hThemeWindow == NULL)
{
CBCGPVisualManagerXP::OnDrawMenuSystemButton (pDC, rect, uiSystemCommand, nStyle, bHighlight);
return;
}
int nPart;
switch (uiSystemCommand)
{
case SC_CLOSE:
nPart = WP_MDICLOSEBUTTON;
break;
case SC_RESTORE:
nPart = WP_MDIRESTOREBUTTON;
break;
case SC_MINIMIZE:
nPart = WP_MDIMINBUTTON;
break;
default:
return;
}
BOOL bIsDisabled = (nStyle & TBBS_DISABLED);
BOOL bIsPressed = (nStyle & TBBS_PRESSED);
int nState = CBS_NORMAL;
if (bIsDisabled)
{
nState = CBS_DISABLED;
}
else if (bIsPressed && bHighlight)
{
nState = CBS_PUSHED;
}
else if (bHighlight)
{
nState = CBS_HOT;
}
(*m_pfDrawThemeBackground) (m_hThemeWindow, pDC->GetSafeHdc(), nPart,
nState, &rect, 0);
}
//********************************************************************************
void CBCGPWinXPVisualManager::OnDrawStatusBarPaneBorder (CDC* pDC, CBCGPStatusBar* pBar,
CRect rectPane, UINT uiID, UINT nStyle)
{
if (m_hThemeStatusBar == NULL)
{
CBCGPVisualManagerXP::OnDrawStatusBarPaneBorder (pDC, pBar, rectPane, uiID, nStyle);
return;
}
(*m_pfDrawThemeBackground) (m_hThemeStatusBar, pDC->GetSafeHdc(), SP_PANE,
0, &rectPane, 0);
}
//*****************************************************************************************
void CBCGPWinXPVisualManager::OnDrawStatusBarSizeBox (CDC* pDC, CBCGPStatusBar* pStatBar,
CRect rectSizeBox)
{
if (m_hThemeScrollBar == NULL)
{
CBCGPVisualManagerXP::OnDrawStatusBarSizeBox (pDC, pStatBar, rectSizeBox);
return;
}
(*m_pfDrawThemeBackground) (m_hThemeScrollBar, pDC->GetSafeHdc(), SBP_SIZEBOX,
SZB_RIGHTALIGN, &rectSizeBox, 0);
}//**************************************************************************************
void CBCGPWinXPVisualManager::OnDrawMenuBorder (CDC* pDC, CBCGPPopupMenu* pMenu, CRect rect)
{
if (m_hThemeWindow == NULL || m_bOfficeStyleMenus)
{
ASSERT_VALID (pMenu);
BOOL bConnectMenuToParent = m_bConnectMenuToParent;
m_bConnectMenuToParent = FALSE;
if (m_hThemeWindow == NULL)
{
m_bConnectMenuToParent = TRUE;
}
else if (!CBCGPToolBar::IsCustomizeMode ())
{
CBCGPToolbarMenuButton* pMenuButton = pMenu->GetParentButton ();
if (pMenuButton != NULL)
{
BOOL bIsMenuBar = pMenuButton->GetParentWnd () != NULL &&
pMenuButton->GetParentWnd ()->IsKindOf (RUNTIME_CLASS (CBCGPMenuBar));
if (bIsMenuBar)
{
m_bConnectMenuToParent = TRUE;
}
}
}
CBCGPVisualManagerXP::OnDrawMenuBorder (pDC, pMenu, rect);
m_bConnectMenuToParent = bConnectMenuToParent;
}
else
{
CBCGPVisualManager::OnDrawMenuBorder (pDC, pMenu, rect);
}
}
//****************************************************************************************
void CBCGPWinXPVisualManager::OnDrawMenuShadow (CDC* pPaintDC, const CRect& rectClient, const CRect& rectExclude,
int nDepth, int iMinBrightness, int iMaxBrightness,
CBitmap* pBmpSaveBottom, CBitmap* pBmpSaveRight)
{
ASSERT_VALID (pPaintDC);
ASSERT_VALID (pBmpSaveBottom);
ASSERT_VALID (pBmpSaveRight);
CBCGPVisualManager::OnDrawMenuShadow (pPaintDC, rectClient, rectExclude,
nDepth, iMinBrightness, iMaxBrightness,
pBmpSaveBottom, pBmpSaveRight);
}
//****************************************************************************************
void CBCGPWinXPVisualManager::OnDrawComboDropButton (CDC* pDC, CRect rect,
BOOL bDisabled,
BOOL bIsDropped,
BOOL bIsHighlighted,
CBCGPToolbarComboBoxButton* pButton)
{
if (m_hThemeComboBox == NULL)
{
CBCGPVisualManagerXP::OnDrawComboDropButton (pDC, rect, bDisabled, bIsDropped, bIsHighlighted, pButton);
return;
}
int nState = bDisabled ? CBXS_DISABLED : bIsDropped ? CBXS_PRESSED : bIsHighlighted ? CBXS_HOT : CBXS_NORMAL;
(*m_pfDrawThemeBackground) (m_hThemeComboBox, pDC->GetSafeHdc(), CP_DROPDOWNBUTTON,
nState, &rect, 0);
}
//*************************************************************************************
void CBCGPWinXPVisualManager::OnDrawComboBorder (CDC* pDC, CRect rect,
BOOL bDisabled,
BOOL bIsDropped,
BOOL bIsHighlighted,
CBCGPToolbarComboBoxButton* pButton)
{
if (m_hThemeWindow == NULL)
{
CBCGPVisualManagerXP::OnDrawComboBorder (pDC, rect, bDisabled, bIsDropped, bIsHighlighted, pButton);
return;
}
if (bIsHighlighted || bIsDropped)
{
rect.DeflateRect (1, 1);
pDC->Draw3dRect (&rect, globalData.clrHilite, globalData.clrHilite);
}
}
//**************************************************************************************
void CBCGPWinXPVisualManager::OnEraseTabsButton (CDC* pDC, CRect rect,
CBCGPButton* pButton,
CBCGPBaseTabWnd* pWndTab)
{
pDC->FillRect (rect, &m_brTabBack);
}
//**************************************************************************************
void CBCGPWinXPVisualManager::OnDrawTabsButtonBorder (CDC* pDC, CRect& rect,
CBCGPButton* pButton, UINT uiState,
CBCGPBaseTabWnd* pWndTab)
{
if (m_hThemeButton == NULL)
{
CBCGPVisualManagerXP::OnDrawTabsButtonBorder (pDC, rect, pButton, uiState, pWndTab);
return;
}
int nState = PBS_NORMAL;
if (!pButton->IsWindowEnabled ())
{
nState = PBS_DISABLED;
}
else if (pButton->IsPressed () || pButton->GetCheck ())
{
nState = PBS_PRESSED;
}
else if (pButton->IsHighlighted ())
{
nState = PBS_HOT;
}
globalData.DrawParentBackground (pButton, pDC, rect);
(*m_pfDrawThemeBackground) (m_hThemeButton, pDC->GetSafeHdc(), BP_PUSHBUTTON,
nState, &rect, 0);
}
//**************************************************************************************
COLORREF CBCGPWinXPVisualManager::OnFillMiniFrameCaption (
CDC* pDC, CRect rectCaption,
CBCGPMiniFrameWnd* pFrameWnd,
BOOL bActive)
{
return CBCGPVisualManager::OnFillMiniFrameCaption (pDC, rectCaption, pFrameWnd, bActive);
}
//**************************************************************************************
void CBCGPWinXPVisualManager::OnDrawMiniFrameBorder (
CDC* pDC, CBCGPMiniFrameWnd* pFrameWnd,
CRect rectBorder, CRect rectBorderSize)
{
CBCGPVisualManager::OnDrawMiniFrameBorder (pDC, pFrameWnd, rectBorder, rectBorderSize);
}
//**************************************************************************************
void CBCGPWinXPVisualManager::OnFillOutlookPageButton (CDC* pDC, const CRect& rectClient,
BOOL bIsHighlighted, BOOL bIsPressed,
COLORREF& clrText)
{
if (m_hThemeButton == NULL)
{
CBCGPVisualManagerXP::OnFillOutlookPageButton (pDC, rectClient, bIsHighlighted, bIsPressed, clrText);
return;
}
int nState = PBS_NORMAL;
if (bIsHighlighted)
{
nState = PBS_PRESSED;
}
else if (bIsPressed)
{
nState = PBS_HOT;
}
CRect rect = rectClient;
rect.InflateRect (1, 1);
(*m_pfDrawThemeBackground) (m_hThemeButton, pDC->GetSafeHdc(), BP_PUSHBUTTON,
nState, &rect, 0);
}
//****************************************************************************************
void CBCGPWinXPVisualManager::OnDrawOutlookPageButtonBorder (CDC* pDC,
CRect& rectBtn, BOOL bIsHighlighted, BOOL bIsPressed)
{
if (m_hThemeButton == NULL)
{
CBCGPVisualManagerXP::OnDrawOutlookPageButtonBorder (pDC, rectBtn, bIsHighlighted, bIsPressed);
}
}
//**************************************************************************************
void CBCGPWinXPVisualManager::OnDrawStatusBarProgress (CDC* pDC, CBCGPStatusBar* pStatusBar,
CRect rectProgress, int nProgressTotal, int nProgressCurr,
COLORREF clrBar, COLORREF clrProgressBarDest, COLORREF clrProgressText,
BOOL bProgressText)
{
if (!DrawStatusBarProgress (pDC, pStatusBar,
rectProgress, nProgressTotal, nProgressCurr,
clrBar, clrProgressBarDest, clrProgressText, bProgressText))
{
CBCGPVisualManagerXP::OnDrawStatusBarProgress (pDC, pStatusBar,
rectProgress, nProgressTotal, nProgressCurr,
clrBar, clrProgressBarDest, clrProgressText, bProgressText);
}
}
//****************************************************************************************
CSize CBCGPWinXPVisualManager::GetButtonExtraBorder () const
{
if (m_hThemeWindow == NULL)
{
return CBCGPVisualManagerXP::GetButtonExtraBorder ();
}
return CSize (2, 2);
}
//****************************************************************************************
CSize CBCGPWinXPVisualManager::GetCaptionButtonExtraBorder () const
{
if (m_hThemeWindow == NULL)
{
return CBCGPVisualManagerXP::GetCaptionButtonExtraBorder ();
}
return CSize (2, 2);
}
//****************************************************************************************
void CBCGPWinXPVisualManager::OnDrawHeaderCtrlBorder (CBCGPHeaderCtrl* pCtrl, CDC* pDC,
CRect& rect, BOOL bIsPressed, BOOL bIsHighlighted)
{
if (m_hThemeHeader == NULL)
{
CBCGPVisualManagerXP::OnDrawHeaderCtrlBorder (pCtrl, pDC, rect, bIsPressed, bIsHighlighted);
return;
}
int nState = HIS_NORMAL;
if (bIsPressed)
{
nState = HIS_PRESSED;
}
else if (bIsHighlighted)
{
nState = HIS_HOT;
}
(*m_pfDrawThemeBackground) (m_hThemeHeader, pDC->GetSafeHdc(),
HP_HEADERITEM, nState, &rect, 0);
}
//*****************************************************************************************
void CBCGPWinXPVisualManager::OnDrawHeaderCtrlSortArrow (CBCGPHeaderCtrl* pCtrl,
CDC* pDC,
CRect& rect, BOOL bIsUp)
{
if (m_hThemeHeader == NULL)
{
CBCGPVisualManagerXP::OnDrawHeaderCtrlSortArrow (pCtrl, pDC, rect, bIsUp);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -