📄 propertybar.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 + -