// OwnerEdit.cpp : implementation file
//
#include "stdafx.h"
#include "OwnerEdit.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// COwnerEdit
COwnerEdit::COwnerEdit()
{
m_BoundryBrush.CreateSolidBrush(RGB(187,200,143));
m_bOnlySupportFolat = FALSE;
m_bOnlySupportInt = FALSE;
m_bOnlySupportUnsignedInt = FALSE;
m_bOnlySupportUnsignedFloat = FALSE;
m_wParamMsg = -1;
}
COwnerEdit::~COwnerEdit()
{
m_BoundryBrush.DeleteObject();
}
BEGIN_MESSAGE_MAP(COwnerEdit, CEdit)
//{{AFX_MSG_MAP(COwnerEdit)
ON_WM_NCPAINT()
ON_CONTROL_REFLECT(EN_CHANGE, OnEnChange)
ON_WM_CHAR()
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// COwnerEdit message handlers
void COwnerEdit::OnHoverEnter()
{
Redraw();
}
void COwnerEdit::OnHoverLeave()
{
Redraw();
}
void COwnerEdit::OnNcPaint()
{
// TODO: Add your message handler code here
CWindowDC DC(this);
CRect Rect;
GetWindowRect(&Rect);
if (IsHover())
{
DC.SelectObject(&m_BoundryBrush);
DC.Rectangle(0,0,Rect.Width(),Rect.Height());
}
else
{
DC.DrawEdge(CRect(0,0,Rect.Width(),Rect.Height()),EDGE_SUNKEN,BF_FLAT|BF_RECT);
}
// Do not call CEdit::OnNcPaint() for painting messages
}
void COwnerEdit::Redraw()
{
RedrawWindow(NULL,NULL,RDW_FRAME|RDW_INVALIDATE);
}
void COwnerEdit::SetOnlySupportFloat()
{
m_bOnlySupportFolat = TRUE;
m_bOnlySupportUnsignedInt = FALSE;
m_bOnlySupportInt = FALSE;
m_bOnlySupportUnsignedFloat = FALSE;
}
void COwnerEdit::SetOnlySupportInt()
{
m_bOnlySupportFolat = FALSE;
m_bOnlySupportUnsignedInt = FALSE;
m_bOnlySupportInt = TRUE;
m_bOnlySupportUnsignedFloat = FALSE;
}
void COwnerEdit::SetOnlySupportUnsignedInt()
{
m_bOnlySupportFolat = FALSE;
m_bOnlySupportUnsignedInt = TRUE;
m_bOnlySupportInt = FALSE;
m_bOnlySupportUnsignedFloat = FALSE;
}
void COwnerEdit::SetOnlySupportUnsignedFolat()
{
m_bOnlySupportFolat = FALSE;
m_bOnlySupportUnsignedInt = FALSE;
m_bOnlySupportInt = FALSE;
m_bOnlySupportUnsignedFloat = TRUE;
}
BOOL COwnerEdit::PreTranslateMessage(MSG* pMsg)
{
m_wParamMsg = pMsg->wParam;
return CEdit::PreTranslateMessage(pMsg);
}
void COwnerEdit::OnEnChange()
{
}
void COwnerEdit::OnChar(UINT nChar, UINT nRepCnt, UINT nFlags)
{
if ( m_bOnlySupportFolat)
{
if( (::isdigit(nChar)) > 0)
{
CEdit::OnChar(nChar, nRepCnt, nFlags);
}
else if ( nChar == '-')
{
int pos = m_strText.Find(_T('-'));
if ( pos == -1 && m_strText.IsEmpty() )
{
CEdit::OnChar(nChar, nRepCnt, nFlags);
}
else
{
return;
}
}
else if(nChar=='.')//is '.'
{
int pos = m_strText.Find(_T('.'));
if ( pos == -1 )
{
CEdit::OnChar(nChar, nRepCnt, nFlags);
}
else
{
return;
}
}
else if( nChar == VK_BACK)
{
CEdit::OnChar(nChar, nRepCnt, nFlags);
}
else
{
return;
}
}
if ( m_bOnlySupportUnsignedFloat)
{
if( (::isdigit(nChar)) > 0)
{
CEdit::OnChar(nChar, nRepCnt, nFlags);
}
else if(nChar=='.')//is '.'
{
int pos = m_strText.Find(_T('.'));
if ( pos == -1 )
{
CEdit::OnChar(nChar, nRepCnt, nFlags);
}
else
{
return;
}
}
else if( nChar == VK_BACK)
{
CEdit::OnChar(nChar, nRepCnt, nFlags);
}
else
{
return;
}
}
if ( m_bOnlySupportUnsignedInt)
{
if((::isdigit(nChar))>0)
{
if ( nChar == char('0'))
{
if ( m_strText.IsEmpty()) return;
}
CEdit::OnChar(nChar, nRepCnt, nFlags);
}
else if( nChar == VK_BACK)
{
CEdit::OnChar(nChar, nRepCnt, nFlags);
}
else
{
return;
}
}
if ( m_bOnlySupportInt)
{
if((::isdigit(nChar))>0)
{
CEdit::OnChar(nChar, nRepCnt, nFlags);
}
else if(nChar=='-')//is '.'
{
int pos = m_strText.Find(_T('-'));
if ( m_strText.IsEmpty() && pos == -1 )
{
CEdit::OnChar(nChar, nRepCnt, nFlags);
}
else
{
return;
}
}
else if( nChar == VK_BACK)
{
CEdit::OnChar(nChar, nRepCnt, nFlags);
}
else
{
return;
}
}
if ( !m_bOnlySupportInt && !m_bOnlySupportUnsignedInt && !m_bOnlySupportFolat && !m_bOnlySupportUnsignedFloat)
{
CEdit::OnChar(nChar, nRepCnt, nFlags);
}
GetWindowText(m_strText);
}
一个精美的CEdit控件
4星 · 超过85%的资源 需积分: 32 72 浏览量
2012-06-15
14:42:55
上传
评论
收藏 3KB ZIP 举报
abgd1982
- 粉丝: 0
- 资源: 5