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

📄 custombutton.cpp

📁 办公助手的主窗体由计算器和便利贴两个子窗体和6个办公助手
💻 CPP
字号:
// CustomButton.cpp : implementation file
//

#include "stdafx.h"
#include "Practical.h"
#include "CustomButton.h"

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

/////////////////////////////////////////////////////////////////////////////
// CCustomButton

CCustomButton::CCustomButton()
{
	m_IsPressed = FALSE;
}

CCustomButton::~CCustomButton()
{
}


BEGIN_MESSAGE_MAP(CCustomButton, CButton)
	//{{AFX_MSG_MAP(CCustomButton)
	ON_WM_LBUTTONDOWN()
	ON_WM_LBUTTONUP()
	ON_WM_ERASEBKGND()
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CCustomButton message handlers

void CCustomButton::DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct) 
{
	// TODO: Add your code to draw the specified item
	CRect rect;
	GetClientRect(rect);
	CDC dc;
	dc.Attach(lpDrawItemStruct->hDC);
	//设置背景透明
	dc.SetBkMode(TRANSPARENT);
	//创建一个位图画刷
	CBrush m_Brush;									//声明画刷对象
	m_Brush.CreateStockObject(NULL_BRUSH);				//创建画刷
	dc.SelectObject(&m_Brush);
	if(m_IsPressed)
	{
		CPen pen(PS_SOLID,2,RGB(255,100,0));
		dc.SelectObject(&pen);
		//根据位图大小设置按钮显示区域
		HRGN h_rgn = CreateRoundRectRgn(0,0,rect.right,rect.bottom,
			rect.Width()/2,rect.Height());
		SetWindowRgn(h_rgn,true);
		dc.RoundRect(0,0,rect.right,rect.bottom,rect.Width()/2,rect.Height());
		dc.SetTextColor(RGB(255,100,0));
	}
	else
	{
		CPen pen(PS_SOLID,2,RGB(198,198,198));
		dc.SelectObject(&pen);
		//根据位图大小设置按钮显示区域
		HRGN h_rgn = CreateRoundRectRgn(0,0,rect.right,rect.bottom,
			rect.Width()/2,rect.Height());
		SetWindowRgn(h_rgn,true);
		dc.RoundRect(0,0,rect.right,rect.bottom,rect.Width()/2,rect.Height());
		dc.SetTextColor(RGB(0,0,0));
	}
	//绘制按钮文本
	CString str;
	GetWindowText(str);
	dc.DrawText(str,CRect(0,0,rect.right,rect.bottom),
		DT_CENTER|DT_VCENTER|DT_SINGLELINE);	
	dc.DeleteDC();
}

void CCustomButton::OnLButtonDown(UINT nFlags, CPoint point) 
{
	// TODO: Add your message handler code here and/or call default
	m_IsPressed = TRUE;
	CButton::OnLButtonDown(nFlags, point);
}

void CCustomButton::OnLButtonUp(UINT nFlags, CPoint point) 
{
	// TODO: Add your message handler code here and/or call default
	m_IsPressed = FALSE;
	CButton::OnLButtonUp(nFlags, point);
}

BOOL CCustomButton::OnEraseBkgnd(CDC* pDC) 
{
	// TODO: Add your message handler code here and/or call default
	
	return true;//CButton::OnEraseBkgnd(pDC);
}

⌨️ 快捷键说明

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