useful

来源:互联网 发布:广州新一代数据 编辑:程序博客网 时间:2024/04/29 18:48
void CMyListCtrl::DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct){    CDC* pDC = CDC::FromHandle(lpDrawItemStruct->hDC);    CRect rect(lpDrawItemStruct->rcItem);                //取得绘制区域    int iItem = lpDrawItemStruct->itemID;                  //取得行    TCHAR szBuff[MAX_PATH];    LVITEM lvItem;               //取得Item所需LVITEM结构体    int iColumn = 0;            //DRAWITEMSTRUCT中不包含有item的列信息    CHeaderCtrl *Head = GetHeaderCtrl();    int iMax = Head->GetItemCount();             //取得列总数      while(iMax > iColumn){        //以列为单位进行处理,可根据自己的要求进行处理        //取得Item所需设置        lvItem.mask = LVIF_TEXT;// | LVIF_IMAGE | LVIF_STATE | LVIF_INDENT;        lvItem.iItem = iItem;        lvItem.iSubItem = iColumn;        lvItem.pszText = szBuff;        lvItem.cchTextMax = sizeof(szBuff); //    lvItem.stateMask = LVIS_ACTIVATING | LVIS_FOCUSED | LVIS_SELECTED | LVIS_STATEIMAGEMASK;        COLORREF txtColor;               //文本颜色        DWORD uformat;                    //文本格式        CFont font;                               //文本字体        LOGFONT lf;        if (iColumn < 1)        {            //设置字体            GetFont()->GetLogFont( &lf );            lf.lfHeight = abs(lf.lfHeight) + 2;            lf.lfWeight = FW_BOLD;            VERIFY(font.CreateFontIndirect(&lf));            pDC->SelectObject(font.m_hObject);            //设置颜色            txtColor = GetSysColor(COLOR_WINDOWTEXT);            pDC->SetTextColor(txtColor);            //取得绘制区域            GetSubItemRect(iItem, iColumn, LVIR_BOUNDS, rect);            //设置文本格式            uformat = DT_WORD_ELLIPSIS | DT_SINGLELINE | DT_LEFT | DT_VCENTER;        }        else        {            GetFont()->GetLogFont( &lf );            txtColor = GetSysColor(COLOR_GRAYTEXT);            pDC->SelectObject(GetFont()->m_hObject);            pDC->SetTextColor(txtColor );            GetSubItemRect(iItem, iColumn, LVIR_BOUNDS, rect);            uformat = DT_WORD_ELLIPSIS | DT_SINGLELINE | DT_RIGHT | DT_VCENTER;        }               GetItem(&lvItem);        pDC->DrawText(lvItem.pszText, rect, uformat);                //绘制文本        iColumn++;    }}