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

📄 basebutton.cpp

📁 自绘按钮边框
💻 CPP
字号:
// BaseButton.cpp : implementation file
//

#include "stdafx.h"
#include "BaseButton.h"

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

/////////////////////////////////////////////////////////////////////////////
// CBaseButton

CBaseButton::CBaseButton()
{

}

CBaseButton::~CBaseButton()
{
	m_Down.DeleteObject();
	m_Up.DeleteObject();
	m_Enabled.DeleteObject();
	
}


BEGIN_MESSAGE_MAP(CBaseButton, CButton)
	//{{AFX_MSG_MAP(CBaseButton)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CBaseButton message handlers
void CBaseButton::DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct) 
{
	CDC* pDC;
	CDC memDC;
	CBrush brush;
	brush.CreateSolidBrush(RGB(255,255,255));
	pDC=CDC::FromHandle(lpDrawItemStruct->hDC);
	UINT state=lpDrawItemStruct->itemState;
	CRect rect=lpDrawItemStruct->rcItem;
	//画按钮
	pDC->FillRect(rect,&brush);
	memDC.CreateCompatibleDC(pDC);
	if(state&ODS_SELECTED)
	{
		memDC.SelectObject(m_Up);
		pDC->SetTextColor(RGB(219,147,132));
	}
	else
	{
		memDC.SelectObject(m_Down);
		pDC->SetTextColor(RGB(44,102,153));
	}
	if(state&ODS_DISABLED)
	{
		memDC.SelectObject(m_Enabled);
		pDC->SetTextColor(RGB(128,128,128));
	}
	BITMAP bitstruct;
	m_Up.GetBitmap(&bitstruct);
	pDC->BitBlt((rect.Width()/2)-(bitstruct.bmWidth/2),0,rect.Width(),rect.Height(),&memDC,0,0,SRCCOPY);
	//写按钮文本
	pDC->SetBkMode(TRANSPARENT);
	CString sCaption;
	this->GetWindowText(sCaption);
	pDC->DrawText(sCaption,rect,DT_CENTER|DT_BOTTOM|DT_SINGLELINE);
	memDC.DeleteDC();
	brush.DeleteObject();
}



BOOL CBaseButton::PreTranslateMessage(MSG* pMsg) 
{

	if(pMsg->hwnd==this->GetSafeHwnd()&&pMsg->message==WM_KEYDOWN && pMsg->wParam==13)
	{
		pMsg->lParam=589857;
		pMsg->message=WM_LBUTTONDOWN;
	}
	if(pMsg->hwnd==this->GetSafeHwnd()&&pMsg->message==WM_KEYUP && pMsg->wParam==13)
	{
		pMsg->lParam=589857;
		pMsg->message=WM_LBUTTONUP;
	}

	return CButton::PreTranslateMessage(pMsg);
}


void CBaseButton::LoadPic(UINT downpic, UINT uppic, UINT enabledpic)
{
	if(downpic==NULL||uppic==NULL||enabledpic==NULL)
		return;
	m_Down.LoadBitmap(downpic);
	m_Up.LoadBitmap(uppic);
	m_Enabled.LoadBitmap(enabledpic);

}

⌨️ 快捷键说明

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