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

📄 bitmapbuttonex.cpp

📁 网络围棋对战的客户端
💻 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 + -