📄 bitmapbuttonex.cpp
字号:
// BitmapButtonEX.cpp : implementation file
//
#include "stdafx.h"
#include "BitmapButtonEX.h"
#include "Resource.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CBitmapButtonEX
CBitmapButtonEX::CBitmapButtonEX()
{
m_MouseMoveOn=FALSE;
}
CBitmapButtonEX::~CBitmapButtonEX()
{
}
BEGIN_MESSAGE_MAP(CBitmapButtonEX, CButton)
//{{AFX_MSG_MAP(CBitmapButtonEX)
ON_WM_MOUSEMOVE()
ON_WM_LBUTTONUP()
ON_WM_LBUTTONDOWN()
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CBitmapButtonEX message handlers
void CBitmapButtonEX::DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct)
{
// TODO: Add your code to draw the specified item
CDC MemDC;
CBitmap* pOld=NULL;
CDC* pDC;
CRect rc;
pDC=CDC::FromHandle(lpDrawItemStruct->hDC);
MemDC.CreateCompatibleDC(pDC);
VERIFY(pDC);
rc.CopyRect(&lpDrawItemStruct->rcItem);
MemDC.SelectObject(m_ButtonBK);
pDC->BitBlt(0,0,rc.Width(),rc.Height(),&MemDC,0,0,SRCPAINT);
if(lpDrawItemStruct->itemState & ODS_SELECTED)
pOld=MemDC.SelectObject(&m_ButtonDown);
else if(m_MouseMoveOn)
pOld=MemDC.SelectObject(&m_ButtonMoveOn);
else
pOld=MemDC.SelectObject(&m_ButtonUp);
pDC->BitBlt(0,0,rc.Width(),rc.Height(),&MemDC,0,0,SRCAND);
MemDC.SelectObject(pOld);
}
void CBitmapButtonEX::LoadButtonBmp(UINT uButtonUp,UINT uButtonDown,UINT uButtonMoveOn,UINT uButtonBK)
{
m_ButtonUp.LoadBitmap(uButtonUp);
m_ButtonDown.LoadBitmap(uButtonDown);
m_ButtonMoveOn.LoadBitmap(uButtonMoveOn);
m_ButtonBK.LoadBitmap(uButtonBK);
}
void CBitmapButtonEX::OnMouseMove(UINT nFlags, CPoint point)
{
//m_ButtonBK.LoadBitmap(IDB_BITMAPBK1);
CBitmapButton::OnMouseMove(nFlags, point);
if((nFlags & MK_LBUTTON)&&(m_MouseMoveOn==FALSE))
return;
// TODO: Add your message handler code here and/or call default
if(GetCapture()!=this)
{
m_MouseMoveOn=TRUE;
SetCapture();
Invalidate();
}
else
{
if(m_MouseMoveOn)
{
CRect rc;
GetClientRect(&rc);
if(!rc.PtInRect(point))
{
m_MouseMoveOn=FALSE;
Invalidate();
ReleaseCapture();
}
}
}
}
void CBitmapButtonEX::Restart()
{
m_MouseMoveOn=FALSE;
Invalidate();
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -