ScrollBar.cpp
上传用户:hkb425
上传日期:2007-06-16
资源大小:34191k
文件大小:3k
源码类别:

游戏引擎

开发平台:

Visual C++

  1. // ScrollBar.cpp: implementation of the CScrollBar class.
  2. //
  3. //////////////////////////////////////////////////////////////////////
  4. #include "stdafx.h"
  5. #include "ScrollBar.h"
  6. //////////////////////////////////////////////////////////////////////
  7. // Construction/Destruction
  8. //////////////////////////////////////////////////////////////////////
  9. CScrollBar::CScrollBar()
  10. {
  11. }
  12. CScrollBar::~CScrollBar()
  13. {
  14. }
  15. void CScrollBar::SetScrollBar(RECT rect,bool bHorz,int iMaxValue,int iMinValue,int iCurValue)
  16. {
  17. int width=rect.right-rect.left;
  18. int height=rect.bottom-rect.top;
  19. RECT rt=rect;
  20. if(bHorz)
  21. {
  22. rt.right=rect.left+height;
  23.         m_cSpin[0].SetSpin(rt,true);
  24. rt.right=rect.right;
  25. rt.left=rect.right-height;
  26.         m_cSpin[1].SetSpin(rt,false);
  27. rt.left=rect.left+int(height*1.2f);
  28. rt.right=rect.right-int(height*1.2f);
  29.         m_cProcess.SetProcessBar(rt,iMaxValue,iMinValue,iCurValue);
  30. }
  31. else
  32. {
  33. rt.bottom=rt.top+width;
  34.         m_cSpin[0].SetSpin(rt,true,false);
  35. rt.bottom=rect.bottom;
  36. rt.top=rt.bottom-width;
  37.         m_cSpin[1].SetSpin(rt,false,false);
  38. rt.top=rect.top+int(width*1.2f);
  39. rt.bottom=rect.bottom-int(width*1.2f);
  40.         m_cProcess.SetProcessBar(rt,iMaxValue,iMinValue,iCurValue,false);
  41. }
  42. }
  43. void CScrollBar::SetBlockWidth(int width)
  44. {
  45.     m_cProcess.SetBlockWidth(width);
  46. }
  47. void CScrollBar::SetMaxMinValue(int iMaxValue,int iMinValue)
  48. {
  49.     m_cProcess.SetMaxMinValue(iMaxValue,iMinValue);
  50. }
  51. void CScrollBar::SetScrollValue(int iValue)
  52. {
  53.     m_cProcess.m_iValue=iValue;
  54. }
  55. void CScrollBar::SetEnable(bool bState)
  56. {
  57. m_bEnable=bState;
  58. if(m_bEnable)
  59. {
  60. m_cSpin[0].m_iState=BUTTON_NORMAL;
  61. m_cSpin[1].m_iState=BUTTON_NORMAL;
  62.         m_cProcess.m_iState=BUTTON_NORMAL;
  63. }
  64. else
  65. {
  66. m_cSpin[0].m_iState=BUTTON_DEAD;
  67. m_cSpin[1].m_iState=BUTTON_DEAD;
  68.         m_cProcess.m_iState=BUTTON_DEAD;
  69. }
  70. }
  71. void CScrollBar::RenderScrollBar()
  72. {
  73. int oldValue=m_cProcess.m_iValue;
  74. UpdateScrollBar();
  75. m_cSpin[0].RenderSpin();
  76. m_cSpin[1].RenderSpin();
  77. m_cProcess.RenderProcessBar();
  78. if(oldValue!=m_cProcess.m_iValue)m_bValueChanged=true;
  79. else m_bValueChanged=false;
  80. }
  81. void CScrollBar::UpdateScrollBar()
  82. {
  83. int v=m_cProcess.m_iValue;
  84. if(m_cSpin[0].m_bChangValue)
  85. {
  86. v--;
  87. m_cProcess.SetValue(v);
  88. }
  89. if(m_cSpin[1].m_bChangValue)
  90. {
  91. v++;
  92. m_cProcess.SetValue(v);
  93. }
  94. }
  95. int CScrollBar::GetValue()
  96. {
  97.     return m_cProcess.m_iValue;
  98. }
  99. void CScrollBar::SetValue(int value)
  100. {
  101. if(value>m_cProcess.m_iMaxValue)value=m_cProcess.m_iMaxValue;
  102. if(value<m_cProcess.m_iMinValue)value=m_cProcess.m_iMinValue;
  103. m_cProcess.m_iValue=value;
  104. }