📄 newbutton.cpp
字号:
// NewButton.cpp : implementation file
//
#include "Stdafx.h"
#include "Calculator.h"
#include "NewButton.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CNewButton
CNewButton::CNewButton()
{
bHighlight = bLBtnDown = false;
m_brush.CreateStockObject(HOLLOW_BRUSH);
hHand = AfxGetApp()->LoadCursor(IDC_HANDCUR);
}
CNewButton::~CNewButton()
{
}
BEGIN_MESSAGE_MAP(CNewButton, CButton)
//{{AFX_MSG_MAP(CNewButton)
ON_WM_MOUSEMOVE()
ON_WM_SETCURSOR()
ON_WM_TIMER()
ON_WM_LBUTTONUP()
ON_WM_LBUTTONDOWN()
ON_WM_ERASEBKGND()
ON_WM_CTLCOLOR_REFLECT()
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CNewButton message handlers
void CNewButton::DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct)
{
// TODO: Add your code to draw the specified item
// 获取一个CDC指针
CDC* pDC = CDC::FromHandle(lpDrawItemStruct->hDC);
//定义按钮区域并初始化
CRect rect(lpDrawItemStruct->rcItem);
//初始化按钮状态
UINT state = lpDrawItemStruct->itemState;
CString strText;
GetWindowText(strText);
if (state & ODS_SELECTED)
{
//按下按钮
pDC->Draw3dRect(rect,GetSysColor(COLOR_3DSHADOW), GetSysColor(COLOR_3DHILIGHT));
}
else
{
//未按下按钮
pDC->Draw3dRect(rect,GetSysColor(COLOR_3DHILIGHT),GetSysColor(COLOR_3DSHADOW));
}
pDC->DrawText(strText, rect, DT_CENTER | DT_VCENTER | DT_SINGLELINE);
}
//定制的消息处理函数
void CNewButton::OnMouseMove(UINT nFlags, CPoint point)
{
//设置一个定时器
SetTimer(1,10,NULL);
CButton::OnMouseMove(nFlags, point);
}
//当鼠标光标移到按钮上时,改变光标的形象
BOOL CNewButton::OnSetCursor(CWnd* pWnd, UINT nHitTest, UINT message)
{
if (bHighlight)
{
::SetCursor(hHand);
return true;
}
return CButton::OnSetCursor(pWnd, nHitTest, message);
}
//处理WM_TIMER消息
void CNewButton::OnTimer(UINT nIDEvent)
{
static bool pPainted = false;
POINT pt;
GetCursorPos(&pt);
CRect rect;
GetWindowRect (rect);
if (bLBtnDown)
{
KillTimer (1);
if (pPainted) InvalidateRect (NULL);
pPainted = FALSE;
return;
}
if (!rect.PtInRect (pt))
{
bHighlight = false;
KillTimer (1);
if (pPainted)
InvalidateRect(NULL);
pPainted = false;
return;
}
else
{
bHighlight = true;
if (!pPainted)
{
pPainted = true;
InvalidateRect(NULL);
}
}
CButton::OnTimer(nIDEvent);
}
//当按下按钮又放开时调用这个函数
void CNewButton::OnLButtonUp(UINT nFlags, CPoint point)
{
bLBtnDown = false;
if (bHighlight)
{
bHighlight = false;
InvalidateRect(NULL);
}
CButton::OnLButtonUp(nFlags, point);
}
//当按下按钮时调用这个函数
void CNewButton::OnLButtonDown(UINT nFlags, CPoint point)
{
bLBtnDown = true;
CButton::OnLButtonDown(nFlags, point);
}
BOOL CNewButton::OnEraseBkgnd(CDC* pDC)
{
// TODO: Add your message handler code here and/or call default
return CButton::OnEraseBkgnd(pDC);
}
HBRUSH CNewButton::CtlColor(CDC* pDC, UINT nCtlColor)
{
// TODO: Change any attributes of the DC here
pDC->SetTextColor(RGB(0,0,255));
pDC->SetBkMode (TRANSPARENT);
return m_brush;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -