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

对话框与窗口

开发平台:

Visual C++

  1. // SlidersTheme.cpp: implementation of the CSlidersTheme 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 "taskpanel.h"
  22. #include "SlidersTheme.h"
  23. #ifdef _DEBUG
  24. #undef THIS_FILE
  25. static char THIS_FILE[]=__FILE__;
  26. #define new DEBUG_NEW
  27. #endif
  28. //////////////////////////////////////////////////////////////////////
  29. // Construction/Destruction
  30. //////////////////////////////////////////////////////////////////////
  31. CSlidersTheme::CSlidersTheme()
  32. {
  33. m_rcControlMargins = CRect(0, 0, 0, 0);
  34. m_nGroupSpacing = 0;
  35. RefreshMetrics();
  36. }
  37. CSlidersTheme::~CSlidersTheme()
  38. {
  39. }
  40. void CSlidersTheme::RefreshMetrics()
  41. {
  42. CXTPTaskPanelPaintManagerPlain::RefreshMetrics();
  43. m_eGripper = xtpTaskPanelGripperTriangle;
  44. m_clrBackground.SetStandardValue(GetXtremeColor(COLOR_WINDOW));
  45. m_groupNormal.clrClient.SetStandardValue(GetXtremeColor(COLOR_WINDOW));
  46. m_groupNormal.clrClientBorder.SetStandardValue(GetXtremeColor(COLOR_BTNTEXT));
  47. m_groupNormal.clrClientLink.SetStandardValue(GetXtremeColor(COLOR_BTNTEXT));
  48. m_groupNormal.clrClientLinkHot.SetStandardValue(GetXtremeColor(COLOR_HIGHLIGHT));
  49. m_bRoundedFrame = FALSE;
  50. m_fntCaption.DeleteObject();
  51. LOGFONT lfIcon;
  52. ::ZeroMemory(&lfIcon, sizeof(LOGFONT));
  53. VERIFY(::SystemParametersInfo(SPI_GETICONTITLELOGFONT,sizeof(LOGFONT), &lfIcon, 0));
  54. lfIcon.lfWeight = FW_NORMAL;
  55. m_fntCaption.CreateFontIndirect(&lfIcon);
  56. }
  57. CRect CSlidersTheme::DrawCaptionGripper(CDC* pDC, CXTPTaskPanelGroup* pGroup, CRect rc)
  58. {
  59. XTPDrawHelpers()->GradientFill(pDC, rc, RGB(177, 195, 217), RGB(204, 216, 230), FALSE);
  60. pDC->FillSolidRect(rc.left, rc.top, rc.Width(), 1, RGB(107, 118, 131));
  61. pDC->FillSolidRect(rc.left, rc.top + 1, rc.Width(), 1, RGB(235, 240, 245));
  62. pDC->FillSolidRect(rc.left, rc.bottom - 2, rc.Width(), 1, RGB(227, 233, 241));
  63. pDC->FillSolidRect(rc.left, rc.bottom - 1, rc.Width(), 1, RGB(203, 209, 217));
  64. for (int i = 0; i < 5; i++)
  65. {
  66. pDC->SetPixel(rc.left + 4, rc.CenterPoint().y - 5 + i * 2, RGB(89, 98, 109));
  67. pDC->SetPixel(rc.left + 5, rc.CenterPoint().y - 5 + i * 2 + 1, RGB(222, 237, 255));
  68. pDC->SetPixel(rc.left + 4 + 3, rc.CenterPoint().y - 5 + i * 2, RGB(89, 98, 109));
  69. pDC->SetPixel(rc.left + 5 + 3, rc.CenterPoint().y - 5 + i * 2 + 1, RGB(222, 237, 255));
  70. }
  71. if (pGroup->IsExpandable())
  72. {
  73. COLORREF clr =  m_groupNormal.clrClientText;
  74. CPoint pt(rc.left + 14, rc.CenterPoint().y);
  75. if (pGroup->IsExpanded())
  76. CXTPDrawHelpers::Triangle(pDC, CPoint(pt.x, pt.y - 2), CPoint(pt.x + 8, pt.y - 2), CPoint(pt.x + 4, pt.y + 4 - 2), clr);
  77. else
  78. CXTPDrawHelpers::Triangle(pDC, CPoint(pt.x + 3, pt.y - 4), CPoint(pt.x + 3 + 4, pt.y), CPoint(pt.x + 3, pt.y + 4), clr);
  79. }
  80. rc.left += 14;
  81. return rc;
  82. }
  83. int CSlidersTheme::DrawGroupCaption(CDC* pDC, CXTPTaskPanelGroup* pGroup, BOOL bDraw)
  84. {
  85. CXTPFontDC fnt(pDC, &m_fntCaption);
  86. if (bDraw)
  87. {
  88. CRect rc = pGroup->GetCaptionRect();
  89. if (rc.IsRectEmpty())
  90. return 0;
  91. XTP_TASKPANEL_GROUPCOLORS& groupColors =  m_groupNormal;
  92. if (pGroup->IsCaptionVisible())
  93. {
  94. //CRect rcText(rc);
  95. CRect rcText = DrawCaptionGripper(pDC, pGroup, rc);
  96. rcText.DeflateRect(13, 5, 13, 0);
  97. pDC->SetBkMode(TRANSPARENT);
  98. pDC->SetTextColor(!pGroup->GetEnabled()? GetXtremeColor(COLOR_GRAYTEXT): groupColors.clrClientText);
  99. pDC->DrawText(pGroup->GetCaption(), rcText, DT_WORDBREAK|DT_LEFT);
  100. if (pGroup->IsItemFocused())
  101. {
  102. pDC->SetTextColor(groupColors.clrClientText);
  103. pDC->DrawText(pGroup->GetCaption(), rcText, DT_WORDBREAK|DT_LEFT|DT_CALCRECT);
  104. pDC->DrawFocusRect(rcText);
  105. }
  106. }
  107. return 0;
  108. }
  109. else
  110. {
  111. CRect rcText(pGroup->GetTargetClientRect());
  112. rcText.DeflateRect(13 + 14, 0, 13, 0);
  113. rcText.top = rcText.bottom = 0;
  114. pDC->DrawText(pGroup->GetCaption(), rcText, DT_WORDBREAK|DT_LEFT|DT_CALCRECT);
  115. return rcText.Height() + 5 + 5;
  116. }
  117. }