zoukankan      html  css  js  c++  java
  • 设置listContrl中指定行的颜色

    在MFC中 自己通过手动拖放CListCtrl控件来制作自己的表格; 

    目的: 将指定item的行更该颜色;

    步骤:

    1,在窗口中拖放CListCtrl控件, 单击右键 创建控件对象:

    CListCtrl m_list;

    2, 手动新建类 CMyListCtrl :public CListCtrl 

    类实现代码:

    1.1,CMyListCtrl.h
    #pragma once
    #include "afxcmn.h"
    
    
    
    class CMylistCtrl :
     public CListCtrl
    {
    public:
     CMylistCtrl(void);
    public:
     ~CMylistCtrl(void);
    
    public:
     afx_msg void OnNMCustomdraw(NMHDR *pNMHDR, LRESULT *pResult);
     void SetItemColor(DWORD item, COLORREF color);
    
     CMap<DWORD , DWORD& , COLORREF , COLORREF&> MapItemColor;
     DECLARE_MESSAGE_MAP()
    };
    


    1.2, CMyListCtrl.cpp
    
    BEGIN_MESSAGE_MAP(CMylistCtrl, CListCtrl)
     ON_NOTIFY_REFLECT(NM_CUSTOMDRAW, OnNMCustomdraw)
     //    ON_WM_SIZE()
    END_MESSAGE_MAP()
    CMylistCtrl::CMylistCtrl(void)
    {
    }
    CMylistCtrl::~CMylistCtrl(void)
    {
    }
    void CMylistCtrl::OnNMCustomdraw( NMHDR *pNMHDR, LRESULT *pResult )
    {
     *pResult = CDRF_DODEFAULT;
     NMLVCUSTOMDRAW * lplvdr = (NMLVCUSTOMDRAW*)pNMHDR;
     NMCUSTOMDRAW &nmcd = lplvdr->nmcd;
     switch (lplvdr->nmcd.dwDrawStage)//判断状态
     {
     case CDDS_PREPAINT:
      *pResult = CDRF_NOTIFYITEMDRAW;
      break;
     case CDDS_ITEMPREPAINT:
      COLORREF ItemColor;
      //根据在SetItemColor(DWORD iItem, COLORREFcolor) 设置的//ITEM号和COLORREF 在摸板中查找,然后进行颜色赋值。
      if (MapItemColor.Lookup(nmcd.dwItemSpec, ItemColor))
      {
       //lplvdr->clrText = RGB(0,0,0)//ItemColor
       lplvdr->clrTextBk = ItemColor;
       *pResult = CDRF_DODEFAULT;
      }
      break;
     }
    }
    void CMylistCtrl::SetItemColor( DWORD item, COLORREF color )
    {
     // m_iCurrentItem = iItem;
     // m_CurrentColor = color;
     MapItemColor.SetAt(item, color);//设置某行的颜色
     this->RedrawItems(item,item);//重新染色
     
     //this->SetCheck(item,1);
     this->SetFocus();//设置焦点
     UpdateWindow();
    }
    

    4, 在MFC中包含CMyListCtrl.h 

    然后进行替换:

    CListCtrl m_list; ->  CMyListCtrl m_list;


    其他不变;

    5, 在你需要的地方更改颜色:


    m_list.SetItemColor(item, (DWORD)RGB(255,255,255));



  • 相关阅读:
    口袋摸球
    后渗透(四)数据包捕获
    后渗透(二)权限提升
    文件上传11-21
    MySQL之UDF提权
    《白帽子讲Web安全》读书笔记(一)
    XSS盲打获取cookies&&XSS钓鱼&&XSS键盘记录
    nginx目录穿越漏洞复现&&nginx目录遍历漏洞复现
    python教程(一)·简介
    DataPipeline如何实现数据质量管理?
  • 原文地址:https://www.cnblogs.com/skyhuangdan/p/5486775.html
Copyright © 2011-2022 走看看