• 大小: 4KB
    文件类型: .cpp
    金币: 1
    下载: 0 次
    发布日期: 2021-05-29
  • 语言: C/C++
  • 标签: UI  

资源简介

MFC中重绘Button为圆形Button,可以修改背景颜色、文本颜色、边框颜色等。

资源截图

代码片段和文件信息

// CustomButton.cpp : implementation file
#include “stdafx.h“
/*#include “RoundButton.h“*/
#include “CustomButton.h“

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

// m_ColorNum = red;
}

CCustomButton::~CCustomButton()
{
}


BEGIN_MESSAGE_MAP(CCustomButton CButton)
ON_WM_LBUTTONDOWN()
ON_WM_LBUTTONUP()
ON_WM_ERASEBKGND()
END_MESSAGE_MAP()

#if 0
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(OPAQUE);
//创建一个位图画刷
CBrush m_Brush; //声明画刷对象
m_Brush.CreateStockobject(NULL_BRUSH); //创建画刷

dc.Selectobject(&m_Brush);
if (m_IsPressed)
{
CPen pen(PS_SOLID 2 RGB(255 0 0));
dc.Selectobject(&pen);
//根据位图大小设置按钮显示区域
HRGN h_rgn = CreateEllipticRgn(0 0 rect.Width() rect.Height()); //计算按钮的显示区域
SetWindowRgn(h_rgn true);//设置按钮的显示区域
dc.Ellipse(0 0 rect.Width() rect.Height());//绘制按钮
dc.SetTextColor(RGB(255 0 0));//设置文本颜色
}
else
{
CPen pen(PS_SOLID 2 RGB(255 255 255));
dc.Selectobject(&pen);
//根据位图大小设置按钮显示区域
HRGN h_rgn = CreateEllipticRgn(0 0 rect.Width() rect.Height());
SetWindowRgn(h_rgn true);
dc.Ellipse(0 0 rect.Width() rect.Height());
dc.SetTextColor(RGB(255 255 255));
}
//绘制按钮文本
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 he

评论

共有 条评论