WndMovingImage.cpp
上传用户:dzyhzl
上传日期:2019-04-29
资源大小:56270k
文件大小:2k
源码类别:

模拟服务器

开发平台:

C/C++

  1. /*****************************************************************************************
  2. // 界面窗口体系结构--带移动控制的显示图形的窗口
  3. // Copyright : Kingsoft 2002
  4. // Author :   Wooy(Wu yue)
  5. // CreateTime: 2002-12-10
  6. *****************************************************************************************/
  7. #include "KWin32.h"
  8. #include "KIniFile.h"
  9. #include "WndMovingImage.h"
  10. #include "../../../Represent/iRepresent/iRepresentShell.h"
  11. extern iRepresentShell* g_pRepresentShell;
  12. //--------------------------------------------------------------------------
  13. // 功能:构造函数
  14. //--------------------------------------------------------------------------
  15. KWndMovingImage::KWndMovingImage()
  16. {
  17. m_nCurrentValue = 0;
  18. m_nFullValue = 1;
  19. m_MoveRange.cx = 0;
  20. m_MoveRange.cy = 0;
  21. }
  22. void KWndMovingImage::Clone(KWndMovingImage* pCopy)
  23. {
  24. if (pCopy)
  25. {
  26. KWndImage::Clone(pCopy);
  27. pCopy->m_oFixPos = m_oFixPos;
  28. pCopy->m_MoveRange = m_MoveRange;
  29. SetMoveValue(m_nCurrentValue, m_nFullValue);
  30. }
  31. }
  32. //--------------------------------------------------------------------------
  33. // 功能:初始化窗口
  34. //--------------------------------------------------------------------------
  35. int KWndMovingImage::Init(KIniFile* pIniFile, const char* pSection)
  36. {
  37. if (KWndImage::Init(pIniFile, pSection))
  38. {
  39. m_MoveRange.cx = m_oFixPos.x = m_Left;
  40. m_MoveRange.cy = m_oFixPos.y = m_Top;
  41. pIniFile->GetInteger2(pSection, "EndPos", (int*)&m_MoveRange.cx, (int*)&m_MoveRange.cy);
  42. m_MoveRange.cx -= m_oFixPos.x;
  43. m_MoveRange.cy -= m_oFixPos.y;
  44. SetMoveValue(m_nCurrentValue, m_nFullValue);
  45. return true;
  46. }
  47. return false;
  48. }
  49. void KWndMovingImage::SetMoveValue(int nCurrentValue, int nFullValue)
  50. {
  51. m_nFullValue = nFullValue ? nFullValue : 1;
  52. m_nCurrentValue = nCurrentValue;
  53. int x, y;
  54. if (m_MoveRange.cx)
  55.  x = (m_MoveRange.cx * m_nCurrentValue) / m_nFullValue + m_oFixPos.x;
  56. else
  57. x = m_oFixPos.x;
  58. if (m_MoveRange.cy)
  59.  y = (m_MoveRange.cy * m_nCurrentValue) / m_nFullValue + m_oFixPos.y;
  60. else
  61. y = m_oFixPos.y;
  62. SetPosition(x, y);
  63. }