自绘CListCtrl类 奇偶行颜色设置

来源:互联网 发布:阿里云数据库使用教程 编辑:程序博客网 时间:2024/06/05 20:30
//自绘CListCtrl类,重载虚函数DrawItemvoid CNewListCtrl::DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct){ // TODO: Add your code to draw the specified item ASSERT(lpDrawItemStruct->CtlType == ODT_LISTVIEW); CDC dc; dc.Attach(lpDrawItemStruct->hDC); ASSERT(NULL != dc.GetSafeHdc()); // Save these value to restore them when done drawing. COLORREF crOldTextColor = dc.GetTextColor(); COLORREF crOldBkColor = dc.GetBkColor();  // If this item is selected, set the background color // and the text color to appropriate values. Also, erase // rect by filling it with the background color. if ((lpDrawItemStruct->itemAction | ODA_SELECT) &&  (lpDrawItemStruct->itemState & ODS_SELECTED)) {  dc.SetTextColor(::GetSysColor(COLOR_HIGHLIGHTTEXT));  dc.SetBkColor(::GetSysColor(COLOR_HIGHLIGHT));  dc.FillSolidRect(&lpDrawItemStruct->rcItem,   ::GetSysColor(COLOR_HIGHLIGHT)); } else {  if(lpDrawItemStruct->itemID%2)   dc.FillSolidRect(&lpDrawItemStruct->rcItem, RGB(128,128,128));  else   dc.FillSolidRect(&lpDrawItemStruct->rcItem, RGB(255,128,255)); }  // If this item has the focus, draw a red frame around the // item's rect. if ((lpDrawItemStruct->itemAction | ODA_FOCUS) &&  (lpDrawItemStruct->itemState & ODS_FOCUS)) {  CBrush br(RGB(0, 0, 128));  dc.FrameRect(&lpDrawItemStruct->rcItem, &br); } // Draw the text. CString strText(_T("")); CRect rcItem; for(int i=0; i<GetHeaderCtrl()->GetItemCount(); i++) {  strText = GetItemText(lpDrawItemStruct->itemID, i);  GetSubItemRect(lpDrawItemStruct->itemID, i, LVIR_LABEL, rcItem);  rcItem.left += 5;  dc.DrawText(   strText,   strText.GetLength(),   &rcItem,  DT_LEFT|DT_SINGLELINE|DT_VCENTER); }  // Reset the background color and the text color back to their // original values. dc.SetTextColor(crOldTextColor); dc.SetBkColor(crOldBkColor);  dc.Detach();}// 调用CNewListCtrl m_list; // 类的成员变量 #define IDC_LIST 0x1101 m_list.Create(WS_CHILD|WS_VISIBLE|WS_BORDER|WS_VSCROLL|WS_HSCROLL|LVS_OWNERDRAWFIXED, CRect(0, 0, 280, 280), this, IDC_LIST); m_list.ModifyStyle(0, LVS_REPORT|LVS_SINGLESEL); m_list.SetExtendedStyle(LVS_EX_FULLROWSELECT | LVS_EX_GRIDLINES); m_list.InsertColumn(0, _T("AAA"), LVCFMT_LEFT, 100); m_list.InsertColumn(1, _T("BBB"), LVCFMT_LEFT, 100); CString strText(_T("")); for(int i=0; i<20; i++) {  m_list.InsertItem(i, _T(""));  strText.Format(_T("%d - Hello, World!"), i+1);  m_list.SetItemText(i, 0, strText);  strText.Format(_T("%d - ABCDEFG"), i+1);  m_list.SetItemText(i, 1, strText); }

效果如图:



本文转自:http://blog.csdn.net/VisualEleven/article/details/5948057

原创粉丝点击