Files
envi-code/SourceCode/Code2026/tg_shs/shs_blklib/xsspinbuttonctrl.cpp
T
gjm 164968b62e chore
把非utf8-bom编码的cpp/h文件改为 utf8 bom 编码, msvc识别utf8编码时,如果不是bom格式的,会使用当前cp_oem来解码.
2026-10-04 00:04:20 +08:00

128 lines
2.4 KiB
C++

// XsSpinButtonCtrl.cpp : implementation file
//
#include "stdafx.h"
#include "XsSpinButtonCtrl.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CXsSpinButtonCtrl
CXsSpinButtonCtrl::CXsSpinButtonCtrl()
{
}
CXsSpinButtonCtrl::~CXsSpinButtonCtrl()
{
}
BEGIN_MESSAGE_MAP(CXsSpinButtonCtrl, CSpinButtonCtrl)
//{{AFX_MSG_MAP(CXsSpinButtonCtrl)
ON_WM_LBUTTONDOWN()
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CXsSpinButtonCtrl message handlers
void CXsSpinButtonCtrl::OnLButtonDown(UINT nFlags, CPoint point)
{
// TODO: Add your message handler code here and/or call default
int nMin,nMax;
CXsSpinButtonCtrl::GetRange(nMin,nMax);
CString strNum;
CXsSpinButtonCtrl::GetBuddy()->GetWindowText(strNum);
CRect Rect;
CXsSpinButtonCtrl::GetWindowRect(Rect);
int nRight;
int nLeft;
if( strNum.Find('.') > 0 )
{
int nDotpos = strNum.Find('.');
CString strLeft = strNum.Left(nDotpos);
CString strRight = strNum.Right(nDotpos);
nRight = _ttoi(LPCTSTR(strRight));
nLeft = _ttoi(LPCTSTR(strLeft));
if(point.y <((Rect.bottom-Rect.top)/2))
{
nRight++;
}
else
{
nRight--;
}
if (nRight >= 10)
{
nLeft++;
CXsSpinButtonCtrl::SetPos(nLeft);
TCHAR a[3];
if (nLeft <= 4)
{
_itot(nLeft,a,10);
strNum = a;
}
}
else
{
TCHAR a[3],b[3];
_itot(nLeft,a,10);
CXsSpinButtonCtrl::SetPos(nLeft);
if (nRight > 0)
{
strNum.Empty();
_itot(nRight,b,10);
strNum = strNum + a + _T('.') + b;
}
else if (nLeft != 0)
{
strNum.Empty();
strNum = strNum + a;
}
}
}
else
{
int num = _ttoi(LPCTSTR(strNum));
TCHAR a[3],b[3];
if(point.y <((Rect.bottom-Rect.top)/2))
{
if (num < 4)
{
nRight = 1;
}
else
{
CXsSpinButtonCtrl::GetBuddy()->SetWindowText(LPCTSTR(strNum));
return;
}
}
else
{
if (num > 0)
{
nRight = 9;
num--;
}
else
{
CXsSpinButtonCtrl::GetBuddy()->SetWindowText(LPCTSTR(strNum));
return;
}
}
CXsSpinButtonCtrl::SetPos(num);
_itot(num,a,10);
_itot(nRight,b,10);
strNum.Empty();
strNum = strNum + a + _T('.') + b;
}
CXsSpinButtonCtrl::GetBuddy()->SetWindowText(LPCTSTR(strNum));
//CSpinButtonCtrl::OnLButtonDown(nFlags, point);
}