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 + -
显示快捷键?