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

📄 roundbmpbutton.cpp

📁 完整的MP3播放器源码
💻 CPP
字号:
/////////////////////////////////////////////////////////////////////////////
// RoundBmpButton.cpp: implementation of the CRoundBitmapButton class.
//
//////////////////////////////////////////////////////////////////////

#include "stdafx.h"
#include "resource.h"
#include "RoundBmpButton.h"

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

//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////


BEGIN_MESSAGE_MAP(CRoundBitmapButton, CRoundButton)
	//{{AFX_MSG_MAP(CRoundBitmapButton)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()


CRoundBitmapButton::CRoundBitmapButton()
	: m_hIcon(0)
{

}

CRoundBitmapButton::~CRoundBitmapButton()
{

}


BOOL CRoundBitmapButton::SetIcon(LPCTSTR pszResource, const CSize & size) {
	m_hIcon = ::LoadIcon(HINSTANCE(GetModuleHandle(0)), pszResource);
	if( m_hIcon ) {
		SetWindowText(TEXT(""));
		if( size == CSize(0,0) )
			m_SizeIcon = CSize(16,16);//::GetSystemMetrics(SM_CXICON), ::GetSystemMetrics(SM_CYICON));
		else
			m_SizeIcon = size;
	}
	return m_hIcon ? TRUE : FALSE;
}

void CRoundBitmapButton::DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct) {
	ASSERT(lpDrawItemStruct != NULL);

	// first do default processing
	CRoundButton::DrawItem(lpDrawItemStruct);
	
	CDC* pDC   = CDC::FromHandle(lpDrawItemStruct->hDC);
	UINT state = lpDrawItemStruct->itemState;

	if( m_hIcon ) {
		CRgn rgn;

		if( m_bStretch ) {
			rgn.CreateRectRgn(m_ptLeft.x-m_nRadius/2, m_ptCentre.y-m_nRadius, 
				m_ptRight.x+m_nRadius/2, m_ptCentre.y+m_nRadius);
		} else {
			rgn.CreateEllipticRgn(m_ptCentre.x-m_nRadius, m_ptCentre.y-m_nRadius, 
				m_ptCentre.x+m_nRadius, m_ptCentre.y+m_nRadius);
		}

		pDC->SelectClipRgn(&rgn);

		CPoint pt = CPoint( m_ptCentre.x - m_SizeIcon.cx/2, m_ptCentre.y - m_SizeIcon.cy/2 );

		if( state & ODS_SELECTED )
			pt.Offset(1,1);

		pDC->SetBkMode(TRANSPARENT);

		::DrawIconEx(
			pDC->GetSafeHdc(),
			pt.x, pt.y,
			m_hIcon,
			m_SizeIcon.cx,
			m_SizeIcon.cy,
			0, 0,
			DI_NORMAL
		);

		pDC->SelectClipRgn(NULL);
		rgn.DeleteObject();
	}
}

⌨️ 快捷键说明

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