|
下面的代码或许能对你有所帮助:
void CButtonTR::DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct)
{
// TODO: Add your code to draw the specified item
ASSERT(lpDrawItemStruct->CtlType==ODT_BUTTON);
CRect rcButton(lpDrawItemStruct->rcItem);
CDC * pDC=CDC::FromHandle(lpDrawItemStruct->hDC);
UINT nState = lpDrawItemStruct->itemState;
CString strText;
GetWindowText(strText);
pDC->SetBkMode(TRANSPARENT);
pDC->SetTextColor(m_crFont);
PaintBk(pDC);
if(m_bOver)
{
pDC->Draw3dRect(rcButton,GetSysColor(COLOR_3DHILIGHT),GetSysColor(COLOR_3DSHADOW));
}
if(nState & ODS_SELECTED)
{
//pDC->Draw3dRect(rcButton,GetSysColor(COLOR_3DSHADOW), GetSysColor(COLOR_3DHILIGHT));
pDC->Draw3dRect(rcButton,RGB(255,0,0),RGB(255,0,0));
}
else
{
pDC->Draw3dRect(rcButton,RGB(255,255,0),RGB(255,255,0));
}
CSize szExtent = pDC->GetTextExtent(strText, lstrlen(strText));
CPoint pt;
switch(m_nTextAlign)
{
case BS_LEFT:
pt.x=8;
pt.y=rcButton.CenterPoint().y - szExtent.cy / 2;
break;
case BS_RIGHT:
pt.x=rcButton.Width()-szExtent.cx-8;
pt.y=rcButton.CenterPoint().y - szExtent.cy / 2;
break;
case BS_TOP:
pt.x=rcButton.CenterPoint().x - szExtent.cx / 2;
pt.y=2;
break;
case BS_BOTTOM:
pt.x=rcButton.CenterPoint().x - szExtent.cx / 2;
pt.y=rcButton.Height()-szExtent.cy-2;
break;
default:
pt.x=rcButton.CenterPoint().x - szExtent.cx / 2;
pt.y=rcButton.CenterPoint().y - szExtent.cy / 2;
break;
}
// CPoint pt( rcButton.CenterPoint().x - szExtent.cx / 2, rcButton.CenterPoint().y - szExtent.cy / 2);
// CPoint pt(5,rcButton.CenterPoint().y - szExtent.cy / 2);
CPoint ptIcon(-6,-2);
CPoint ptText(12,0);
if (nState & ODS_SELECTED)
pt.Offset(1, 1);
/*
if(m_hIcon)
{
pDC->DrawState(pt+ptIcon,CSize(16,16),m_hIcon,DST_ICON,(HBRUSH)NULL);
pDC->DrawState(pt+ptText, szExtent, strText, DSS_NORMAL, TRUE, 0, (HBRUSH)NULL);
}
else
{
pDC->DrawState(pt, szExtent, strText, DSS_NORMAL, TRUE, 0, (HBRUSH)NULL);
}
*/
} |
|