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

📄 mybutton.cpp

📁 一个多方面查询的系统,也是很辛苦找到,并且做管理系统很多方面都用到的
💻 CPP
字号:
// MyButton.cpp: implementation of the CMyButton class.
//
//////////////////////////////////////////////////////////////////////

#include "stdafx.h"
#include "front.h"
#include "MyButton.h"

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

//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
IMPLEMENT_DYNCREATE(CMyButton, CWnd)

BEGIN_MESSAGE_MAP(CMyButton, CWnd)
	//{{AFX_MSG_MAP(CGfxOutBarCtrl)
	ON_WM_CREATE()
	ON_WM_PAINT()
	ON_WM_LBUTTONDOWN()
	ON_WM_LBUTTONUP()
	ON_WM_MOUSEMOVE()
	ON_WM_TIMER()
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()


CMyButton::CMyButton()
{
	crBackground0=GetSysColor(COLOR_BACKGROUND);
	crBackground1=RGB(108,149,239); //背景色
}

CMyButton::~CMyButton()
{
	if(iFlag==0)delete TitleLabel;
	else
	{
		delete OKButton;
		delete CancelButton;
		delete UpButton;
		delete DownButton;
	}
}

int CMyButton::Create(DWORD dwStyle, const RECT &rect, CWnd *pParentWnd, UINT nID,int flag)
{
	iFlag=flag;
	ButtonRect=rect;
	return CWnd::CreateEx(NULL, NULL, NULL, dwStyle|WS_CHILD, rect, pParentWnd, nID);
}


int CMyButton::OnCreate(LPCREATESTRUCT lpCreateStruct) 
{
	if (CWnd::OnCreate(lpCreateStruct) == -1)
		return -1;

	SetTimer(1,100,NULL);
	// TODO: Add your specialized creation code here
	if(iFlag==0)  //左边
	{
		TitleLabel=new CMyLabel("Front",3,1,true,false,IDC_TITLELABEL,-1,pParentWnd);
		TitleLabel->setPos(5,3,70,20);
		TitleLabel->StretchWidth=1;
		TitleLabel->OpenBitmap("res/titlebmp.bmp");
	}
	else  //右边
	{
		CRect ClientRc;
		GetClientRect(&ClientRc);
		rightRc.SetRect(ClientRc.right-73,ClientRc.top+2,ClientRc.right-51,ClientRc.top+22);
		midRc.SetRect(ClientRc.right-49,ClientRc.top+2,ClientRc.right-29,ClientRc.top+22);
		leftRc.SetRect(ClientRc.right-27,ClientRc.top+2,ClientRc.right-5,ClientRc.top+22);


		OKButton=new CMyLabel(NULL,1,1,true,false,IDC_MYOK,-1,GetOwner());
		OKButton->OpenBitmap("res/sure.bmp");

		CancelButton=new CMyLabel(NULL,1,1,true,false,IDC_MYCANCEL,-1,GetOwner());
		CancelButton->OpenBitmap("res/close.bmp");

	    UpButton=new CMyLabel(NULL,1,1,true,false,IDC_MYUP,-1,GetOwner());
		UpButton->OpenBitmap("res/left.bmp");

		DownButton=new CMyLabel(NULL,1,1,true,false,IDC_MYDOWN,-1,GetOwner());
		DownButton->OpenBitmap("res/right.bmp");
	}

	return 1;
}

void CMyButton::OnPaint() 
{
	CRect clientRc;
	GetClientRect(&clientRc);
	CPaintDC dc(this);
	CDC memDC;
	memDC.CreateCompatibleDC(&dc);
	CBitmap bmp;
	bmp.CreateCompatibleBitmap(&dc, clientRc.Width(), clientRc.Height());
	CBitmap * obmp = memDC.SelectObject(&bmp);

	CDC * pDC = &memDC;  //这一步并不是多余,可以简化编程

	//所画东西不改变背景色
	int obk = pDC->SetBkMode(TRANSPARENT);
	//使用系统默认字体
	CFont * ofont = pDC->SelectObject(CFont::FromHandle((HFONT)GetStockObject(DEFAULT_GUI_FONT)));



	
	
	//TODO 这里可以添自己的代码	
	if(iFlag==0)
	{
		CBrush *pOldBrush,brush;
		brush.CreateSolidBrush(crBackground0);
		pOldBrush=pDC->SelectObject(&brush);

		pDC->RoundRect(CRect(-1,-1,90,30),CPoint(17,17));
		TitleLabel->SetTextCol(RGB(243,243,243));
		TitleLabel->DrawLabel(pDC);

		pDC->SelectObject(pOldBrush);
	}
	else
	{
		OKButton->bEnable=false;
		CancelButton->bEnable=false;
		UpButton->bEnable=false;
		DownButton->bEnable=false;

		CBrush brush;
		brush.CreateSolidBrush(crBackground1);
		pDC->FillRect(clientRc,&brush);

		if(iFlag==1)  //确定,取消
		{
			OKButton->bEnable=true;
			OKButton->setPos(midRc.left,midRc.top,midRc.right,midRc.bottom);
			OKButton->DrawLabel(pDC);
			CancelButton->bEnable=true;
			CancelButton->setPos(leftRc.left,leftRc.top,leftRc.right,leftRc.bottom);
			CancelButton->DrawLabel(pDC);
		}
		if(iFlag==2)  //向下,取消
		{
			DownButton->bEnable=true;
			DownButton->setPos(midRc.left,midRc.top,midRc.right,midRc.bottom);
			DownButton->DrawLabel(pDC);

			CancelButton->bEnable=true;
			CancelButton->setPos(leftRc.left,leftRc.top,leftRc.right,leftRc.bottom);
			CancelButton->DrawLabel(pDC);
		}
		if(iFlag==3)  //向上,向下,取消
		{
			UpButton->bEnable=true;
			UpButton->setPos(rightRc.left,rightRc.top,rightRc.right,rightRc.bottom);
			UpButton->DrawLabel(pDC);

			DownButton->bEnable=true;
			DownButton->setPos(midRc.left,midRc.top,midRc.right,midRc.bottom);
			DownButton->DrawLabel(pDC);

			CancelButton->bEnable=true;
			CancelButton->setPos(leftRc.left,leftRc.top,leftRc.right,leftRc.bottom);
			CancelButton->DrawLabel(pDC);
		}
		if(iFlag==4)  //向上,确定,取消
		{
			UpButton->bEnable=true;
			UpButton->setPos(rightRc.left,rightRc.top,rightRc.right,rightRc.bottom);
			UpButton->DrawLabel(pDC);

			OKButton->bEnable=true;
			OKButton->setPos(midRc.left,midRc.top,midRc.right,midRc.bottom);
			OKButton->DrawLabel(pDC);

			CancelButton->bEnable=true;
			CancelButton->setPos(leftRc.left,leftRc.top,leftRc.right,leftRc.bottom);
			CancelButton->DrawLabel(pDC);
		}

		if(iFlag==5)    //取消
		{
			CancelButton->bEnable=true;
			CancelButton->setPos(leftRc.left,leftRc.top,leftRc.right,leftRc.bottom);
			CancelButton->DrawLabel(pDC);
		}

	}

	

	dc.BitBlt(clientRc.left, clientRc.top, clientRc.Width(), clientRc.Height(), &memDC, 0,0, SRCCOPY);
	memDC.SelectObject(obmp);

	pDC->SelectObject(ofont);
	pDC->SetBkMode(obk);
	
}


void CMyButton::OnLButtonUp(UINT nFlags, CPoint point) 
{
	if(iFlag==0)TitleLabel->OnLButtonUp(point);
	else
	{
		OKButton->OnLButtonUp(point);
		CancelButton->OnLButtonUp(point);
		UpButton->OnLButtonUp(point);
		DownButton->OnLButtonUp(point);

	}

	CWnd::OnLButtonUp(nFlags, point);
	Invalidate();
}

void CMyButton::OnLButtonDown(UINT nFlags, CPoint point) 
{
	if(iFlag==0)TitleLabel->OnLButtonDown(point);
	else
	{
		OKButton->OnLButtonDown(point);
		CancelButton->OnLButtonDown(point);
		UpButton->OnLButtonDown(point);
		DownButton->OnLButtonDown(point);	
	}

	CWnd::OnLButtonDown(nFlags, point);
	Invalidate();
}

void CMyButton::OnMouseMove(UINT nFlags, CPoint point) 
{
	if(iFlag==0)TitleLabel->OnMouseMove(point);
	else
	{
		OKButton->OnMouseMove(point);
		CancelButton->OnMouseMove(point);
		UpButton->OnMouseMove(point);
		DownButton->OnMouseMove(point);
	}

	CWnd::OnMouseMove(nFlags,point);
	Invalidate();
}

void CMyButton::OnTimer(UINT nIDEvent) 
{
	//当鼠标出离程序框时
	CPoint pt(GetMessagePos());
	ScreenToClient(&pt);
	CRect rc;
	GetClientRect(&rc);
	if (!(rc.PtInRect(pt)))
	{
		if(iFlag==0)TitleLabel->OutRect();
		else
		{
			OKButton->OutRect();
			CancelButton->OutRect();
			UpButton->OutRect();
			DownButton->OutRect();
		}
	}

	Invalidate();
}

⌨️ 快捷键说明

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