CaptionBackground.cpp
上传用户:zhoushen
上传日期:2022-06-15
资源大小:84k
文件大小:2k
源码类别:

对话框与窗口

开发平台:

Visual C++

  1. #include "stdafx.h"
  2. #include "CaptionBackground.h"
  3. #include "AutoSelector.h"
  4. //////////////////
  5. // Helper to paint rectangle with a color.
  6. //
  7. CCaptionBackground::CCaptionBackground()
  8. :m_ActiveColor(-1), m_InactiveColor(-1)
  9. {
  10. }
  11. CCaptionBackground::CCaptionBackground(const CCaptionBackground& cb)
  12. :m_ActiveColor(cb.m_ActiveColor), m_InactiveColor(cb.m_InactiveColor)
  13. {
  14. }
  15. void CCaptionBackground::SetCustomColors(const CCaptionBackground& cb)
  16. {
  17. SetActiveColor(cb.m_ActiveColor);
  18. SetInactiveColor(cb.m_InactiveColor);
  19. }
  20. void CCaptionBackground::SetCustomColors(COLORREF activeColor, COLORREF inactiveColor)
  21. {
  22. SetActiveColor(activeColor);
  23. SetInactiveColor(inactiveColor);
  24. }
  25. void CCaptionBackground::SetActiveColor(COLORREF activeColor)
  26. {
  27. m_ActiveColor = activeColor;
  28. }
  29. void CCaptionBackground::SetInactiveColor(COLORREF inactiveColor)
  30. {
  31. m_InactiveColor = inactiveColor;
  32. }
  33. void CCaptionBackground::UseSystemColors()
  34. {
  35. UseSystemActiveColor();
  36. UseSystemInactiveColor();
  37. }
  38. void CCaptionBackground::UseSystemActiveColor()
  39. {
  40. m_ActiveColor = -1;
  41. }
  42. void CCaptionBackground::UseSystemInactiveColor()
  43. {
  44. m_InactiveColor = -1;
  45. }
  46. boolean CCaptionBackground::IsUsingSystemColors()
  47. {
  48. return m_ActiveColor == -1;
  49. }
  50. COLORREF CCaptionBackground::GetActiveColor() const
  51. {
  52. return m_ActiveColor == -1 ? GetSysColor(COLOR_ACTIVECAPTION) : m_ActiveColor;
  53. }
  54. COLORREF CCaptionBackground::GetInactiveColor() const
  55. {
  56. return m_InactiveColor == -1 ? GetSysColor(COLOR_INACTIVECAPTION) : m_InactiveColor;
  57. }
  58. void CCaptionBackground::Paint(CDC* pDC, CSize paintArea, BOOL active)
  59. {
  60. PaintRect(pDC, 0, 0, paintArea.cx, paintArea.cy, active ? GetActiveColor() : GetInactiveColor());
  61. }
  62. // Paint the color into the rectangle dimensions on the device context
  63. void CCaptionBackground::PaintRect(CDC* pDC, int x, int y, int w, int h, COLORREF color)
  64. {
  65. CBrush brush(color);
  66. AutoSelector a(pDC, &brush);
  67. pDC->PatBlt(x, y, w, h, PATCOPY);
  68. }