📄 mystatic.cpp
字号:
// MyStatic.cpp : implementation file
//
#include "stdafx.h"
#include "MyStatic.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CMyStatic
CMyStatic::CMyStatic()
{
flagval=0;
bitcount=8;
enlbd=false;
highbr=new CBrush(RGB(255,0,0));
lowbr=new CBrush(RGB(255,255,255));
lampsize=20;
space=8;
}
CMyStatic::~CMyStatic()
{
delete highbr;
delete lowbr;
}
BEGIN_MESSAGE_MAP(CMyStatic, CStatic)
//{{AFX_MSG_MAP(CMyStatic)
ON_WM_PAINT()
ON_WM_LBUTTONDOWN()
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CMyStatic message handlers
void CMyStatic::SetFlagVal(long wflag)
{
flagval=wflag;
Invalidate();
}
long CMyStatic::GetFlagVal()
{
return flagval;
}
void CMyStatic::SetLampSize(int size,int sp)
{
lampsize=size;
space=sp;
Invalidate();
}
void CMyStatic::SetBitCount(int cn)
{
if(cn>32)
{
MessageBox("Max. Only 32 Bit");
return;
}
bitcount=cn;
Invalidate();
}
void CMyStatic::SetLampColor(CBrush hibrush,CBrush lowbrush)
{
highbr=&hibrush;
lowbr=&lowbrush;
Invalidate();
}
void CMyStatic::OnPaint()
{
CPaintDC dc(this); // device context for painting
// TODO: Add your message handler code here
// Do not call CStatic::OnPaint() for painting messages
int i;
CRect wrt;
GetWindowRect(wrt);
starpos=(wrt.Height()-lampsize)/2;
CRect rect(0,starpos,lampsize,lampsize+starpos);
for(i=0;i<bitcount;i++)
{
DWORD bi=1;
bi=bi<<i;
if(flagval&bi)
dc.SelectObject(highbr);
else
dc.SelectObject(lowbr);
dc.Ellipse(rect);
rect.left+=(lampsize+space);
rect.right=rect.left+lampsize;
}
}
void CMyStatic::OnLButtonDown(UINT nFlags, CPoint point)
{
// TODO: Add your message handler code here and/or call default
if (!enlbd)
return;
if (point.y<starpos || point.y>starpos+lampsize)
return;
int i=point.x/(lampsize+space);
int j=point.x%(lampsize+space);
DWORD bi=1;
if (j<(lampsize)&&i<bitcount){
bi<<=i;
if(flagval&bi)
flagval-=bi;
else
flagval=flagval | bi;
Invalidate();
}
CStatic::OnLButtonDown(nFlags, point);
}
BOOL CMyStatic::EnableLeftBD(BOOL enable)
{
enlbd=enable;
return enlbd;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -