📄 battbtn.cpp
字号:
// BattBtn.cpp : implementation file
//
#include "stdafx.h"
#include "tcCMMB.h"
#include "BattBtn.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CBattBtn
CBattBtn::CBattBtn()
{
m_Normal.LoadBitmap(IDB_BTN_BATTERY_BODY);
}
CBattBtn::~CBattBtn()
{
}
BEGIN_MESSAGE_MAP(CBattBtn, CButton)
//{{AFX_MSG_MAP(CBattBtn)
ON_WM_ERASEBKGND()
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CBattBtn message handlers
void CBattBtn::PreSubclassWindow()
{
UINT nBS;
nBS = GetButtonStyle();
//if (nBS & BS_DEFPUSHBUTTON) m_MouseOnButton = TRUE;
SetButtonStyle(nBS | BS_OWNERDRAW);
CButton::PreSubclassWindow();
ModifyStyle(WS_TABSTOP, 0);
}
void CBattBtn::DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct)
{
CDC *pDC = CDC::FromHandle(lpDrawItemStruct->hDC);
CRect r;
GetClientRect(&r);
CDC memdc;
// the main body of battery
memdc.CreateCompatibleDC(pDC);
memdc.SelectObject(m_Normal);
pDC->BitBlt(0, 0, r.Width(), r.Height(), &memdc, 0, 0, SRCCOPY);
memdc.DeleteDC();
// calculate the full area
r.left += 6;
r.top += 3;
r.right -= 3;
r.bottom -= 3;
//
r.left = r.right - m_Level*(r.right-r.left)/100;
// the color of battery
CBrush nBrush(RGB(0xff,0xff,0xff));
pDC->FillRect(&r, &nBrush);
}
BOOL CBattBtn::OnEraseBkgnd(CDC* pDC)
{
return FALSE;
}
void CBattBtn::SetBatteryLevel(int level)
{
m_Level = level;
Invalidate();
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -