+ -
当前位置:首页 → 问答吧 → 列表控件设置颜色问题,感谢大家帮忙看看啊~

列表控件设置颜色问题,感谢大家帮忙看看啊~

时间:2011-11-29

来源:互联网

我实现了一个列表控件,双击列表控件的某一单元格,可以修改该单元格的数据,鼠标点击某单元格时,该单元格变成绿色。
我现在想实现让修改过的数据变色,以便区分哪些是修改过的,哪些是没有修改的,该如何实现?感谢大家了~我的OnCustomDraw函数如下:(我认为那部分的代码应该是在OnCustomDraw函数中实现吧,所以给出OnCustomDraw函数的代码)
void CMyListCtrl::custom_draw_funtion(NMHDR *pNMHDR, LRESULT *pResult)
{
  NMLVCUSTOMDRAW* nmcd=(NMLVCUSTOMDRAW*)pNMHDR;
  *pResult=CDRF_DODEFAULT;

  int row; 
  int col;
  switch(nmcd->nmcd.dwDrawStage)
  {
  case CDDS_PREPAINT:
  if(m_bCustomDraw) 
  *pResult=CDRF_NOTIFYITEMDRAW; 
  // else CDRF_DODEFAULT which tell windows to paint itself
  return;

  case CDDS_ITEMPREPAINT:
  *pResult=CDRF_NOTIFYSUBITEMDRAW;
  return;

  case CDDS_SUBITEM|CDDS_ITEMPREPAINT:
  {
  *pResult=0;
  row=nmcd->nmcd.dwItemSpec;
  col=nmcd->iSubItem;

  CString str=GetItemText(row,col);

  CRect rect;
  CDC*pDC=CDC::FromHandle(nmcd->nmcd.hdc);

  if(col>0)
  GetSubItemRect(row,col,LVIR_BOUNDS,rect);
  else
  GetItemRect(row,&rect,LVIR_LABEL);

  UINT uCode=DT_LEFT;

  if(row==m_sel_row && col==m_sel_col)
  {
  COLORREF kolor=RGB(255,0,0); //红色

  if(GetFocus()==this)
  kolor=RGB(0,255,0);

  CBrush brush(kolor);
  pDC->FillRect(&rect,&brush);


  }
  rect.OffsetRect(5,0);
  pDC->DrawText(str,&rect,uCode);

  *pResult=CDRF_SKIPDEFAULT;

  break;
  }
  }
}

作者: yisiyou   发布时间: 2011-11-29

参见这个帖子http://topic.csdn.net/u/20110122/03/48ed97a8-e7c2-4f14-a99c-bdbebbdea720.html

作者: sunyongliang118   发布时间: 2011-11-29

引用 1 楼 sunyongliang118 的回复:
参见这个帖子http://topic.csdn.net/u/20110122/03/48ed97a8-e7c2-4f14-a99c-bdbebbdea720.html

我看了,这个帖子讲的是对奇偶行设置不同颜色,我做过的。
我现在的问题是,我不知道怎么对那个修改过的数据,即有修改痕迹的数据设置颜色。麻烦大家帮忙了~感谢~

作者: yisiyou   发布时间: 2011-11-29

你要记录自己改过那些单元格
可以用一个和单元格相符的数组

作者: xianglitian   发布时间: 2011-11-29

同样道理,当你修改了一个格,存储这个格的ID,然后对ID设置颜色
引用 2 楼 yisiyou 的回复:
引用 1 楼 sunyongliang118 的回复:
参见这个帖子http://topic.csdn.net/u/20110122/03/48ed97a8-e7c2-4f14-a99c-bdbebbdea720.html

我看了,这个帖子讲的是对奇偶行设置不同颜色,我做过的。
我现在的问题是,我不知道怎么对那个修改过的数据,即有修改痕迹的数据设置颜色。麻烦大家帮忙了~感谢~

作者: buyong   发布时间: 2011-11-29

引用 4 楼 buyong 的回复:
同样道理,当你修改了一个格,存储这个格的ID,然后对ID设置颜色


能不能给点代码提示呢,我只知道可以关联控件的ID,单元格怎么设置ID呢?谢谢了~

作者: yisiyou   发布时间: 2011-11-29