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

📄 cspin.cpp

📁 是一个数字编辑器
💻 CPP
字号:
#include "StdAfx.h"
#include "CNumEdit.h"
#include "CSpin.h"
IMPLEMENT_DYNAMIC(CSpin,CSpinButtonCtrl)
BEGIN_MESSAGE_MAP(CSpin,CSpinButtonCtrl)
	//{{AFX_MSG_MAP(CSpin)
	//}}AFX_MSG_MAP
	ON_NOTIFY_REFLECT(UDN_DELTAPOS, OnDeltaPos)
END_MESSAGE_MAP()



// Class CSpin 
CSpin::CSpin ()
{
	m_delta = 1;
}

void CSpin::Change (int steps)
{
	CWnd* b = GetBuddy();
	CNumEdit* edit = dynamic_cast<CNumEdit*>(b);
	ASSERT(edit); // cast falied

	float fDelta = steps*m_delta;
	float f = edit->GetValue();
	// This messy bit of code gets around a floating point resolution problem.
	// For example, if your step is -1 and m_Delta is .1, you would end up
	// with -1.49xxx e-9 and it would never set the control to zero. The old
	// 0 != 0 problem.
	if( f == -fDelta )
		f = 0;
	else
		f += fDelta;
	
	edit->SetValue(f);
}

void CSpin::OnDeltaPos (NMHDR* pNMHDR, LRESULT* pResult)
{
	NM_UPDOWN* pNMUpDown = (NM_UPDOWN*)pNMHDR;
	DWORD bWrap = (GetStyle() & UDS_WRAP);
	if ((pNMUpDown->iPos <= pNMUpDown->iDelta) ||
		(pNMUpDown->iPos >= 1000 - pNMUpDown->iDelta)) pNMUpDown->iPos = 500;
	Change(pNMUpDown->iDelta);
	*pResult = 0;
}

void CSpin::SetDelta (float x)
{
	m_delta = x;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -