propertybar.cpp
来自「故障诊断工作涉及的领域相当广泛」· C++ 代码 · 共 243 行
CPP
243 行
// PropertyBar.cpp : implementation file
//
#include "stdafx.h"
#include "Cad.h"
#include "PropertyBar.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
void CLineTypeData::DrawItem(CDC* pDC,const CRect& rc,BOOL bSelected)
{
CRect rcDraw(rc);
COLORREF crBackground, crText;
if(bSelected)
{
crBackground=GetSysColor(COLOR_HIGHLIGHT);
crText=GetSysColor(COLOR_HIGHLIGHTTEXT);
}
else
{
crBackground=GetSysColor(COLOR_WINDOW);
crText=GetSysColor(COLOR_WINDOWTEXT);
}
pDC->SetBkColor(crBackground);
ExtTextOut(pDC->GetSafeHdc(),0,0,ETO_OPAQUE,rcDraw,NULL,0,NULL);
CPen* pNewPen=new CPen;
ASSERT( pNewPen->CreatePen( m_nLineType, 1, RGB(0,0,0) ) );
CPen* pOldPen = pDC->SelectObject( pNewPen );
pDC->MoveTo(rcDraw.left,(rcDraw.top+rcDraw.bottom)/2);
pDC->LineTo(rcDraw.left+80,(rcDraw.top+rcDraw.bottom)/2);
pDC->SelectObject( pOldPen );
delete pNewPen;
rcDraw.left+=80+5;
pDC->SetBkColor(crBackground);
pDC->SetTextColor(crText);
pDC->DrawText(m_strName,m_strName.GetLength(),rcDraw,
DT_SINGLELINE|DT_VCENTER|DT_LEFT);
}
/////////////////////////////////////////////////////////////////////////////
// CLineTypeCmb
CLineTypeCmb::CLineTypeCmb()
{
}
CLineTypeCmb::~CLineTypeCmb()
{
}
BEGIN_MESSAGE_MAP(CLineTypeCmb, CComboBox)
//{{AFX_MSG_MAP(CLineTypeCmb)
ON_CONTROL_REFLECT(CBN_SELCHANGE, OnSelchange)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CLineTypeCmb message handlers
int CLineTypeCmb::AddItem(int nLineType , char* pszName)
{
CLineTypeData* pData=new CLineTypeData(nLineType,pszName);
int nRet=AddString((LPCSTR)pData);
if(nRet==LB_ERR)
delete pData;
return nRet;
}
void CLineTypeCmb::DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct)
{
CDC* pDC=CDC:: FromHandle(lpDrawItemStruct->hDC);
CLineTypeData* pData=(CLineTypeData*) (lpDrawItemStruct->itemData);
ASSERT(pData);
CRect rc(lpDrawItemStruct->rcItem);
if(lpDrawItemStruct->itemID==LB_ERR)
return;
if(lpDrawItemStruct->itemAction&(ODA_DRAWENTIRE|ODA_SELECT))
pData->DrawItem(pDC,rc,lpDrawItemStruct->itemState&ODS_SELECTED);
}
void CLineTypeCmb::MeasureItem(LPMEASUREITEMSTRUCT lpMeasureItemStruct)
{
lpMeasureItemStruct->itemHeight=18;
}
void CLineTypeCmb::DeleteItem(LPDELETEITEMSTRUCT lpDeleteItemStruct)
{
CLineTypeData* pData=(CLineTypeData*)(lpDeleteItemStruct->itemData);
ASSERT(pData);
delete pData;
}
void CLineTypeCmb::OnSelchange()
{
int nIndex=GetCurSel();
if(nIndex!=LB_ERR)
{
CLineTypeData* pData=(CLineTypeData *) GetItemDataPtr(nIndex);
if(pData!=(CLineTypeData *)-1)
{
g_nCurLineType=pData->m_nLineType;
}
}
}
void CColorData::DrawItem(CDC* pDC,const CRect& rc,BOOL bSelected)
{
CRect rcDraw(rc);
COLORREF crBackground, crText;
if(bSelected)
{
crBackground=GetSysColor(COLOR_HIGHLIGHT);
crText=GetSysColor(COLOR_HIGHLIGHTTEXT);
}
else
{
crBackground=GetSysColor(COLOR_WINDOW);
crText=GetSysColor(COLOR_WINDOWTEXT);
}
pDC->SetBkColor(crBackground);
ExtTextOut(pDC->GetSafeHdc(),0,0,ETO_OPAQUE,rcDraw,NULL,0,NULL);
CBrush* pNewBrush=new CBrush;
ASSERT( pNewBrush->CreateSolidBrush( m_rgbColor) ) ;
CBrush* pOldBrush = pDC->SelectObject( pNewBrush );
pDC->Rectangle(rcDraw.left+2,rcDraw.top+2,rcDraw.left+16,rcDraw.top+16);
pDC->SelectObject( pOldBrush );
delete pNewBrush;
rcDraw.left+=16+5;
pDC->SetBkColor(crBackground);
pDC->SetTextColor(crText);
pDC->DrawText(m_strName,m_strName.GetLength(),rcDraw,
DT_SINGLELINE|DT_VCENTER|DT_LEFT);
}
/////////////////////////////////////////////////////////////////////////////
// CColorCmb
CColorCmb::CColorCmb()
{
}
CColorCmb::~CColorCmb()
{
}
BEGIN_MESSAGE_MAP(CColorCmb, CComboBox)
//{{AFX_MSG_MAP(CColorCmb)
ON_CONTROL_REFLECT(CBN_SELCHANGE, OnSelchange)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CColorCmb message handlers
int CColorCmb::AddItem(COLORREF rgbColor , char* pszName)
{
CColorData* pData=new CColorData(rgbColor,pszName);
int nRet=AddString((LPCSTR)pData);
if(nRet==LB_ERR)
delete pData;
return nRet;
}
void CColorCmb::DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct)
{
CDC* pDC=CDC:: FromHandle(lpDrawItemStruct->hDC);
CColorData* pData=(CColorData*) (lpDrawItemStruct->itemData);
ASSERT(pData);
CRect rc(lpDrawItemStruct->rcItem);
if(lpDrawItemStruct->itemID==LB_ERR)
return;
if(lpDrawItemStruct->itemAction&(ODA_DRAWENTIRE|ODA_SELECT))
pData->DrawItem(pDC,rc,lpDrawItemStruct->itemState&ODS_SELECTED);
}
void CColorCmb::MeasureItem(LPMEASUREITEMSTRUCT lpMeasureItemStruct)
{
lpMeasureItemStruct->itemHeight=18;
}
void CColorCmb::DeleteItem(LPDELETEITEMSTRUCT lpDeleteItemStruct)
{
CColorData* pData=(CColorData*)(lpDeleteItemStruct->itemData);
ASSERT(pData);
delete pData;
}
void CColorCmb::OnSelchange()
{
int nIndex=GetCurSel();
if(nIndex!=LB_ERR)
{
CColorData* pData=(CColorData *) GetItemDataPtr(nIndex);
if(pData!=(CColorData *)-1)
{
g_nCurColor=pData->m_rgbColor;
}
}
}
/////////////////////////////////////////////////////////////////////////////
// CPropertyBar
CPropertyBar::CPropertyBar()
{
}
CPropertyBar::~CPropertyBar()
{
}
BEGIN_MESSAGE_MAP(CPropertyBar, CToolBar)
//{{AFX_MSG_MAP(CPropertyBar)
// NOTE - the ClassWizard will add and remove mapping macros here.
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CPropertyBar message handlers
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?