ExplorerTheme.cpp
上传用户:szled88
上传日期:2015-04-09
资源大小:43957k
文件大小:4k
源码类别:

对话框与窗口

开发平台:

Visual C++

  1. // ExplorerTheme.cpp: implementation of the CExplorerTheme class.
  2. //
  3. // This file is a part of the XTREME TOOLKIT PRO MFC class library.
  4. // (c)1998-2008 Codejock Software, All Rights Reserved.
  5. //
  6. // THIS SOURCE FILE IS THE PROPERTY OF CODEJOCK SOFTWARE AND IS NOT TO BE
  7. // RE-DISTRIBUTED BY ANY MEANS WHATSOEVER WITHOUT THE EXPRESSED WRITTEN
  8. // CONSENT OF CODEJOCK SOFTWARE.
  9. //
  10. // THIS SOURCE CODE CAN ONLY BE USED UNDER THE TERMS AND CONDITIONS OUTLINED
  11. // IN THE XTREME TOOLKIT PRO LICENSE AGREEMENT. CODEJOCK SOFTWARE GRANTS TO
  12. // YOU (ONE SOFTWARE DEVELOPER) THE LIMITED RIGHT TO USE THIS SOFTWARE ON A
  13. // SINGLE COMPUTER.
  14. //
  15. // CONTACT INFORMATION:
  16. // support@codejock.com
  17. // http://www.codejock.com
  18. //
  19. /////////////////////////////////////////////////////////////////////////////
  20. #include "stdafx.h"
  21. #include "ExplorerTheme.h"
  22. #ifdef _DEBUG
  23. #undef THIS_FILE
  24. static char THIS_FILE[]=__FILE__;
  25. #define new DEBUG_NEW
  26. #endif
  27. //////////////////////////////////////////////////////////////////////
  28. // Construction/Destruction
  29. //////////////////////////////////////////////////////////////////////
  30. CExplorerTheme::CExplorerTheme()
  31. {
  32. m_bSelectImageInPopupBar = TRUE;
  33. m_bThickCheckMark = TRUE;
  34. RefreshMetrics();
  35. }
  36. CExplorerTheme::~CExplorerTheme()
  37. {
  38. }
  39. void CExplorerTheme::RefreshMetrics()
  40. {
  41. CXTPNativeXPTheme::RefreshMetrics();
  42. m_bLunaTheme = FALSE;
  43. switch (XTPColorManager()->GetCurrentSystemTheme())
  44. {
  45. case xtpSystemThemeBlue:
  46. m_clrPopupBarBorder = RGB(64, 134, 228);
  47. m_clrPopupBarGripperShadow = RGB(136, 181, 237);
  48. m_bLunaTheme = TRUE;
  49. break;
  50. case xtpSystemThemeOlive:
  51. m_clrPopupBarBorder = RGB(142, 152, 102);
  52. m_clrPopupBarGripperShadow = RGB(181, 187, 159);
  53. m_bLunaTheme = TRUE;
  54. break;
  55. case xtpSystemThemeSilver:
  56. m_clrPopupBarBorder = RGB(166, 167, 193);
  57. m_clrPopupBarGripperShadow = RGB(226, 226, 225);
  58. m_bLunaTheme = TRUE;
  59. break;
  60. }
  61. }
  62. CRect CExplorerTheme::GetCommandBarBorders(CXTPCommandBar* pBar)
  63. {
  64. if (m_bLunaTheme)
  65. {
  66. if (pBar->GetType() == xtpBarTypePopup)
  67. return CRect(6, 1, 1, 1);
  68. if (pBar->GetType() == xtpBarTypeMenuBar)
  69. return CRect(1, 0, 1, 1);
  70. }
  71. return CXTPNativeXPTheme::GetCommandBarBorders(pBar);
  72. }
  73. void CExplorerTheme::FillCommandBarEntry(CDC* pDC, CXTPCommandBar* pBar)
  74. {
  75. if (pBar->GetPosition() == xtpBarPopup && m_bLunaTheme)
  76. {
  77. CRect rc;
  78. pBar->GetClientRect(&rc);
  79. pDC->FillSolidRect(rc, GetXtremeColor(COLOR_MENU));
  80. pDC->Draw3dRect(rc, m_clrPopupBarBorder,  m_clrPopupBarBorder);
  81. if (pBar->GetType() == xtpBarTypePopup)
  82. {
  83. pDC->FillSolidRect(rc.left, rc.top, 6, rc.Height(), m_clrPopupBarBorder);
  84. pDC->FillSolidRect(rc.left + 1, rc.top + 1, 1, rc.Height() - 2, m_clrPopupBarGripperShadow);
  85. }
  86. }
  87. else
  88. {
  89. CXTPNativeXPTheme::FillCommandBarEntry(pDC, pBar);
  90. }
  91. }
  92. void CExplorerTheme::AdjustExcludeRect(CRect& rc, CXTPControl* pControl, BOOL bVertical)
  93. {
  94. if (!m_bLunaTheme)
  95. {
  96. CXTPNativeXPTheme::AdjustExcludeRect(rc, pControl, bVertical);
  97. }
  98. }
  99. COLORREF CExplorerTheme::GetControlTextColor(CXTPControl* pButton)
  100. {
  101. if (m_bLunaTheme && pButton->GetType() == xtpControlPopup && pButton->GetParent()->GetType() == xtpBarTypeMenuBar)
  102. {
  103. return pButton->GetSelected()? GetXtremeColor(COLOR_HIGHLIGHTTEXT): GetXtremeColor(COLOR_BTNTEXT);
  104. }
  105. return CXTPNativeXPTheme::GetControlTextColor(pButton);
  106. }
  107. void CExplorerTheme::DrawControlEntry(CDC* pDC, CXTPControl* pButton)
  108. {
  109. if (m_bLunaTheme && pButton->GetType() == xtpControlPopup && pButton->GetParent()->GetType() == xtpBarTypeMenuBar)
  110. {
  111. pDC->SetBkMode(TRANSPARENT);
  112. if (pButton->GetSelected())
  113. pDC->FillSolidRect(pButton->GetRect(), GetXtremeColor(COLOR_HIGHLIGHT));
  114. }
  115. else
  116. {
  117. CXTPNativeXPTheme::DrawControlEntry(pDC, pButton);
  118. }
  119. }