XTPNativeXPTheme.cpp
上传用户:szled88
上传日期:2015-04-09
资源大小:43957k
文件大小:18k
- // XTPNativeXPTheme.cpp : implementation of the CXTPNativeXPTheme class.
- //
- // This file is a part of the XTREME COMMANDBARS MFC class library.
- // (c)1998-2008 Codejock Software, All Rights Reserved.
- //
- // THIS SOURCE FILE IS THE PROPERTY OF CODEJOCK SOFTWARE AND IS NOT TO BE
- // RE-DISTRIBUTED BY ANY MEANS WHATSOEVER WITHOUT THE EXPRESSED WRITTEN
- // CONSENT OF CODEJOCK SOFTWARE.
- //
- // THIS SOURCE CODE CAN ONLY BE USED UNDER THE TERMS AND CONDITIONS OUTLINED
- // IN THE XTREME TOOLKIT PRO LICENSE AGREEMENT. CODEJOCK SOFTWARE GRANTS TO
- // YOU (ONE SOFTWARE DEVELOPER) THE LIMITED RIGHT TO USE THIS SOFTWARE ON A
- // SINGLE COMPUTER.
- //
- // CONTACT INFORMATION:
- // support@codejock.com
- // http://www.codejock.com
- //
- /////////////////////////////////////////////////////////////////////////////
- #include "stdafx.h"
- #include "Common/XTPImageManager.h"
- #include "Common/XTPDrawHelpers.h"
- #include "XTPPaintManager.h"
- #include "XTPControlButton.h"
- #include "XTPControlPopup.h"
- #include "Common/XTPColorManager.h"
- #include "XTPToolBar.h"
- #include "XTPPopupBar.h"
- #include "XTPControlComboBox.h"
- #include "XTPDockBar.h"
- #include "XTPControlEdit.h"
- #define COLOR_MENUHILIGHT 29
- #ifdef _DEBUG
- #define new DEBUG_NEW
- #undef THIS_FILE
- static char THIS_FILE[] = __FILE__;
- #endif
- #ifndef SPI_GETFLATMENU
- #define SPI_GETFLATMENU 0x1022
- #endif
- #ifndef __VSSTYLE_H__
- enum VISTAMENUPARTS
- {
- MENU_MENUITEM_TMSCHEMA = 1,
- MENU_MENUDROPDOWN_TMSCHEMA = 2,
- MENU_MENUBARITEM_TMSCHEMA = 3,
- MENU_MENUBARDROPDOWN_TMSCHEMA = 4,
- MENU_CHEVRON_TMSCHEMA = 5,
- MENU_SEPARATOR_TMSCHEMA = 6,
- MENU_BARBACKGROUND = 7,
- MENU_BARITEM = 8,
- MENU_POPUPBACKGROUND = 9,
- MENU_POPUPBORDERS = 10,
- MENU_POPUPCHECK = 11,
- MENU_POPUPCHECKBACKGROUND = 12,
- MENU_POPUPGUTTER = 13,
- MENU_POPUPITEM = 14,
- MENU_POPUPSEPARATOR = 15,
- MENU_POPUPSUBMENU = 16,
- MENU_SYSTEMCLOSE = 17,
- MENU_SYSTEMMAXIMIZE = 18,
- MENU_SYSTEMMINIMIZE = 19,
- MENU_SYSTEMRESTORE = 20,
- };
- #endif
- CXTPNativeXPTheme::CXTPNativeXPTheme()
- {
- m_iconsInfo.bUseFadedIcons = TRUE;
- m_iconsInfo.bIconsWithShadow = FALSE;
- m_nPopupBarText = COLOR_MENUTEXT;
- m_bFlatMenus = TRUE;
- m_bThemedStatusBar = TRUE;
- m_bThemedCheckBox = TRUE;
- m_bSelectImageInPopupBar = TRUE;
- m_bThickCheckMark = TRUE;
- }
- CXTPNativeXPTheme::~CXTPNativeXPTheme()
- {
- }
- void CXTPNativeXPTheme::RefreshMetrics()
- {
- CXTPDefaultTheme::RefreshMetrics();
- HWND hWnd = AfxGetMainWnd() ? AfxGetMainWnd()->GetSafeHwnd() : 0;
- m_themeToolbar.OpenThemeData(hWnd, L"TOOLBAR");
- m_themeRebar.OpenThemeData(hWnd, L"REBAR");
- m_themeCombo.OpenThemeData(hWnd, L"COMBOBOX");
- m_themeWindow.OpenThemeData(hWnd, L"WINDOW");
- m_themeSpin.OpenThemeData(hWnd, L"SPIN");
- m_themeMenu.OpenThemeData(hWnd, L"MENU");
- m_bFlatMenus = TRUE;
- if (!SystemParametersInfo(SPI_GETFLATMENU, 0, &m_bFlatMenus, 0))
- {
- m_bFlatMenus = FALSE;
- }
- if (!m_themeRebar.IsAppThemed() || FAILED(m_themeRebar.GetThemeColor(RP_BAND, 0, TMT_EDGESHADOWCOLOR, &m_clrEdgeShadowColor)))
- m_clrEdgeShadowColor = GetXtremeColor(COLOR_3DSHADOW);
- if (!m_themeRebar.IsAppThemed() || FAILED(m_themeRebar.GetThemeColor(RP_BAND, 0, TMT_EDGEHIGHLIGHTCOLOR, &m_clrEdgeHighLightColor)))
- m_clrEdgeHighLightColor = GetXtremeColor(COLOR_BTNHILIGHT);
- COLORREF clr;
- if (m_themeToolbar.IsAppThemed() && SUCCEEDED(m_themeToolbar.GetThemeColor(0, 0, TMT_TEXTCOLOR, &clr)))
- m_arrColor[COLOR_BTNTEXT].SetStandardValue(clr);
- if (!m_bFlatMenus && m_themeRebar.IsAppThemed())
- {
- m_bFlatMenus = m_themeRebar.GetThemeSysBool(TMT_FLATMENUS);
- }
- if (!m_bFlatMenus)
- {
- m_arrColor[COLOR_MENUHILIGHT].SetStandardValue(m_arrColor[COLOR_HIGHLIGHT]);
- }
- }
- void CXTPNativeXPTheme::DrawControlEntry(CDC* pDC, CXTPControl* pButton)
- {
- CXTPCommandBar* pParent = pButton->GetParent();
- if (!IsThemeEnabled() || !pParent)
- {
- CXTPDefaultTheme::DrawControlEntry(pDC, pButton);
- return;
- }
- if (pButton->GetType() == xtpControlPopup && pParent->GetPosition() != xtpBarPopup && IsFlatToolBar(pParent) && pParent->GetType() == xtpBarTypeMenuBar)
- {
- if (pButton->GetSelected() || pButton->GetPopuped() || pButton->GetPressed())
- {
- pDC->FillSolidRect(pButton->GetRect(), GetXtremeColor(COLOR_HIGHLIGHT));
- }
- }
- else
- {
- CXTPDefaultTheme::DrawControlEntry(pDC, pButton);
- }
- }
- COLORREF CXTPNativeXPTheme::GetControlTextColor(CXTPControl* pButton)
- {
- CXTPCommandBar* pParent = pButton->GetParent();
- if (!IsThemeEnabled() || !pParent)
- return CXTPDefaultTheme::GetControlTextColor(pButton);
- if (pButton->GetType() == xtpControlPopup && pParent->GetPosition() != xtpBarPopup && IsFlatToolBar(pParent) && pParent->GetType() == xtpBarTypeMenuBar)
- {
- if (pButton->GetSelected() || pButton->GetPopuped() || pButton->GetPressed())
- {
- return GetXtremeColor(COLOR_HIGHLIGHTTEXT);
- }
- }
- return CXTPDefaultTheme::GetControlTextColor(pButton);
- }
- void CXTPNativeXPTheme::DrawRectangle(CDC* pDC, CRect rc, BOOL bSelected, BOOL bPressed, BOOL bEnabled , BOOL bChecked , BOOL bPopuped, XTPBarType barType, XTPBarPosition barPosition /*= xtpBarPopup*/)
- {
- if (!IsThemeEnabled())
- {
- CXTPDefaultTheme::DrawRectangle(pDC, rc, bSelected, bPressed, bEnabled , bChecked , bPopuped, barType, barPosition);
- return;
- }
- if (barType == xtpBarTypePopup && !bChecked)
- {
- if (bSelected || bPressed)
- {
- if (m_themeMenu.IsAppThemed())
- {
- m_themeMenu.DrawBackground(pDC->GetSafeHdc(), MENU_POPUPITEM, 2, rc, NULL);
- }
- else
- {
- Rectangle(pDC, rc, COLOR_HIGHLIGHT, COLOR_MENUHILIGHT);
- }
- }
- return;
- }
- if (m_bSelectImageInPopupBar && barPosition == xtpBarPopup && barType == xtpBarTypePopup && bChecked && m_themeMenu.IsAppThemed())
- {
- m_themeMenu.DrawBackground(pDC->GetSafeHdc(), MENU_POPUPCHECKBACKGROUND, bEnabled ? 2 : 1, rc, NULL);
- return;
- }
- if (bChecked == 2 && bEnabled)
- bChecked = FALSE;
- int nState = !bEnabled ? (bChecked ? TS_PRESSED : TS_DISABLED) :
- bPopuped ? TS_PRESSED :
- bChecked && !bPressed ? (bSelected ? TS_HOTCHECKED : TS_CHECKED) :
- bSelected && bPressed || IsKeyboardSelected(bPressed) ? TS_PRESSED :
- bSelected ? TS_HOT : TS_NORMAL;
- m_themeToolbar.DrawThemeBackground(pDC->GetSafeHdc(), TP_BUTTON, nState, &rc, 0);
- }
- void CXTPNativeXPTheme::DrawPopupBarRadioMark(CDC* pDC, CRect rc, BOOL bEnabled, COLORREF clr)
- {
- if (m_themeMenu.IsAppThemed())
- {
- m_themeMenu.DrawThemeBackground(pDC->GetSafeHdc(), MENU_POPUPCHECK, bEnabled ? 3 : 4, rc, NULL);
- }
- else
- {
- CXTPDefaultTheme::DrawPopupBarRadioMark(pDC, rc, bEnabled, clr);
- }
- }
- void CXTPNativeXPTheme::DrawPopupBarCheckMark(CDC* pDC, CRect rc, BOOL bEnabled, COLORREF clr)
- {
- if (m_themeMenu.IsAppThemed())
- {
- m_themeMenu.DrawThemeBackground(pDC->GetSafeHdc(), MENU_POPUPCHECK, bEnabled ? 1 : 2, rc, NULL);
- }
- else
- {
- CXTPDefaultTheme::DrawPopupBarCheckMark(pDC, rc, bEnabled, clr);
- }
- }
- int CXTPNativeXPTheme::GetPopupBarGripperWidth(CXTPCommandBar* pBar)
- {
- int nWidth = CXTPDefaultTheme::GetPopupBarGripperWidth(pBar);
- if (m_themeMenu.IsAppThemed()) nWidth += 3;
- return nWidth;
- }
- void CXTPNativeXPTheme::FillCommandBarEntry(CDC* pDC, CXTPCommandBar* pBar)
- {
- if (!IsThemeEnabled())
- {
- CXTPDefaultTheme::FillCommandBarEntry(pDC, pBar);
- return;
- }
- CRect rc;
- pBar->GetClientRect(&rc);
- if (pBar->GetPosition() == xtpBarPopup)
- {
- if (m_themeMenu.IsAppThemed())
- {
- if (SUCCEEDED(m_themeMenu.DrawThemeBackground(pDC->GetSafeHdc(), MENU_POPUPBORDERS, 0, &rc, NULL)))
- {
- rc.DeflateRect(3, 3);
- m_themeMenu.DrawThemeBackground(pDC->GetSafeHdc(), MENU_POPUPBACKGROUND, 0, &rc, NULL);
- return;
- }
- }
- if (m_bFlatMenus)
- {
- Rectangle(pDC, rc, COLOR_3DSHADOW, COLOR_MENU);
- }
- else
- {
- pDC->FillSolidRect(rc, GetXtremeColor(COLOR_MENU));
- Draw3dRect(pDC, rc, COLOR_3DFACE, COLOR_3DDKSHADOW);
- rc.DeflateRect(1, 1);
- Draw3dRect(pDC, rc, COLOR_BTNHILIGHT, COLOR_3DSHADOW);
- }
- }
- else if (pBar->GetPosition() == xtpBarFloating)
- {
- if (pBar->IsDialogBar())
- {
- CXTPDefaultTheme::FillCommandBarEntry(pDC, pBar);
- return;
- }
- if (pBar->GetType() == xtpBarTypePopup)
- pDC->FillSolidRect(rc, GetXtremeColor(COLOR_MENU));
- else
- {
- pDC->FillSolidRect(rc, GetXtremeColor(pBar->GetType() == xtpBarTypePopup ? COLOR_MENU : COLOR_3DFACE));
- m_themeToolbar.DrawThemeBackground(pDC->GetSafeHdc(), 0, 0, &rc, NULL);
- }
- m_themeWindow.DrawThemeBackground(pDC->GetSafeHdc(), WP_SMALLFRAMELEFT, CS_ACTIVE, CRect(rc.left, rc.top, rc.left + 3, rc.bottom), 0);
- m_themeWindow.DrawThemeBackground(pDC->GetSafeHdc(), WP_SMALLFRAMERIGHT, CS_ACTIVE, CRect(rc.right - 3, rc.top, rc.right, rc.bottom), 0);
- m_themeWindow.DrawThemeBackground(pDC->GetSafeHdc(), WP_SMALLFRAMEBOTTOM, CS_ACTIVE, CRect(rc.left, rc.bottom - 3, rc.right, rc.bottom), 0);
- }
- else
- {
- if (pBar->GetPosition() == xtpBarTop)
- FillDockBarRect(pDC, pBar, pBar->GetParent());
- else pDC->FillSolidRect(rc, GetXtremeColor(COLOR_3DFACE));
- m_themeRebar.DrawThemeBackground(pDC->GetSafeHdc(), RP_BAND, 0, &rc, NULL);
- if (!IsFlatToolBar(pBar))
- {
- pDC->Draw3dRect(rc, m_clrEdgeHighLightColor, m_clrEdgeShadowColor);
- }
- }
- }
- void CXTPNativeXPTheme::FillDockBarRect(CDC* pDC, CWnd* pWnd, CWnd* pParent)
- {
- if (IsThemeEnabled())
- {
- CRect rc, rcParent, rcClient, rcClipRect;
- pWnd->GetClientRect(&rcClient);
- rcClipRect = rcClient;
- if (pParent)
- {
- pParent->GetWindowRect(rcClient);
- pWnd->ScreenToClient(rcClient);
- }
- m_themeRebar.DrawThemeBackground(pDC->GetSafeHdc(), 0, 0, &rcClient, &rcClipRect);
- }
- else
- pDC->FillSolidRect(CXTPClientRect(pWnd), GetXtremeColor(COLOR_3DFACE));
- }
- void CXTPNativeXPTheme::FillDockBar(CDC* pDC, CXTPDockBar* pBar)
- {
- if (pBar->GetPosition() == xtpBarTop)
- FillDockBarRect(pDC, pBar, pBar);
- else pDC->FillSolidRect(CXTPClientRect(pBar), GetXtremeColor(COLOR_3DFACE));
- }
- CSize CXTPNativeXPTheme::DrawDialogBarGripper(CDC* pDC, CXTPDialogBar* pBar, BOOL bDraw)
- {
- if (!IsThemeEnabled())
- {
- return CXTPDefaultTheme::DrawDialogBarGripper(pDC, pBar, bDraw);
- }
- CSize sz(8, max(22, m_nTextHeight + 4));
- if (pDC && bDraw)
- {
- CRect rc(2, 3, 8, sz.cy);
- m_themeRebar.DrawThemeBackground(pDC->GetSafeHdc(), RP_GRIPPER , 1, &rc, 0);
- }
- return sz;
- }
- BOOL CXTPNativeXPTheme::IsThemeEnabled() const
- {
- return m_themeRebar.IsAppThemed() && m_themeToolbar.IsAppThemed();
- }
- CSize CXTPNativeXPTheme::DrawCommandBarSeparator(CDC* pDC, CXTPCommandBar* pBar, CXTPControl* pControl, BOOL bDraw)
- {
- if (!IsThemeEnabled() || !bDraw)
- {
- return CXTPDefaultTheme::DrawCommandBarSeparator(pDC, pBar, pControl, bDraw);
- }
- CRect rc;
- pBar->GetClientRect(&rc);
- CRect rcControl = pControl->GetRect();
- if (pBar->GetType() == xtpBarTypePopup)
- {
- if (pBar->GetPosition() == xtpBarPopup && m_themeMenu.IsAppThemed() && !pControl->GetWrap())
- {
- m_themeMenu.DrawThemeBackground(pDC->GetSafeHdc(), MENU_POPUPSEPARATOR, 0, CRect(rcControl.left + GetPopupBarGripperWidth(pControl->GetParent()), rcControl.top - 8, rcControl.right, rcControl.top - 2), NULL);
- return 0;
- }
- else
- {
- return CXTPDefaultTheme::DrawCommandBarSeparator(pDC, pBar, pControl, bDraw);
- }
- }
- CRect rcRow = pControl->GetRowRect();
- if (IsVerticalPosition(pBar->GetPosition()))
- {
- if (!pControl->GetWrap())
- m_themeToolbar.DrawThemeBackground(pDC->GetSafeHdc(), TP_SEPARATORVERT, 0, CRect(rcRow.left, rcControl.top - 6, rcRow.right, rcControl.top), NULL);
- else
- m_themeToolbar.DrawThemeBackground(pDC->GetSafeHdc(), TP_SEPARATOR, 0, CRect(rcRow.right, rcRow.top + 4, rcRow.right + 5, rcRow.bottom), NULL);
- }
- else
- {
- if (!pControl->GetWrap())
- m_themeToolbar.DrawThemeBackground(pDC->GetSafeHdc(), TP_SEPARATOR, 0, CRect(rcControl.left - 6, rcRow.top, rcControl.left, rcRow.bottom), NULL);
- else
- m_themeToolbar.DrawThemeBackground(pDC->GetSafeHdc(), TP_SEPARATORVERT, 0, CRect(rcRow.left + 4, rcRow.top - 5, rcRow.right, rcRow.top), NULL);
- }
- return 0;
- }
- void CXTPNativeXPTheme::DrawPopupBarGripper(CDC* pDC, int x, int y, int cx, int cy, BOOL /*bExpanded*/)
- {
- if (m_themeMenu.IsAppThemed())
- {
- CRect rc(CPoint(x, y), CSize(cx, cy));
- m_themeMenu.DrawThemeBackground(pDC->GetSafeHdc(), MENU_POPUPGUTTER, 0, &rc, NULL);
- }
- }
- CSize CXTPNativeXPTheme::DrawCommandBarGripper(CDC* pDC, CXTPCommandBar* pBar, BOOL bDraw)
- {
- if (!IsThemeEnabled())
- {
- return CXTPDefaultTheme::DrawCommandBarGripper(pDC, pBar, bDraw);
- }
- if (pBar->IsDialogBar())
- return DrawDialogBarGripper(pDC, (CXTPDialogBar*)pBar, bDraw);
- CRect rc;
- pBar->GetClientRect(&rc);
- if (pBar->GetType() == xtpBarTypePopup && pBar->GetPosition() == xtpBarPopup && m_themeMenu.IsAppThemed())
- {
- rc.DeflateRect(3, 3);
- rc.right = rc.left + GetPopupBarGripperWidth(pBar);
- m_themeMenu.DrawThemeBackground(pDC->GetSafeHdc(), MENU_POPUPGUTTER, 0, &rc, NULL);
- }
- else if (pBar->GetPosition() == xtpBarFloating)
- {
- ASSERT(pDC);
- if (!pDC)
- return CSize(0, 0);
- CXTPFontDC font(pDC, GetSmCaptionFont());
- CSize sz = pDC->GetTextExtent(_T(" "), 1);
- rc.SetRect(0, 0, rc.right, 3 + max(15, sz.cy));
- if (pDC && bDraw)
- {
- m_themeWindow.DrawThemeBackground(pDC->GetSafeHdc(), WP_SMALLCAPTION, CS_ACTIVE, rc, 0);
- pDC->SetBkMode(TRANSPARENT);
- pDC->SetTextColor(m_clrFloatingGripperText);
- pDC->DrawText(pBar->GetTitle(), CRect(5, 3, rc.right + 3 - 2 * rc.Size().cy, rc.bottom), DT_SINGLELINE | DT_VCENTER | DT_NOPREFIX);
- }
- return CSize(rc.Width(), max(15, sz.cy));
- }
- else if (pBar->GetPosition() == xtpBarRight || pBar->GetPosition() == xtpBarLeft)
- {
- if (pDC && bDraw)
- {
- rc.top += 2;
- rc.bottom = rc.top + 6;
- m_themeRebar.DrawThemeBackground(pDC->GetSafeHdc(), RP_GRIPPERVERT , 1, &rc, 0);
- }
- return CSize(0, 8);
- }
- else if (pBar->GetPosition() == xtpBarTop || pBar->GetPosition() == xtpBarBottom)
- {
- if (pDC && bDraw)
- {
- rc.left += 2;
- rc.right = rc.left + 6;
- m_themeRebar.DrawThemeBackground(pDC->GetSafeHdc(), RP_GRIPPER , 1, &rc, 0);
- }
- return CSize(8, 0);
- }
- return 0;
- }
- void CXTPNativeXPTheme::AdjustExcludeRect(CRect& rc, CXTPControl* pControl, BOOL bVertical)
- {
- if (!IsThemeEnabled())
- {
- CXTPDefaultTheme::AdjustExcludeRect(rc, pControl, bVertical);
- return;
- }
- CXTPCommandBar* pParent = pControl->GetParent();
- ASSERT(pParent);
- if (!pParent)
- return;
- if (pControl->GetType() == xtpControlComboBox) return;
- if (pParent->GetType() != xtpBarTypePopup)
- {
- if (bVertical)
- rc.DeflateRect(0, 0);
- else
- rc.DeflateRect(0, 0);
- }
- else
- rc.InflateRect(-3, 3);
- }
- void CXTPNativeXPTheme::DrawSplitButtonFrame(CDC* pDC, CXTPControl* pButton, CRect rcButton)
- {
- if (!IsThemeEnabled())
- {
- CXTPDefaultTheme::DrawSplitButtonFrame(pDC, pButton, rcButton);
- return;
- }
- BOOL bPressed = pButton->GetPressed(), bSelected = pButton->GetSelected(), bEnabled = pButton->GetEnabled(), bChecked = pButton->GetChecked(),
- bPopuped = pButton->GetPopuped();
- UINT nState = !bEnabled ? TS_DISABLED :
- bPressed && bSelected ? TS_PRESSED :
- bChecked ? TS_CHECKED :
- bPopuped || bSelected ? TS_HOT : TS_NORMAL;
- CRect rc(rcButton.left, rcButton.top, rcButton.right - 12, rcButton.bottom);
- m_themeToolbar.DrawThemeBackground(pDC->GetSafeHdc(), TP_SPLITBUTTON, nState, &rc, 0);
- nState = bPopuped ? TS_PRESSED : nState;
- if (bEnabled == TRUE_SPLITCOMMAND) nState = TS_DISABLED;
- CRect rcArrow(rcButton.right - 12, rcButton.top, rcButton.right, rcButton.bottom);
- m_themeToolbar.DrawThemeBackground(pDC->GetSafeHdc(), TP_SPLITBUTTONDROPDOWN, nState, &rcArrow, 0);
- }
- void CXTPNativeXPTheme::DrawControlEditSpin(CDC* pDC, CXTPControlEdit* pControlEdit)
- {
- if (!IsThemeEnabled())
- {
- CXTPDefaultTheme::DrawControlEditSpin(pDC, pControlEdit);
- return;
- }
- BOOL bPressed = pControlEdit->GetPressed();
- BOOL bEnabled = pControlEdit->GetEnabled();
- BOOL bSelected = pControlEdit->GetSelected();
- CRect rcSpin(pControlEdit->GetSpinButtonsRect());
- CRect rcTop(rcSpin.left, rcSpin.top, rcSpin.right, rcSpin.CenterPoint().y);
- CRect rcBottom(rcSpin.left, rcTop.bottom, rcSpin.right, rcSpin.bottom);
- m_themeSpin.DrawBackground(pDC->GetSafeHdc(), SPNP_UP,
- !bEnabled ? UPS_DISABLED : bSelected && bPressed == XTP_EDITSPIN_UP ? UPS_PRESSED :
- bSelected == XTP_EDITSPIN_UP ? UPS_HOT : UPS_NORMAL, rcTop, 0);
- m_themeSpin.DrawBackground(pDC->GetSafeHdc(), SPNP_DOWN,
- !bEnabled ? DNS_DISABLED : bSelected && bPressed == XTP_EDITSPIN_DOWN ? DNS_PRESSED :
- bSelected == XTP_EDITSPIN_DOWN ? DNS_HOT : DNS_NORMAL, rcBottom, 0);
- }
- void CXTPNativeXPTheme::DrawControlEditFrame(CDC* pDC, CRect rc, BOOL bEnabled, BOOL bSelected)
- {
- if (!m_themeCombo.IsAppThemed())
- {
- CXTPDefaultTheme::DrawControlEditFrame(pDC, rc, bEnabled, bSelected);
- return;
- }
- int nStateID = !bEnabled ? CBXS_DISABLED : CBXS_NORMAL;
- COLORREF clrFrame = GetXtremeColor(COLOR_3DSHADOW);
- m_themeCombo.GetThemeColor(CP_DROPDOWNBUTTON, nStateID, TMT_BORDERCOLOR, &clrFrame);
- Draw3dRect(pDC, rc, clrFrame, clrFrame);
- }
- void CXTPNativeXPTheme::DrawControlComboBoxButton(CDC* pDC, CRect rcBtn, BOOL bEnabled, BOOL bSelected, BOOL bDropped)
- {
- if (!m_themeCombo.IsAppThemed())
- {
- CXTPDefaultTheme::DrawControlComboBoxButton(pDC, rcBtn, bEnabled, bSelected, bDropped);
- return;
- }
- int nStateID = !bEnabled ? CBXS_DISABLED :
- bDropped ? CBXS_PRESSED: bSelected ? CBXS_HOT : CBXS_NORMAL;
- rcBtn.DeflateRect(-2, 1, 1, 1);
- m_themeCombo.DrawThemeBackground(pDC->GetSafeHdc(), CP_DROPDOWNBUTTON, nStateID, &rcBtn, 0);
- }
- CSize CXTPNativeXPTheme::DrawSpecialControl(CDC* pDC, XTPSpecialControl controlType, CXTPControl* pButton, CXTPCommandBar* pBar, BOOL bDraw, LPVOID lpParam)
- {
- if ((controlType == xtpButtonExpandFloating || controlType == xtpButtonHideFloating)
- && m_themeToolbar.IsAppThemed())
- {
- return CXTPPaintManager::DrawSpecialControl(pDC, controlType, pButton, pBar, bDraw, lpParam);
- }
- return CXTPDefaultTheme::DrawSpecialControl(pDC, controlType, pButton, pBar, bDraw, lpParam);
- }
- COLORREF CXTPNativeXPTheme::GetRectangleTextColor(BOOL bSelected, BOOL bPressed, BOOL bEnabled, BOOL bChecked, BOOL bPopuped, XTPBarType barType, XTPBarPosition barPosition)
- {
- if (barType == xtpBarTypePopup && barPosition == xtpBarPopup && m_themeMenu.IsAppThemed())
- {
- return GetXtremeColor(!bEnabled ? COLOR_GRAYTEXT: m_nPopupBarText);
- }
- return CXTPDefaultTheme::GetRectangleTextColor(bSelected, bPressed, bEnabled, bChecked, bPopuped, barType, barPosition);
- }