NumSpinCtrl.cpp
上传用户:sz81710966
上传日期:2013-03-01
资源大小:409k
文件大小:3k
源码类别:

多国语言处理

开发平台:

Visual C++

  1. // NumSpinCtrl.cpp : implementation file
  2. //
  3. #include "stdafx.h"
  4. #include "NumSpinCtrl.h"
  5. #ifdef _DEBUG
  6. #define new DEBUG_NEW
  7. #undef THIS_FILE
  8. static char THIS_FILE[] = __FILE__;
  9. #endif
  10. /////////////////////////////////////////////////////////////////////////////
  11. // CNumSpinCtrl
  12. IMPLEMENT_DYNAMIC(CNumSpinCtrl, CSpinButtonCtrl)
  13. CNumSpinCtrl::CNumSpinCtrl()
  14. {
  15. //ModifyStyle(0,UDS_ALIGNRIGHT);
  16. }
  17. CNumSpinCtrl::~CNumSpinCtrl()
  18. {
  19. }
  20. BEGIN_MESSAGE_MAP(CNumSpinCtrl, CSpinButtonCtrl)
  21. //{{AFX_MSG_MAP(CNumSpinCtrl)
  22. ON_NOTIFY_REFLECT(UDN_DELTAPOS, OnDeltapos)
  23. //}}AFX_MSG_MAP
  24. END_MESSAGE_MAP()
  25. /////////////////////////////////////////////////////////////////////////////
  26. // CNumSpinCtrl message handlers
  27. void CNumSpinCtrl::SetPos(NUMSTYLE val)
  28. {
  29. CSpinButtonCtrl::SetPos(MAXPOS);
  30. CNumEdit *m_pEdit = GetBuddy();
  31. if (m_pEdit)
  32. if (m_pEdit->IsKindOf(RUNTIME_CLASS(CNumEdit)))
  33. m_pEdit->SetValue(val);
  34. }
  35. NUMSTYLE CNumSpinCtrl::GetPos()
  36. {
  37. CNumEdit *m_pEdit = GetBuddy();
  38. if (m_pEdit)
  39. {
  40. BOOL bRet = m_pEdit ->IsKindOf(RUNTIME_CLASS(CNumEdit));
  41. if (bRet)
  42. return m_pEdit ->GetValue();
  43. }
  44. return (NUMSTYLE)0.0;
  45. }
  46. void CNumSpinCtrl::SetRange(NUMSTYLE nLower, NUMSTYLE nUpper)
  47. {
  48. CSpinButtonCtrl::SetRange(MINRANGE, MAXRANGE);
  49. CNumEdit *m_pEdit = GetBuddy();
  50. if (m_pEdit)
  51. if (m_pEdit ->IsKindOf(RUNTIME_CLASS(CNumEdit)))
  52. m_pEdit ->SetRange(nLower, nUpper);
  53. }
  54. void CNumSpinCtrl::GetRange(NUMSTYLE lower, NUMSTYLE upper) const
  55. {
  56. CNumEdit *m_pEdit = GetBuddy();
  57. if (m_pEdit)
  58. if (m_pEdit ->IsKindOf(RUNTIME_CLASS(CNumEdit)))
  59. m_pEdit ->GetRange(lower, upper);
  60. }
  61. CNumEdit* CNumSpinCtrl::GetBuddy() const
  62. {
  63. return (CNumEdit *)(CSpinButtonCtrl::GetBuddy());
  64. }
  65. void CNumSpinCtrl::SetBuddy(CNumEdit * pEdit)
  66. {
  67. CSpinButtonCtrl::SetBuddy(pEdit);
  68. if (pEdit)
  69. if (pEdit ->IsKindOf(RUNTIME_CLASS(CNumEdit)))
  70. pEdit ->SetValue((NUMSTYLE)0.0);
  71. }
  72. /*
  73. 描述:
  74. 此函数响应消息UDN_DELTAPOS,其携带的是NM_UPDOWN指针,其有三个成员
  75. 结构体句柄、当前值、步长;
  76. */
  77. void CNumSpinCtrl::OnDeltapos(NMHDR* pNMHDR, LRESULT* pResult) 
  78. {
  79. NM_UPDOWN* pNMUpDown = (NM_UPDOWN*)pNMHDR;
  80. // TODO: Add your control notification handler code here
  81. if ((pNMUpDown->iPos <= pNMUpDown->iDelta) ||
  82. (pNMUpDown->iPos >= MAXRANGE - pNMUpDown->iDelta))
  83. pNMUpDown->iPos = MAXPOS;
  84. CNumEdit *m_pEdit = GetBuddy();
  85. if (m_pEdit)
  86. if (m_pEdit ->IsKindOf(RUNTIME_CLASS(CNumEdit)))
  87. m_pEdit->ChangeAmount(pNMUpDown->iDelta);
  88. *pResult = 0;
  89. }
  90. NUMSTYLE CNumSpinCtrl::GetDelta()
  91. {
  92. CNumEdit *m_pEdit = GetBuddy();
  93. if (m_pEdit)
  94. if (m_pEdit ->IsKindOf(RUNTIME_CLASS(CNumEdit)))
  95. return m_pEdit ->GetDelta();
  96. return (NUMSTYLE)0.0;
  97. }
  98. void CNumSpinCtrl::SetDelta(NUMSTYLE delta)
  99. {
  100. CNumEdit *m_pEdit = GetBuddy();
  101. if (m_pEdit)
  102. if (m_pEdit ->IsKindOf(RUNTIME_CLASS(CNumEdit)))
  103. m_pEdit ->SetDelta(delta);
  104. }