📄 numspinctrl.cpp
字号:
// NumSpinCtrl.cpp : implementation file
//
#include "stdafx.h"
#include "NumSpinCtrl.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CNumSpinCtrl
IMPLEMENT_DYNAMIC(CNumSpinCtrl, CSpinButtonCtrl)
CNumSpinCtrl::CNumSpinCtrl()
{
//ModifyStyle(0,UDS_ALIGNRIGHT);
}
CNumSpinCtrl::~CNumSpinCtrl()
{
}
BEGIN_MESSAGE_MAP(CNumSpinCtrl, CSpinButtonCtrl)
//{{AFX_MSG_MAP(CNumSpinCtrl)
ON_NOTIFY_REFLECT(UDN_DELTAPOS, OnDeltapos)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CNumSpinCtrl message handlers
void CNumSpinCtrl::SetPos(NUMSTYLE val)
{
CSpinButtonCtrl::SetPos(MAXPOS);
CNumEdit *m_pEdit = GetBuddy();
if (m_pEdit)
if (m_pEdit->IsKindOf(RUNTIME_CLASS(CNumEdit)))
m_pEdit->SetValue(val);
}
NUMSTYLE CNumSpinCtrl::GetPos()
{
CNumEdit *m_pEdit = GetBuddy();
if (m_pEdit)
{
BOOL bRet = m_pEdit ->IsKindOf(RUNTIME_CLASS(CNumEdit));
if (bRet)
return m_pEdit ->GetValue();
}
return (NUMSTYLE)0.0;
}
void CNumSpinCtrl::SetRange(NUMSTYLE nLower, NUMSTYLE nUpper)
{
CSpinButtonCtrl::SetRange(MINRANGE, MAXRANGE);
CNumEdit *m_pEdit = GetBuddy();
if (m_pEdit)
if (m_pEdit ->IsKindOf(RUNTIME_CLASS(CNumEdit)))
m_pEdit ->SetRange(nLower, nUpper);
}
void CNumSpinCtrl::GetRange(NUMSTYLE lower, NUMSTYLE upper) const
{
CNumEdit *m_pEdit = GetBuddy();
if (m_pEdit)
if (m_pEdit ->IsKindOf(RUNTIME_CLASS(CNumEdit)))
m_pEdit ->GetRange(lower, upper);
}
CNumEdit* CNumSpinCtrl::GetBuddy() const
{
return (CNumEdit *)(CSpinButtonCtrl::GetBuddy());
}
void CNumSpinCtrl::SetBuddy(CNumEdit * pEdit)
{
CSpinButtonCtrl::SetBuddy(pEdit);
if (pEdit)
if (pEdit ->IsKindOf(RUNTIME_CLASS(CNumEdit)))
pEdit ->SetValue((NUMSTYLE)0.0);
}
/*
描述:
此函数响应消息UDN_DELTAPOS,其携带的是NM_UPDOWN指针,其有三个成员
结构体句柄、当前值、步长;
*/
void CNumSpinCtrl::OnDeltapos(NMHDR* pNMHDR, LRESULT* pResult)
{
NM_UPDOWN* pNMUpDown = (NM_UPDOWN*)pNMHDR;
// TODO: Add your control notification handler code here
if ((pNMUpDown->iPos <= pNMUpDown->iDelta) ||
(pNMUpDown->iPos >= MAXRANGE - pNMUpDown->iDelta))
pNMUpDown->iPos = MAXPOS;
CNumEdit *m_pEdit = GetBuddy();
if (m_pEdit)
if (m_pEdit ->IsKindOf(RUNTIME_CLASS(CNumEdit)))
m_pEdit->ChangeAmount(pNMUpDown->iDelta);
*pResult = 0;
}
NUMSTYLE CNumSpinCtrl::GetDelta()
{
CNumEdit *m_pEdit = GetBuddy();
if (m_pEdit)
if (m_pEdit ->IsKindOf(RUNTIME_CLASS(CNumEdit)))
return m_pEdit ->GetDelta();
return (NUMSTYLE)0.0;
}
void CNumSpinCtrl::SetDelta(NUMSTYLE delta)
{
CNumEdit *m_pEdit = GetBuddy();
if (m_pEdit)
if (m_pEdit ->IsKindOf(RUNTIME_CLASS(CNumEdit)))
m_pEdit ->SetDelta(delta);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -