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

📄 buttonwnd.cpp

📁 此代码使用bmp图作为主要界面
💻 CPP
字号:
// ButtonWnd.cpp : implementation file
//

#include "stdafx.h"
#include "SuperViseSystem.h"
#include "ButtonWnd.h"

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

/////////////////////////////////////////////////////////////////////////////
// CButtonWnd

CButtonWnd::CButtonWnd()
{
	m_bTrackLeave = false;
	m_iButtonSatae = -1;
}

CButtonWnd::~CButtonWnd()
{
}


BEGIN_MESSAGE_MAP(CButtonWnd, CWnd)
	//{{AFX_MSG_MAP(CButtonWnd)
	ON_WM_PAINT()
	ON_WM_LBUTTONUP()
	ON_WM_LBUTTONDOWN()
	ON_WM_MOUSEMOVE()
	//}}AFX_MSG_MAP
	ON_MESSAGE(WM_MOUSELEAVE,OnMouseLeave)
END_MESSAGE_MAP()


/////////////////////////////////////////////////////////////////////////////
// CButtonWnd message handlers
//////////////////////////////////////////////////////////////////////////////
//以下几个函数主要完成了按钮图表的基本绘图
void CButtonWnd::OnPaint() 
{
	CPaintDC dc(this); // device context for painting
	
	POINT pt;
	pt.x = pt.y = 0;
	m_ilButton.Draw(GetDC(),m_iButtonSatae,pt,ILD_NORMAL);//ILD_MASK,ILD_NORMAL,ILD_TRANSPARENT
}

int CButtonWnd::Create(DWORD dwStyle, CRect &rect, CWnd *pParent, UINT id)
{
	int result;
 	result = CWnd::CreateEx(NULL,//WS_EX_WINDOWEDGE , 
		NULL, NULL, dwStyle, 
		rect.left, rect.top, rect.Width(), rect.Height(),
		pParent->GetSafeHwnd(), (HMENU)id) ;

	if( !result )
		AfxMessageBox("Error creating window");

	m_rcBtWnd.top = m_rcBtWnd.left = 0;
	m_rcBtWnd.bottom = m_rcBtWnd.top + rect.Height();
	m_rcBtWnd.right = m_rcBtWnd.left + rect.Width();

	m_id = id;
	m_pParent = pParent;
	//m_ilButton为CImageList类的一个对象,主要对图片列表做分割工作,
	m_ilButton.Create(m_rcBtWnd.Width(), m_rcBtWnd.Height(), TRUE|ILC_COLOR24, 3, 1);
	return result;
}

void CButtonWnd::SetButtonImageList(CBitmap *ImgList)
{
	m_ilButton.Add(ImgList,RGB(0,0,255));
	m_iButtonSatae = 0;
	Invalidate();
}
///////////////////////////////////////////////////////////////////////////////
//下面主要完成按钮动态表现的完成

void CButtonWnd::OnLButtonUp(UINT nFlags, CPoint point) 
{
	m_iButtonSatae = 1;
	Invalidate();
	GetParent()->PostMessage(WM_MYMESSAGE,m_id);
	CWnd::OnLButtonUp(nFlags, point);
}

void CButtonWnd::OnLButtonDown(UINT nFlags, CPoint point) 
{
	m_iButtonSatae = 2;
	Invalidate();
//---要完成相关的屏幕切分工作,先给其父窗口类发CReateMap类发送ID消息!
//---在由其父窗口类(CReateMap)类把ID消息发给其父窗口类DLG类!
	CWnd::OnLButtonDown(nFlags, point);

	
}

void CButtonWnd::OnMouseMove(UINT nFlags, CPoint point) 
{


	if (!m_bTrackLeave)		
	{
		// 鼠标第一次移入窗口时, 请求一个WM_MOUSELEAVE 消息
        TRACKMOUSEEVENT tme;
        tme.cbSize = sizeof(tme);
        tme.hwndTrack = m_hWnd;
        tme.dwFlags = TME_LEAVE;
        _TrackMouseEvent(&tme);
        m_bTrackLeave = true;
		// 在这里添加处理鼠标进入的代码 :
		m_iButtonSatae = 1;
		Invalidate();
    }
	CWnd::OnMouseMove(nFlags, point);
}
LPARAM CButtonWnd::OnMouseLeave(WPARAM wp, LPARAM lp)
{
	m_bTrackLeave = false;
	// 在这里添加处理鼠标离开的代码 :
    //m_pParent->PostMessage(WM_MYMESSAGE,2,0);
	m_iButtonSatae = 0;
	Invalidate();
    return 0;
}
///////////////////////////////////////////////////////////////////////////////
//按钮的动态显示已经完成!

⌨️ 快捷键说明

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