15,979
社区成员
发帖
与我相关
我的任务
分享
void CMyListBox::DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct)
{
// TODO: 添加您的代码以绘制指定项
COLORREF clrItemText;
LPDRAWITEMSTRUCT lpDIS = lpDrawItemStruct;
switch ( lpDIS->itemAction ) //lpDIS为一个LPMEASUREITEMSTRUCT(记录控件信息)
{
case ODA_SELECT:
case ODA_DRAWENTIRE:
// Is the item selected?
if ( lpDIS->itemState & ODS_SELECTED )
{
clrItemText = GetSysColor( COLOR_HIGHLIGHTTEXT );
// Clear the rectangle
FillRect( lpDIS->hDC, &lpDIS->rcItem, (HBRUSH)(COLOR_ACTIVECAPTION+1) );
}
else
{
clrItemText = GetSysColor( COLOR_WINDOWTEXT );
// Clear the rectangle
FillRect( lpDIS->hDC, &lpDIS->rcItem, (HBRUSH)(COLOR_WINDOW+1) );
}
}
CDC dc;
dc.Attach(lpDIS->hDC);
CRect rectFull = lpDIS->rcItem;
CRect rectName = rectFull;
rectName.left = rectFull.left + 60;
rectName.bottom = rectName.top + 30;
rectName.right = rectFull.Width() - 1;
CRect rectImage = rectFull;
rectImage.top = rectFull.top + 5;
rectImage.left = rectFull.left +5;
rectImage.bottom = rectFull.bottom -5;
rectImage.right = rectImage.left +50;
CRect rectID = rectFull;
rectID.left = rectFull.left + 60;
rectID.top = rectFull.top + 30;
UINT nIndex = lpDIS->itemID;
LPITEMDATA pItemData = (LPITEMDATA)GetItemDataPtr(nIndex);
if (nIndex != (UINT) -1)
{
if(-1 != pItemData->nImage )
{
HICON hIco = m_ImageList.ExtractIcon(pItemData->nImage);
DrawIcon(dc,rectImage.left,rectImage.top,hIco);
}
LOGFONT lf;
dc.GetCurrentFont()->GetLogFont(&lf);
CFont fontUser, fontID, *pOldFont;
//lf.lfCharSet = SHIFTJIS_CHARSET;
//lstrcpy(lf.lfFaceName,_T("MS Mincho"));
lf.lfHeight=25;
lf.lfWidth=0;
fontUser.CreateFontIndirect(&lf);
pOldFont=dc.SelectObject(&fontUser);
dc.SetBkMode(TRANSPARENT);
dc.SetTextColor(pItemData->crTextColor);
dc.DrawText(pItemData->cstrUserName,CRect(rectName.left+3,rectName.top+3, rectName.right-3,rectName.bottom+3), DT_LEFT | DT_SINGLELINE);
lf.lfHeight=20;
lf.lfWidth=0;
fontID.CreateFontIndirect(&lf);
dc.SelectObject(&fontID);
dc.SetBkMode(TRANSPARENT);
dc.SetTextColor(pItemData->crTextColor);
dc.DrawText(pItemData->cstrUserID,CRect(rectID.left+3,rectID.top+3, rectID.right-3,rectID.bottom+3), DT_LEFT | DT_SINGLELINE);
dc.SelectObject(pOldFont);
}
dc.Detach();
}