列表控件设置颜色问题,感谢大家帮忙看看啊~
时间: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;
}
}
}
我现在想实现让修改过的数据变色,以便区分哪些是修改过的,哪些是没有修改的,该如何实现?感谢大家了~我的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
参见这个帖子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
我看了,这个帖子讲的是对奇偶行设置不同颜色,我做过的。
我现在的问题是,我不知道怎么对那个修改过的数据,即有修改痕迹的数据设置颜色。麻烦大家帮忙了~感谢~
引用 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设置颜色
引
能不能给点代码提示呢,我只知道可以关联控件的ID,单元格怎么设置ID呢?谢谢了~
作者: yisiyou 发布时间: 2011-11-29
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28