📄 ~transbutton.~cpp
字号:
// TransButton.cpp : implementation file
//
#include "stdafx.h"
#include "../dvrmanager.h"
#include "TransButton.h"
#include "click_btn.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CTransButton
CTransButton::CTransButton(): def_btn(false), in(false)
{
clbk = 0x00328032;
cltxt = RGB(255,255,255);
clfr = RGB(255,255,255);
clfocus = 0x000064ff;
cldef = 0x0032c032;//0x000064ff;
}
CTransButton::~CTransButton()
{
}
BEGIN_MESSAGE_MAP(CTransButton, CButton)
//{{AFX_MSG_MAP(CTransButton)
ON_WM_ERASEBKGND()
ON_WM_MOUSEMOVE()
ON_WM_LBUTTONUP()
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CTransButton message handlers
#include "memdc.h"
#include "logfont.h"
void CTransButton::paintbk()
{
CClientDC cdc(this);
CRect rc;
GetWindowRect(rc);
GetParent()->ScreenToClient(rc);
CDC* dc = GetParent()->GetDC();
cdc.BitBlt(0, 0, rc.Width(), rc.Height(), dc, rc.left, rc.top, SRCCOPY);
GetParent()->ReleaseDC(dc);
}
void CTransButton::DrawItem(LPDRAWITEMSTRUCT dis)
{
// paintbk();
CRect rc(dis->rcItem);
CDC *pdc = CDC::FromHandle(dis->hDC);
CMemDC mdc(pdc, rc);
CString title;
GetWindowText(title);
COLORREF bk=clbk, fr=clfr, txt=cltxt;
CFont *ft1 = GetParent()->GetFont();
CFont ft;
logfont lf(ft1);
if( def_btn )
{
rc.DeflateRect(2,2,2,2);
mdc.FrameRect(rc, &CBrush(RGB(0,0,0)));
rc.InflateRect(1,1,1,1);
}
0x31a464;
if( GetParent()->GetFocus() == this )
{
//bk = cldef;
//bk = RGB(0,60,0);
bk = RGB(255,0,0);
txt = RGB(255,255,255);
lf.lfWeight = FW_BOLD;
}
if( in )
bk = clfocus;
if( !IsWindowEnabled() )
{
bk = ::GetSysColor(COLOR_BTNFACE);
txt = ::GetSysColor(COLOR_BTNSHADOW);
}
mdc.FillRect(rc, &CBrush(bk));
lf.create_font(&ft);
ft1 = mdc.SelectObject(&ft);
// mdc.SetBkColor(clbk);
mdc.SetBkMode(TRANSPARENT);
mdc.SetTextColor(txt);
mdc.DrawText(title, rc, DT_SINGLELINE | DT_CENTER | DT_VCENTER | DT_END_ELLIPSIS);
mdc.SelectObject(ft1);
mdc.FrameRect(rc, &CBrush(fr));
}
void CTransButton::PreSubclassWindow()
{
if( GetButtonStyle() == BS_DEFPUSHBUTTON )
def_btn = true;
else
def_btn = false;
// GetButtonStyle();
SetButtonStyle(BS_OWNERDRAW | BS_NOTIFY);
CButton::PreSubclassWindow();
}
void CTransButton::set_bk(COLORREF bk)
{
clbk = bk;
if( IsWindow(m_hWnd) )
RedrawWindow();
}
BOOL CTransButton::OnEraseBkgnd(CDC* pDC)
{
return TRUE;
}
void CTransButton::OnMouseMove(UINT nFlags, CPoint point)
{
CRect rc;
GetWindowRect(rc);
CPoint pt(point);
ClientToScreen(&pt);
if( rc.PtInRect(pt) )
{
if( !in )
{
in = true;
SetCapture();
RedrawWindow();
}
}
else
{
if( in )
{
in = false;
ReleaseCapture();
RedrawWindow();
}
}
CButton::OnMouseMove(nFlags, point);
}
void CTransButton::OnLButtonUp(UINT nFlags, CPoint point)
{
in = false;
SetFocus();
ReleaseCapture();
click_btn(GetParent(), GetDlgCtrlID());
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -