📄 roundbmpbutton.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 + -