📄 xpbutton.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 + -