📄 editint.cpp
字号:
// EditInt.cpp : implementation file//#include "stdafx.h"#include "fusion.h"#include "EditInt.h"#ifdef _DEBUG#define new DEBUG_NEW#undef THIS_FILEstatic char THIS_FILE[] = __FILE__;#endif/////////////////////////////////////////////////////////////////////////////// RxEditIntRxEditInt::RxEditInt(){ m_nRangeMin = -1024; m_nRangeMax = 3071;}RxEditInt::~RxEditInt(){}BEGIN_MESSAGE_MAP(RxEditInt, CEdit) //{{AFX_MSG_MAP(RxEditInt) ON_WM_CHAR() ON_WM_MOUSEWHEEL() ON_WM_KILLFOCUS() //}}AFX_MSG_MAPEND_MESSAGE_MAP()/////////////////////////////////////////////////////////////////////////////// RxEditInt message handlersBOOL RxEditInt::PreTranslateMessage(MSG* pMsg) { if(pMsg->message == WM_KEYDOWN && pMsg->wParam == VK_RETURN) { ValidateEdit(); SendMessageToOwner(); return TRUE; } return CEdit::PreTranslateMessage(pMsg);}void RxEditInt::OnChar(UINT nChar, UINT nRepCnt, UINT nFlags) { CString strHolder; strHolder = _T("0123456789-\b"); if(strHolder.Find(nChar) < 0) return; CEdit::OnChar(nChar, nRepCnt, nFlags);}BOOL RxEditInt::OnMouseWheel(UINT nFlags, short zDelta, CPoint pt) { if(zDelta >= 0) IncreaseEdit(); else DecreaseEdit(); return CEdit::OnMouseWheel(nFlags, zDelta, pt);}void RxEditInt::OnKillFocus(CWnd* pNewWnd) { CEdit::OnKillFocus(pNewWnd); ValidateEdit(); SendMessageToOwner(); }/////////////////////////////////////////////////////////////////////////////void RxEditInt::SendMessageToOwner(){ NMED_INT nmed; nmed.hdr.hwndFrom = m_hWnd; nmed.hdr.idFrom = GetDlgCtrlID(); nmed.hdr.code = EN_CHANGED_INT; nmed.nEdit = GetEdit(); CWnd* pOwner = GetOwner(); if (pOwner) pOwner->SendMessage(WM_NOTIFY, nmed.hdr.idFrom, (LPARAM)&nmed);}void RxEditInt::ValidateEdit(){ int nValue = GetEdit(); if(nValue < m_nRangeMin) nValue = m_nRangeMin; if(nValue > m_nRangeMax) nValue = m_nRangeMax; CString strWindow; strWindow.Format(_T("%d"), nValue); SetWindowText(strWindow); UpdateWindow();}void RxEditInt::IncreaseEdit(int nValue){ int nOldValue, nNewValue; nOldValue = GetEdit(); SetEdit(nOldValue + nValue); nNewValue = GetEdit(); if(nOldValue != nNewValue) SendMessageToOwner();}void RxEditInt::DecreaseEdit(int nValue){ int nOldValue, nNewValue; nOldValue = GetEdit(); SetEdit(nOldValue - nValue); nNewValue = GetEdit(); if(nOldValue != nNewValue) SendMessageToOwner();}/////////////////////////////////////////////////////////////////////////////void RxEditInt::SetRange(int nRangeMin, int nRangeMax, UINT nMask){ int nValue = GetEdit(); if(nMask & EMASK_MIN) { m_nRangeMin = nRangeMin; if(nValue < nRangeMin) SetEdit(nRangeMin); } if(nMask & EMASK_MAX) { m_nRangeMax = nRangeMax; if(nValue > nRangeMax) SetEdit(nRangeMax); }}void RxEditInt::GetRange(int &nRangeMin, int &nRangeMax){ nRangeMin = m_nRangeMin; nRangeMax = m_nRangeMax;}void RxEditInt::SetEdit(int nValue){ int nOldValue = GetEdit(); if(nOldValue == nValue) return; if(nValue < m_nRangeMin) nValue = m_nRangeMin; if(nValue > m_nRangeMax) nValue = m_nRangeMax; CString strWindow; strWindow.Format(_T("%d"), nValue); SetWindowText(strWindow); UpdateWindow();}int RxEditInt::GetEdit(){ int nReturn; CString strWindow; GetWindowText(strWindow); if(strWindow.IsEmpty()) nReturn = -1; else nReturn = (int)_ttoi(strWindow); return nReturn;}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -