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

📄 transradio.cpp

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

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

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

/////////////////////////////////////////////////////////////////////////////
// CTransRadio

//##ModelId=3F90BAA7033C
CTransRadio::CTransRadio(): in(false)
{
}

//##ModelId=3F90BAA70359
CTransRadio::~CTransRadio()
{
}

BEGIN_MESSAGE_MAP(CTransRadio, CButton)
	//{{AFX_MSG_MAP(CTransRadio)
	ON_WM_MOUSEMOVE()
	ON_WM_LBUTTONDOWN()
	ON_WM_LBUTTONUP()
	ON_WM_ERASEBKGND()
	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()

/////////////////////////////////////////////////////////////////////////////
// CTransRadio message handlers

//##ModelId=3F90BAA7033B
void CTransRadio::on_checked()
{
	CWnd *pParent = GetParent();
	ASSERT(pParent);
	
	CWnd *sibling = this;
	while(1)
	{
		sibling = pParent->GetNextDlgGroupItem(sibling);
		if( sibling == this )
			break;
		sibling->SendMessage(BM_SETCHECK, BST_UNCHECKED);
	}
	SetCheck(1);
}

//##ModelId=3F90BAA70345
void CTransRadio::DrawItem(LPDRAWITEMSTRUCT dis) 
{
	CFont* font = GetParent()->GetFont();
	CDC* pdc = CDC::FromHandle(dis->hDC);
	font = pdc->SelectObject(font);

	CString str;
	GetWindowText(str);

	CRect rc(dis->rcItem);
	CRect rctxt(rc);
	const int R = 11;		// 外圆半径

	DWORD txtstyle = DT_VCENTER;
	if( GetButtonStyle() & BS_LEFTTEXT)
	{
		txtstyle |= DT_LEFT;
	}
	else
	{
		rctxt.OffsetRect(R+7, 0);
	}

	COLORREF txt = cltxt;
	pdc->SetTextColor(txt);
	pdc->SetBkMode(TRANSPARENT);
	pdc->DrawText(str, rctxt, txtstyle);

	pdc->SelectStockObject(WHITE_BRUSH);
	CRect rcround(0,0,R,R);
	if( GetButtonStyle() & BS_LEFTTEXT )
	{
		CSize size = pdc->GetOutputTextExtent(str);
		rcround.OffsetRect(size.cx+5, 0);
	}
	rcround.OffsetRect(2,0);
	vcenter_rect(rc, rcround);
	pdc->SelectStockObject(WHITE_PEN);
	pdc->Ellipse(rcround);		// 画完内圆
	pdc->SelectStockObject(NULL_BRUSH);
	rcround.InflateRect(2,2,2,2);
	if( in || GetParent()->GetFocus() == this )
		pdc->SelectStockObject(BLACK_PEN);
	vcenter_rect(rc, rcround);
	pdc->Ellipse(rcround);		// 圆圈

	if( checked )
	{
		rcround.DeflateRect(4,4,4,4);
		vcenter_rect(rc, rcround);
		CBrush br(0x22a122);
		pdc->SelectStockObject(BLACK_PEN);
		pdc->SelectObject(&br);
		pdc->Ellipse(rcround);
		pdc->SelectStockObject(BLACK_BRUSH);
	}

	pdc->SelectObject(font);
}

//##ModelId=3F90BAA7035B
void CTransRadio::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);
}

//##ModelId=3F90BAA70365
void CTransRadio::OnLButtonDown(UINT nFlags, CPoint point) 
{
//	SetCapture();
	CButton::OnLButtonDown(nFlags, point);
}

//##ModelId=3F90BAA70378
void CTransRadio::OnLButtonUp(UINT nFlags, CPoint point) 
{
	CRect rc;
	GetWindowRect(rc);
	CPoint pt(point);
	ClientToScreen(&pt);
	in = false;
	if( rc.PtInRect(pt) ) 
	{
//		click_btn(GetParent(), GetDlgCtrlID());
//		RedrawWindow();
		on_checked();
	}
	CButton::OnLButtonUp(nFlags, point);
//	ReleaseCapture();
}

//##ModelId=3F90BAA70383
BOOL CTransRadio::OnEraseBkgnd(CDC* pDC) 
{
	return TRUE;
}

//##ModelId=3F90BAA7034F
void CTransRadio::PreSubclassWindow() 
{
	checked = GetCheck();
	SetButtonStyle(BS_OWNERDRAW);
	CButton::PreSubclassWindow();
}

//##ModelId=3F90BAA703B3
LRESULT CTransRadio::on_get_check(WPARAM, LPARAM)
{
	return checked;
}

//##ModelId=3F90BAA703BE
LRESULT CTransRadio::on_set_check(WPARAM w, LPARAM)
{
	checked = w;
	RedrawWindow();
	return 0;
}

//##ModelId=3F90BAA703D1
LRESULT CTransRadio::on_get_state(WPARAM, LPARAM)
{
	return checked;
}

//##ModelId=3F90BAA70396
UINT CTransRadio::OnGetDlgCode() 
{
	return DLGC_RADIOBUTTON;
}


//##ModelId=3F90BAA7039F
void CTransRadio::OnKeyUp(UINT nChar, UINT nRepCnt, UINT nFlags) 
{
	if( nChar == VK_SPACE )
		on_checked();
	CButton::OnKeyUp(nChar, nRepCnt, nFlags);
}

⌨️ 快捷键说明

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