DragBar.cpp
上传用户:garry_shen
上传日期:2015-04-15
资源大小:45647k
文件大小:4k
源码类别:

游戏引擎

开发平台:

Visual C++

  1. // DragBar.cpp: implementation of the CDragBar class.
  2. //
  3. //////////////////////////////////////////////////////////////////////
  4. #include "stdafx.h"
  5. #include "XMudClient.h"
  6. #include "DragBar.h"
  7. #include "FacePlate.h"
  8. #include "MainScreen.h"
  9. #ifdef _DEBUG
  10. #undef THIS_FILE
  11. static char THIS_FILE[]=__FILE__;
  12. #define new DEBUG_NEW
  13. #endif
  14. extern CMainScreen m_MainScreen;
  15. extern rmfullglobals myglobs;
  16. CDragBar::CDragBar(int nMaxShow, int left, int top, int right, int bottom)
  17. {
  18. SetRect(&rcUpBtnDownSour,14,600,27,617);
  19. SetRect(&rcDownBtnDownSour,28,600,41,617);
  20. SetRect(&rcDragBarSour,0,600,13,626);
  21. bUpBtnDown = FALSE;
  22. bDownBtnDown = FALSE;
  23. bPreDrag = FALSE;
  24. nMousey = 0;
  25. nDragBary = 0;
  26. rcThis.left = left;
  27. rcThis.top = top;
  28. rcThis.right = right;
  29. rcThis.bottom = bottom;
  30. nDragBarSpace = bottom - top - 62;
  31. nDragBarUpSpace = 0;
  32. rcDragBarBtn = rcThis;
  33. rcUpBtn = rcThis;
  34. rcDownBtn = rcThis;
  35. rcUpBtn.bottom = rcUpBtn.top + 17;
  36. rcDownBtn.top = rcDownBtn.bottom - 17;
  37. rcDragBarBtn.top = rcUpBtn.bottom + 1;
  38. rcDragBarBtn.bottom = rcDragBarBtn.top + 26;
  39. nMax = nMaxShow;
  40. nRecordCount = 0;
  41. nFirstPos = 0;
  42. }
  43. CDragBar::~CDragBar()
  44. {
  45. }
  46. BOOL CDragBar::LButtonDown(POINT Pos)
  47. {
  48. if(!PtInRect(&rcThis,Pos)) return FALSE;
  49. if(PtInRect(&rcUpBtn,Pos)){
  50. bUpBtnDown = TRUE;
  51. nFirstPos--;
  52. }else if(PtInRect(&rcDownBtn,Pos)){
  53. bDownBtnDown = TRUE;
  54. nFirstPos++;
  55. }else if(PtInRect(&rcDragBarBtn,Pos)){
  56. if(nRecordCount > nMax){
  57. bPreDrag = TRUE;
  58. nMousey = Pos.y;
  59. nDragBary = rcDragBarBtn.top; 
  60. }
  61. }
  62. else if((Pos.y > rcUpBtn.bottom)&&(Pos.y < rcDragBarBtn.top)){
  63. nFirstPos -= nMax;
  64. }
  65. else if((Pos.y > rcDragBarBtn.bottom)&&(Pos.y < rcDownBtn.top)){
  66. nFirstPos += nMax;
  67. }
  68. else return FALSE;
  69.   m_MainScreen.mFirstFD.bReDraw[0]=TRUE;
  70.   m_MainScreen.mFirstFD.bReDraw[1]=TRUE;
  71.   m_MainScreen.mSecondFD.bReDraw[0]=TRUE;
  72.   m_MainScreen.mSecondFD.bReDraw[1]=TRUE;
  73.   m_MainScreen.mTalkFD.bReDraw[0]=TRUE;
  74.   m_MainScreen.mTalkFD.bReDraw[1]=TRUE;
  75. // ReDraw();
  76. return TRUE;
  77. }
  78. BOOL CDragBar::LButtonUp(POINT Pos)
  79. {
  80. if(bUpBtnDown) bUpBtnDown = FALSE;
  81. else if(bDownBtnDown) bDownBtnDown = FALSE;
  82. else if(bPreDrag) bPreDrag = FALSE;
  83. else return FALSE;
  84.   m_MainScreen.mFirstFD.bReDraw[0]=TRUE;
  85.   m_MainScreen.mFirstFD.bReDraw[1]=TRUE;
  86.   m_MainScreen.mSecondFD.bReDraw[0]=TRUE;
  87.   m_MainScreen.mSecondFD.bReDraw[1]=TRUE;
  88.   m_MainScreen.mTalkFD.bReDraw[0]=TRUE;
  89.   m_MainScreen.mTalkFD.bReDraw[1]=TRUE;
  90. // ReDraw();
  91. return FALSE;
  92. }
  93. BOOL CDragBar::OnMouseMove(POINT Pos)
  94. {
  95. if(bPreDrag)
  96. {
  97. rcDragBarBtn.top = (Pos.y - nMousey) + nDragBary;
  98. if(rcDragBarBtn.top <= rcUpBtn.bottom)
  99. rcDragBarBtn.top = rcUpBtn.bottom + 1;
  100. if(rcDragBarBtn.top >= rcDownBtn.top - 26)
  101. rcDragBarBtn.top = rcDownBtn.top - 27;
  102. rcDragBarBtn.bottom = rcDragBarBtn.top + 26;
  103. nDragBarUpSpace = rcDragBarBtn.top - rcUpBtn.bottom;
  104. nFirstPos = nDragBarUpSpace * (nRecordCount - nMax) / nDragBarSpace;
  105.     m_MainScreen.mFirstFD.bReDraw[0]=TRUE;
  106.     m_MainScreen.mFirstFD.bReDraw[1]=TRUE;
  107.     m_MainScreen.mSecondFD.bReDraw[0]=TRUE;
  108.     m_MainScreen.mSecondFD.bReDraw[1]=TRUE;
  109.     m_MainScreen.mTalkFD.bReDraw[0]=TRUE;
  110.     m_MainScreen.mTalkFD.bReDraw[1]=TRUE;
  111. // ReDraw();
  112. return TRUE;
  113. }
  114. else return FALSE;
  115. }
  116. void CDragBar::ReDraw()
  117. {
  118. if(nFirstPos < 0) nFirstPos = 0;
  119. else if(nRecordCount <= nMax)
  120. nFirstPos = 0;
  121. else if(nFirstPos > nRecordCount - nMax)
  122. nFirstPos = nRecordCount - nMax;
  123. bltObject(rcThis.left,
  124. rcThis.top,
  125. myglobs.g_lpDDSGameMenu,
  126. &rcThis,
  127. DDBLTFAST_SRCCOLORKEY);
  128. if(bUpBtnDown)//礶