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

📄 xpbutton.cpp

📁 我们的网管程序的后台软件,主要是网络方面的内容.
💻 CPP
字号:
/*************************************************
	Copyright (C), 2000-2002, Huayue Co., Ltd.
	File name:  XpButton.cpp
	Module:	    
 	Author:     王华东
	Version:    1.0   
	Created on : 2002.11.04
	Description:  实现特种按钮
	Global function List:  
	Modify History: 
			Date:        Author:         Modification:
		1.  
*************************************************/


#include "stdafx.h"
#include "..\nms.h"
#include "xpButton.h"

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

/////////////////////////////////////////////////////////////////////////////
// CXPButton

CXPButton::CXPButton()
{
	m_MouseFlag = FALSE;
}

CXPButton::~CXPButton()
{
}


BEGIN_MESSAGE_MAP(CXPButton, CButton)
	//{{AFX_MSG_MAP(CXPButton)
	ON_WM_MOUSEMOVE()
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CXPButton message handlers



void CXPButton::DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct) 
{
	CString			m_Caption;

	GetWindowText(m_Caption);

	//重新设置按钮的字体

	CDC * hdc = CDC::FromHandle(lpDrawItemStruct->hDC);
    CBrush * m_brush, * m_Oldbrush;//, * Broderline;
	COLORREF m_BrushColor;
    CRect m_ButtonRect(lpDrawItemStruct->rcItem);
	CRect m_Borderline(m_ButtonRect);              

    //绘制各中状态下的按钮
    if ( (lpDrawItemStruct->itemState & ODS_FOCUS) )
	{
		m_ButtonRect.DeflateRect(1, 1);            
	}

	if(	(!m_MouseFlag) )//&& !(lpDrawItemStruct->itemState & ODS_SELECTED) )
	{
		m_BrushColor = RGB(240,240,240);//::GetSysColor(COLOR_ACTIVECAPTION);
		hdc->SetTextColor(RGB(0, 0, 0));
	}
	else
	{ 
		COLORREF BorderColor = ::GetSysColor(COLOR_HIGHLIGHT);
        if ((lpDrawItemStruct->itemState & ODS_SELECTED))
		{ 
			// unused
			m_BrushColor = RGB(100 , 100 , 205);
			hdc->SetTextColor(RGB(240, 240, 240));
		}
		else
		{
			m_BrushColor = RGB(170, 213, 255);
			hdc->SetTextColor(RGB(255, 255, 255));//::GetSysColor(COLOR_BTNTEXT));
		}
        
    }

	m_brush = new CBrush;

	m_brush->CreateSolidBrush(m_BrushColor);
	m_Oldbrush = (CBrush *)hdc->SelectObject(m_brush);

	hdc->Rectangle(m_Borderline);
	hdc->SetBkMode(TRANSPARENT);
	hdc->DrawText(m_Caption, m_ButtonRect,DT_SINGLELINE|DT_CENTER|DT_VCENTER);

/*	if(m_MouseFlag)
	{
		m_ButtonRect.DeflateRect(1, 1);
		hdc->FrameRect(m_ButtonRect , Broderline);
	}
*/
	hdc->SelectObject(m_Oldbrush);

	delete m_brush;

}

void CXPButton::ModifiColor(COLORREF color)
{
      
}
  

void CXPButton::OnMouseMove(UINT nFlags, CPoint point) 
{
	CWnd* pCaptureWnd = GetCapture();

	if (pCaptureWnd != this)
	{
		m_MouseFlag = TRUE;

		SetCapture();		// 加上该句可以防止当鼠标指向时发生闪烁
		
		Invalidate();
	}
	else
	{
		POINT p2 = point;

		ClientToScreen(&p2);

		/*
		 *		判断鼠标是否离开本窗口(释放鼠标!)
		 */
		CWnd* wndUnderMouse = WindowFromPoint(p2);
		if (wndUnderMouse && wndUnderMouse->m_hWnd != m_hWnd)
		{
			// 鼠标离开,重绘按钮
			if (m_MouseFlag == TRUE)
			{
				m_MouseFlag = FALSE;
				Invalidate();
				ReleaseCapture();
			}
			//if (!(nFlags & MK_LBUTTON)) 
 			//	ReleaseCapture();
		}

	}
	CButton::OnMouseMove(nFlags, point);
}	

BOOL CXPButton::PreTranslateMessage(MSG* pMsg) 
{
	if(pMsg->message == WM_LBUTTONDOWN)
	{
		m_MouseFlag = FALSE;
	}

	return CButton::PreTranslateMessage(pMsg);
}

⌨️ 快捷键说明

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