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

📄 button.cpp

📁 在VC编程环境下
💻 CPP
字号:
/*
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
	文件:Button.cpp

	版权:Firebird Software Workroom 保留

	声明:本源程序的版权受《中华人民共和国著作权法》以及其
		  它相关法律和条约的保护。任何有机会得到本源程序的
		  个人和机构,未经作者明确授权,不得将本源程序用于
		  任何商业目的(直接的或间接的)。对于非商业目的的使
		  用 (包括复制、传播、编译和修改), 原则上没有特别
		  的限制条款,但请在相关文档中说明其来源,并尊重原
		  作者的署名权。

	编写:秦传安(chings)	2000.6

	联络:E_mail:chings@163.net
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@*/
#include "fclstd.h"
#include "Button.h"


/*
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

			class CFBButton

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@*/

CFBButton::CFBButton()
{
}

CFBButton::~CFBButton()
{
}
//#####################################################################
BOOL CFBButton::Create(CFBWnd* pParent,UINT uID,DWORD style,DWORD exStyle)
{
	if(pParent == NULL)
		return FALSE;

	style |= WS_CHILD | WS_VISIBLE;

	return CFBWnd::Create("BUTTON",
						  NULL,
						  pParent->GetInstance(),
						  pParent,
						  style,
						  exStyle,
						  (HMENU)uID);
}

/*
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

			class CFlatButton

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@*/

CFlatButton::CFlatButton()
{
	m_bMouseOver = FALSE;
	m_bPushed = FALSE;
}

CFlatButton::~CFlatButton()
{
}
//#####################################################################
BOOL CFlatButton::OnCreate()
{
	UINT style = BS_FLAT | BS_PUSHBUTTON | BS_BITMAP | BS_ICON | BS_TEXT | BS_OWNERDRAW;
	SetStyle(style);

	return TRUE;
}
//#####################################################################
LRESULT CFlatButton::WindowProc(UINT msg,WPARAM wParam,LPARAM lParam)
{
	LRESULT lResult = 0;

	switch(msg)
	{
	case WM_MOUSEMOVE:
		{
			POINT pt;
			pt.x = LOWORD(lParam);
			pt.y = HIWORD(lParam);

			OnMouseMove(pt);
		}
		break;
	case WM_DRAWITEM:
		{
			LPDRAWITEMSTRUCT pds = (LPDRAWITEMSTRUCT)lParam;
			OnDrawItem(pds);
		}
		break;
	default:
		lResult = CFBButton::WindowProc(msg,wParam,lParam);
		break;
	}

	return lResult;
}
//#####################################################################
void CFlatButton::OnMouseMove(POINT pt)
{
	if(m_bPushed)
		return;

	RECT rc;
	GetClientRect(m_hWnd,&rc);

	if(PtInRect(&rc,pt))
	{
		SetCapture(m_hWnd);
		if(m_bMouseOver == FALSE)
		{
			m_bMouseOver = TRUE;
			Invalidate(FALSE);
		}
	}
	else
	{
		ReleaseCapture();
		m_bMouseOver = FALSE;
		Invalidate(TRUE);
	}
}
//#####################################################################
void CFlatButton::OnDrawItem(LPDRAWITEMSTRUCT pds)
{
	if(m_bPushed || (GetState() & BST_PUSHED))
		DrawEdge(pds->hDC,&pds->rcItem,BDR_SUNKENOUTER,BF_RECT);
	else if(m_bMouseOver)
		DrawEdge(pds->hDC,&pds->rcItem,BDR_RAISEDINNER,BF_RECT);

	char text[64];

	text[0] = '\0';
	GetText(text,64);
	if(text[0] != '\0')
	{
		SIZE sz;
		RECT rc;
		CopyRect(&rc,&pds->rcItem);
		GetTextExtentPoint32(pds->hDC,text,lstrlen(text),&sz);

		rc.top += ((rc.bottom - rc.top) - sz.cy)/2;
		DrawText(pds->hDC,text,lstrlen(text),&rc,DT_CENTER);
	}
	else
	{
		HBITMAP hBmp = NULL;
		HICON hIcon = NULL;
		
		hBmp = (HBITMAP)GetImage(IMAGE_BITMAP);
		hIcon = (HICON)GetImage(IMAGE_ICON);
		
		if(hBmp)
		{
			HDC hdc = CreateCompatibleDC(pds->hDC);
			SelectObject(hdc,hBmp);
			BitBlt(pds->hDC,pds->rcItem.left,pds->rcItem.top,
				   pds->rcItem.right - pds->rcItem.left,
				   pds->rcItem.bottom - pds->rcItem.top,
				   hdc,0,0,SRCCOPY);

			DeleteDC(hdc);
		}
		else if(hIcon)
			DrawIcon(pds->hDC,pds->rcItem.left,pds->rcItem.top,hIcon);
	}
}
//#####################################################################
void CFlatButton::Pushed(BOOL bPushed)
{
	if(m_bPushed == bPushed)
		return;

	m_bPushed = bPushed;
	Invalidate(TRUE);
}

⌨️ 快捷键说明

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