📄 cnumspinedit.cpp
字号:
#include "StdAfx.h"
#include "CNumSpinEdit.h"
#include "CNumRangeEdit.h"
#include "CSpin.h"
IMPLEMENT_DYNAMIC(CNumSpinEdit,CWnd )
BEGIN_MESSAGE_MAP(CNumSpinEdit ,CWnd)
//{{AFX_MSG_MAP(CNumSpinEdit )
//}}AFX_MSG_MAP
ON_WM_CREATE()
ON_WM_SIZE()
ON_WM_KEYDOWN()
ON_WM_SETFOCUS()
ON_WM_CTLCOLOR()
END_MESSAGE_MAP()
// Class CNumSpinEdit
CNumSpinEdit::CNumSpinEdit ()
{
m_spin = new CSpin();
m_edit = new CNumRangeEdit();
}
CNumSpinEdit::~CNumSpinEdit ()
{
delete m_spin;
delete m_edit;
}
int CNumSpinEdit::OnCreate (LPCREATESTRUCT lpCreateStruct)
{
CWnd::OnCreate(lpCreateStruct);
int cx = lpCreateStruct->cx;
int cy = lpCreateStruct->cy;
int x = lpCreateStruct->x;
int y = lpCreateStruct->y;
int v = m_edit->Create(WS_CHILD|WS_CLIPSIBLINGS|WS_VISIBLE| ES_AUTOHSCROLL |ES_RIGHT,CRect(x,y,cx-15,cy),this,1);
m_spin->Create(WS_CHILD|WS_VISIBLE|WS_CLIPSIBLINGS|UDS_ARROWKEYS,CRect(x+cx,y,15,y+cy),this,2);
m_spin->SetBuddy(m_edit);
return 0;
}
void CNumSpinEdit::OnSize (UINT nType, int cx, int cy)
{
CWnd::OnSize(nType,cx,cy);
if ( cx < 60 )
{
m_edit->MoveWindow(0,0,cx,cy);
m_spin->MoveWindow(cx-15,0,0,cy);
}
else {
m_edit->MoveWindow(0,0,cx-15,cy);
m_spin->MoveWindow(cx-15,0,15,cy);
}
}
void CNumSpinEdit::OnKeyDown (UINT nChar, UINT nRepCnt, UINT flags)
{
switch ( nChar) {
case VK_PRIOR :
m_spin->Change(10);
break;
case VK_NEXT :
m_spin->Change(-10);
break;
default :
CWnd::OnKeyDown(nChar,nRepCnt,flags);
}
}
CSpin* CNumSpinEdit::GetSpinner ()
{
return m_spin;
}
CNumRangeEdit* CNumSpinEdit::GetEdit ()
{
return m_edit;
}
void CNumSpinEdit::OnSetFocus (CWnd* pOldWnd)
{
m_edit->SetFocus();
}
BOOL CNumSpinEdit::PreTranslateMessage (MSG* pMsg)
{
if ( pMsg->message == WM_KEYDOWN )
if (pMsg->wParam == VK_PRIOR || pMsg->wParam == VK_NEXT ) {
OnKeyDown(pMsg->wParam , LOWORD(pMsg->lParam), HIWORD(pMsg->lParam));
return TRUE;
}
return FALSE;
}
void CNumSpinEdit::SetDigits (int no)
{
ASSERT(m_edit);
m_edit->SetDigits(no);
}
void CNumSpinEdit::SetRange (float min, float max, bool wrap)
{
ASSERT(m_edit);
m_edit->SetRange(min,max);
m_edit->SetWrap(wrap);
m_spin->SetRange((int)min,(int)max);
}
void CNumSpinEdit::SetStepSize (float dx)
{
ASSERT(m_spin);
m_spin->SetDelta(dx);
}
void CNumSpinEdit::SetFont (CFont* pFont, BOOL bRedraw)
{
m_edit->SetFont(pFont,bRedraw);
}
HBRUSH CNumSpinEdit::OnCtlColor (CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
HBRUSH brush;
brush = CWnd::OnCtlColor (pDC,pWnd,nCtlColor);
if (pWnd == m_edit)
pDC->SetTextColor(textColor);
return brush ;
}
void CNumSpinEdit::SetTextColor (int r, int b, int g)
{
textColor = RGB(r,g,b);
}
float CNumSpinEdit::GetValue ()
{
return m_edit->GetValue();
}
void CNumSpinEdit::SetValue (float val)
{
m_edit->SetValue(val);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -