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));



  • 相关阅读:
    ios 分享腾讯微博
    ios 分享微信
    elinput 价格校验 大于0保留2位小数,不包含01,01.1这种
    从范闲到许乐,从宁缺再到陈长生
    二进制流 ajax 实现图片上传
    php 操作redis 部分命令
    matlab 与vs2008联合编程的设置备忘
    新型机器人闯入职场:到底是工作缔造者还是工作终结者?
    c++ vs2008 多线程编程的样例
    虚拟试衣创业公司Fitiquette被印度电商Myntra收购
  • 原文地址:https://www.cnblogs.com/skyhuangdan/p/5486775.html
Copyright © 2011-2022 走看看