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

📄 editflat.cpp

📁 一个较好的定时器
💻 CPP
字号:
// EditFlat.cpp : implementation file

#include "stdafx.h"
#include "EditFlat.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/////////////////////////////////////////////////////////////////////////////
// CEditFlat

BEGIN_MESSAGE_MAP(CEditFlat, CEdit)
	//{{AFX_MSG_MAP(CEditFlat)
	ON_WM_MOUSEMOVE()
	ON_WM_PAINT()
	ON_WM_SETFOCUS()
	ON_WM_KILLFOCUS()
	ON_WM_SYSCOLORCHANGE()
	ON_WM_VSCROLL()
	ON_WM_HSCROLL()
	// do not remove
	ON_WM_STYLECHANGING ()
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()


CEditFlat::CEditFlat()
{
	CWinApp *pMainApplication;
	
	pMainApplication = AfxGetApp ();

	m_hInstance = pMainApplication->m_hInstance;

	m_bVScrollPressed			= TRUE;
	m_bHScrollPressed			= TRUE;

	m_bMouseOnEdit				= FALSE;

	m_bIsFocused				= FALSE;

	m_iHorizontalScrollWidth	= NULL;

	m_iVerticalScrollWidthLeft  = NULL;

	m_iVerticalScrollWidthRight = NULL;

	m_bHorizontalFrameWidth		= NULL;

	m_bVerticalFrameWidth		= NULL;

	GetSysColors ();
}

CEditFlat::~CEditFlat()
{
}


void CEditFlat::OnMouseMove(UINT nFlags, CPoint point) 
{	
	CEdit::OnMouseMove(nFlags, point);

	if (m_bIsFocused) return;

	if (GetCapture() != this) 
	{
		m_bMouseOnEdit = TRUE;
		SetCapture();
		DrawEdit();

	}
	else
	{
		CRect RectEditControl;
		GetClientRect(&RectEditControl);

		if (!RectEditControl.PtInRect(point))
		{
				m_bMouseOnEdit = FALSE;
				DrawEdit();
				ReleaseCapture();

		}
	}

}

void CEditFlat::OnPaint() 
{	
	// Process default (do not remove)
	Default ();

	// Process control drawing (main!)
	DrawEdit();	
}


BOOL CEditFlat::DrawEdit(VOID)
{
	CRect RectEditControl;

	GetClientRect (&RectEditControl);

	CDC *pEditControlDC;

	pEditControlDC = GetDC ();

	// do not remove
	// this algoritm is calculated client size with use or not horizontal
	// and vertical scroll bars
	RectEditControl.top	   -= m_bHorizontalFrameWidth;

	RectEditControl.bottom += m_iHorizontalScrollWidth;
	RectEditControl.bottom += m_bHorizontalFrameWidth;

	RectEditControl.right  += m_iVerticalScrollWidthRight;
	RectEditControl.right  += m_bVerticalFrameWidth;

	RectEditControl.left   -= m_iVerticalScrollWidthLeft;
	RectEditControl.left   -= m_bVerticalFrameWidth;
	
	if (m_bMouseOnEdit)
	{
		// Mouse on edit

		pEditControlDC->Draw3dRect (&RectEditControl, m_clrShadow, m_clrHiLite);

		RectEditControl.DeflateRect (1,1);
			
		pEditControlDC->Draw3dRect (&RectEditControl, m_clrDarkShadow, m_clrButton);
	
	} else
	{

		// Mouse is not on edit

		pEditControlDC->Draw3dRect (&RectEditControl, m_clrHiLite, m_clrHiLite);

		RectEditControl.DeflateRect (1,1);
			
		pEditControlDC->Draw3dRect (&RectEditControl, m_clrHiLite, m_clrHiLite);

	}

	// Release DC ! do not remove!

	ReleaseDC (pEditControlDC);

	return (TRUE);
}

void CEditFlat::OnSetFocus(CWnd* pOldWnd) 
{
	CEdit::OnSetFocus(pOldWnd);
		
	m_bIsFocused = TRUE;

	m_bMouseOnEdit = TRUE;

	Invalidate ();

}

void CEditFlat::OnKillFocus(CWnd* pNewWnd) 
{
	CEdit::OnKillFocus(pNewWnd);
	
	m_bIsFocused = FALSE;

	m_bMouseOnEdit = FALSE;

	Invalidate ();
}

BOOL CEditFlat::GetSysColors(VOID)
{
	// set up system colors, used for borders of edit control
	m_clrHiLite		=	GetSysColor(COLOR_BTNHIGHLIGHT);
	m_clrShadow		=	GetSysColor(COLOR_BTNSHADOW);
	m_clrDarkShadow =	GetSysColor(COLOR_3DDKSHADOW);
	m_clrButton		=	GetSysColor(COLOR_BTNFACE);

	return (TRUE);
}

void CEditFlat::OnSysColorChange() 
{
	// system colors was changed - need to change edit colors !
	CEdit::OnSysColorChange();
	
	GetSysColors ();
}


void CEditFlat::PreSubclassWindow() 
{
	DWORD dwEditStyle;

	dwEditStyle = GetStyle ();

	DWORD dwEditStyleEx;

	dwEditStyleEx = GetExStyle ();

	if (dwEditStyle & WS_VSCROLL)
	{
		// Has a vertical scroll bar
		m_iVerticalScrollWidthRight =  (BYTE) ::GetSystemMetrics (SM_CXVSCROLL);

		if (dwEditStyleEx & WS_EX_LEFTSCROLLBAR)
		{
			m_iVerticalScrollWidthLeft = m_iVerticalScrollWidthRight;
			m_iVerticalScrollWidthRight = NULL;

		}
	} 

	if (dwEditStyle & WS_HSCROLL)
	{
		m_iHorizontalScrollWidth = (BYTE) ::GetSystemMetrics (SM_CYHSCROLL);
	}

	m_bHorizontalFrameWidth  = (BYTE) ::GetSystemMetrics (SM_CYEDGE);
	m_bVerticalFrameWidth    = (BYTE) ::GetSystemMetrics (SM_CXEDGE);


	CEdit::PreSubclassWindow();
}



void CEditFlat::OnStyleChanging( int nStyleType, LPSTYLESTRUCT lpStyleStruct)
{
	// style changed - for example, right-to-left reading order was changed
	if (nStyleType == GWL_EXSTYLE)
	{
		if (lpStyleStruct->styleNew & WS_EX_LEFTSCROLLBAR)
		{
			m_iVerticalScrollWidthLeft = m_iVerticalScrollWidthRight;
			m_iVerticalScrollWidthRight = NULL;

		} else

		if (lpStyleStruct->styleOld & WS_EX_LEFTSCROLLBAR)
		{
			m_iVerticalScrollWidthRight = m_iVerticalScrollWidthLeft;
			m_iVerticalScrollWidthLeft = NULL;

		}

	}

	CEdit::OnStyleChanged (nStyleType, lpStyleStruct);
}



void CEditFlat::OnVScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar) 
{

		if (m_bVScrollPressed)
		{
        	m_bVScrollPressed = FALSE;
		} else
		{
			m_bVScrollPressed = TRUE;
		}
	CEdit::OnVScroll(nSBCode, nPos, pScrollBar);
}

void CEditFlat::OnHScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar) 
{
	
	if (m_bHScrollPressed)
		{
			m_bHScrollPressed = FALSE;
		} else
		{
			m_bHScrollPressed = TRUE;
		}
	CEdit::OnHScroll(nSBCode, nPos, pScrollBar);
}





⌨️ 快捷键说明

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