⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 numspinctrl.cpp

📁 万能字库生成工具: 将UNICODE
💻 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 + -