?? transradio.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); // 畫完內(nèi)圓
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);
}
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -