zyh181668 2015-11-04 07:17 采纳率: 0%
浏览 1541

mfc listctrl 设置某行中某几个字的颜色

如某行的字符串是 1122334455 而我只想设置3344的颜色 请问怎么搞?

  • 写回答

1条回答

  • CSDN-Ada助手 CSDN-AI 官方账号 2022-09-20 21:19
    关注
    不知道你这个问题是否已经解决, 如果还没有解决的话:
    • 这个问题的回答你可以参考下: https://ask.csdn.net/questions/7716797
    • 我还给你找了一篇非常好的博客,你可以看看是否有帮助,链接:MFC ListCtrl 虚拟列表闪烁的问题 && 改变ListCtrl颜色
    • 除此之外, 这篇博客: MFC之列表控件ListCtrl中的 一:基本操作 部分也许能够解决你的问题, 你可以仔细阅读以下内容或者直接跳转源博客中阅读:

      1.

      (1)InsertItem --- 插入一个主项(行) 
      (2)DeleteItem --- 删除一个主项 (行) 
      (3)InsertColumn --- 插入一个列 
      (4)DeleteColumn --- 删除一个列 (索引从0开始)
      (5)SetItemText --- 设置子项文本
      (6)GetItemText --- 获得子项文本
      (7)GetItemCount --- 获得项目的总数(总行数目) 
      (8)SetImageList --- 把图像列表与列表控件关联(设置列表图标需要)
      -------------------------------------------------------
      用法:
      (1)InsertItem()  //插入一行
      
      // 可以插入图片(失败则图片不能显示)
      int InsertItem(const LVITEM* pItem);
      
       // 插入文字
      int InsertItem(
      				int nItem,  //第几行
      				LPCTSTR lpszItem  //该行第1列的文字
      				);
      
      -------------------------------------------------------
      (2)DeleteItem(iItem); //根据行号删除某行。
      注意:若要删除多行时,需要从后面开始删除,因为如果从前面开始删除的话,下面的行会往上移,原来第1行就变成了第0行。
      
      错误删法:
       m_listctrl.DeleteItem(0);
       m_listctrl.DeleteItem(1)
       
      正确删法:
      m_listctrl.DeleteItem(1);
      m_listctrl.DeleteItem(0);
      -------------------------------------------------------
      (3)InsertColumn() //插入1列
      int InsertColumn(
      			     int nCol,     // 第几列
      				 LPCTSTR lpszColumnHeading,   //列名
      				 int nFormat = LVCFMT_LEFT,  // 对齐的方式
      				 int nWidth = -1,  //该列的宽度
      				 int nSubItem = -1  //子项的索引与列(一般缺省默认即可,可不填)
      				 );
      
      对齐的方式有3种:
      			LVCFMT_LEFT (左对齐)
      			LVCFMT_CENTER (居中)
      			LVCFMT_RIGHT (右对齐)
      -------------------------------------------------------
      (4)DeleteColumn --- 删除一个列 (索引从0开始)
      //注意:删除多列要从后往前删,否则出错 
      for(int k=2;k>=0;k--) 
      	m_ListCtrl.DeleteColumn(k); 
      
      -------------------------------------------------------
      (5)SetItemText()  //设置文字
      BOOL SetItemText(
      			 int nItem,  //第几行
      			 int nSubItem,  //低级列
      			 LPCTSTR lpszText  //文字内容
      			 );
      
      -------------------------------------------------------
      
      
      
      

      2.设置列表控件的扩展样式

      SetExtendedStyle(LVS_EX_GRIDLINES|LVS_EX_FULLROWSELECT|LVS_EX_CHECKBOXES) ;
      
      常用的扩展样式:
      LVS_EX_GRIDLINES---网格线
      
      LVS_EX_CHECKBOXES---每一行的最前面带个复选框
      
      LVS_EX_FULLROWSELECT---整行选中
      
      LVS_EX_HEADERDRAGDROP---列表头可以拖动(改变位置)
      
      
      

    如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^
    评论

报告相同问题?

悬赏问题

  • ¥20 sub地址DHCP问题
  • ¥15 delta降尺度计算的一些细节,有偿
  • ¥15 Arduino红外遥控代码有问题
  • ¥15 数值计算离散正交多项式
  • ¥30 数值计算均差系数编程
  • ¥15 redis-full-check比较 两个集群的数据出错
  • ¥15 Matlab编程问题
  • ¥15 训练的多模态特征融合模型准确度很低怎么办
  • ¥15 kylin启动报错log4j类冲突
  • ¥15 超声波模块测距控制点灯,灯的闪烁很不稳定,经过调试发现测的距离偏大