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

📄 ~transck.~cpp

📁 实时监控
💻 ~CPP
字号:
// TransCK.cpp : implementation file
//

#include "stdafx.h"
#include "..\dvrmanager.h"
#include "TransCK.h"
#include "rect.h"
#include "click_btn.h"

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

/////////////////////////////////////////////////////////////////////////////
// CTransCK

CTransCK::CTransCK(): checked(FALSE), in(false)
{
}

CTransCK::~CTransCK()
{
}


BEGIN_MESSAGE_MAP(CTransCK, CButton)
	//{{AFX_MSG_MAP(CTransCK)
	ON_WM_ERASEBKGND()
	ON_WM_LBUTTONUP()
	ON_WM_LBUTTONDOWN()
	ON_WM_MOUSEMOVE()
	ON_WM_GETDLGCODE()
	ON_WM_KEYUP()
	//}}AFX_MSG_MAP
	ON_MESSAGE(BM_GETCHECK, on_get_check)
	ON_MESSAGE(BM_SETCHECK, on_set_check)
	ON_MESSAGE(BM_GETSTATE, on_get_state)
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CTransCK message handlers
BOOL CTransCK::OnEraseBkgnd(CDC* pDC)
{
//	paint_bk(pDC);
	return TRUE;
}

void CTransCK::PreSubclassWindow() 
{
	ASSERT( GetButtonStyle() & BS_CHECKBOX );
	SetButtonStyle(BS_OWNERDRAW);
	checked = GetCheck();
	CButton::PreSubclassWindow();
}

void CTransCK::draw_box(CDC* pdc)
{
	const int R = 14;
	UINT style = GetButtonStyle();
	CRect rc;
	GetClientRect(rc);

	CRect rc_box(rc);

	COLORREF fill = clfill, tick = cltick, fr = clfr;
	if( !IsWindowEnabled() )
	{
		fill = GetSysColor(COLOR_BTNSHADOW);
		tick = 0;//GetSysColor(COLOR_BTNFACE);
	}
	if( in || (GetParent()->GetFocus() == this) )
		fr = 0;

	if( style & BS_LEFTTEXT )
	{
		rc_box.top = rc_box.bottom - R;
		rc_box.left = rc_box.right - R;
	}
	else
	{
		rc_box.bottom = rc_box.top + R;
		rc_box.right = rc_box.left + R;
	}

	vcenter_rect(rc, rc_box);
	pdc->FrameRect(rc_box, &CBrush(fr));

	rc_box.DeflateRect(2,2,2,2);
	pdc->FillRect(rc_box, &CBrush(fill));

	if( !checked )
		return;


	CPen pen, *old;
	pen.CreatePen(PS_SOLID, 2, tick);
	old = pdc->SelectObject(&pen);

	rc_box.DeflateRect(2,2,2,2);
	pdc->MoveTo(rc_box.left, rc_box.bottom - rc_box.Height()/3);
	pdc->LineTo(rc_box.left+rc_box.Width()/3, rc_box.bottom);
	pdc->LineTo(rc_box.right, rc_box.top + rc_box.Height()/3);

	pdc->SelectObject(old);
}

void CTransCK::DrawItem(LPDRAWITEMSTRUCT s) 
{
	const int R = 14;
	CDC* pdc = CDC::FromHandle(s->hDC);
	CString str;
	GetWindowText(str);

	CRect rc(s->rcItem);
	
	pdc->SetBkMode(TRANSPARENT);
	pdc->SetTextColor(RGB(255,255,255));

	if( (GetButtonStyle() & BS_LEFTTEXT) == 0 )
	{
		rc.OffsetRect(R+4, 0);
	}
	pdc->DrawText(str, rc, DT_LEFT | DT_SINGLELINE);

	draw_box(pdc);

}

LRESULT CTransCK::on_get_check(WPARAM, LPARAM)
{
	return checked;
}

LRESULT CTransCK::on_set_check(WPARAM w, LPARAM)
{
	checked = w;
	RedrawWindow();
	return 0;
}

LRESULT CTransCK::on_get_state(WPARAM, LPARAM)
{
	return checked;
}

void CTransCK::OnLButtonUp(UINT nFlags, CPoint point) 
{
	CRect rc;
	GetWindowRect(rc);
	CPoint pt(point);
	ClientToScreen(&pt);
	if( rc.PtInRect(pt) ) 
	{
		checked = !checked;
		RedrawWindow();
		click_btn(GetParent(), GetDlgCtrlID());
	}
	//CButton::OnLButtonUp(nFlags, point);
	ReleaseCapture();

	in = false;
}

void CTransCK::OnLButtonDown(UINT nFlags, CPoint point) 
{
	SetCapture();
//	CButton::OnLButtonDown(nFlags, point);
}


void CTransCK::OnMouseMove(UINT nFlags, CPoint point) 
{
	CRect rc;
	CPoint pt;
	GetWindowRect(rc);
	GetCursorPos(&pt);
	if( rc.PtInRect(pt) )
	{
		if( !in )
		{
			in = true;
			SetCapture();
			RedrawWindow();
		}
	}
	else
	{
		if( in )
		{
			in = false;
			ReleaseCapture();
			RedrawWindow();
		}
	}
	CButton::OnMouseMove(nFlags, point);
}

UINT CTransCK::OnGetDlgCode() 
{
	return DLGC_BUTTON;
}

void CTransCK::OnKeyUp(UINT nChar, UINT nRepCnt, UINT nFlags) 
{
	if( nChar == VK_SPACE )	
	{
		checked = !checked;
		click_btn(GetParent(), GetDlgCtrlID());
		RedrawWindow();
	}
	CButton::OnKeyUp(nChar, nRepCnt, nFlags);
}

⌨️ 快捷键说明

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