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

📄 propertybar.cpp

📁 根据《VC++6.0 用户界面制作技术与应用实例》写的一些代码
💻 CPP
字号:
// PropertyBar.cpp : implementation file
//

#include "stdafx.h"
#include "test2.h"
#include "PropertyBar.h"

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

/////////////////////////////////////////////////////////////////////////////
// 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
/////////////////////////////////////////////////////////////////////////////
// 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

void CLineTypeCmb::DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct) 
{
	// TODO: Add your code to draw the specified item
	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&&ODA_SELECT);
}

void CLineTypeCmb::MeasureItem(LPMEASUREITEMSTRUCT lpMeasureItemStruct) 
{
	// TODO: Add your code to determine the size of specified item
	lpMeasureItemStruct->itemWidth = 18;
}

void CLineTypeCmb::DeleteItem(LPDELETEITEMSTRUCT lpDeleteItemStruct) 
{
	// TODO: Add your specialized code here and/or call the base class
	CLineTypeData * pData = (CLineTypeData *)(lpDeleteItemStruct->itemData);
	ASSERT(pData);
	delete pData ;
	//CComboBox::DeleteItem(lpDeleteItemStruct);
}

void CLineTypeCmb::OnSelchange() 
{
	// TODO: Add your control notification handler code here
	int nIndex = GetCurSel();
	if(nIndex!=LB_ERR)
	{
		CLineTypeData * pData = (CLineTypeData *)GetItemDataPtr(nIndex);
		if(pData!=(CLineTypeData *)-1)
		{
			char tbuf[40];
			sprintf(tbuf ,"%s is selected" ,pData->m_strName);
			AfxMessageBox(tbuf);
		}
	}
}

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 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 += 85 ;

	pDC->SetBkColor(crBackground);
	pDC->SetTextColor(crText);
	pDC->DrawText(m_strName,m_strName.GetLength(),rcDraw,DT_SINGLELINE|DT_VCENTER|DT_LEFT);
}

⌨️ 快捷键说明

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