| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 756 人关注过本帖
标题:关于Listctr背景色的另一个问题l
取消只看楼主 加入收藏
zhipeng0117
Rank: 1
等 级:新手上路
帖 子:71
专家分:0
注 册:2005-9-15
收藏
 问题点数:0 回复次数:1 
关于Listctr背景色的另一个问题l

图片附件: 游客没有浏览图片的权限,请 登录注册

参考了code project上一个例子,用下面这个函数实现了背景色
void CLayersDia::OnCustomDraw(NMHDR* pNMHDR, LRESULT* pRESULT)
{
// reinterpret_cast强制转换指针类型
NMLVCUSTOMDRAW* pLVCD = reinterpret_cast<NMLVCUSTOMDRAW*>( pNMHDR );

// Take the default processing unless we set this to something else below.
*pRESULT = CDRF_DODEFAULT;

// First thing - check the draw stage. If it's the control's prepaint
// stage, then tell Windows we want messages for every item.

if ( CDDS_PREPAINT == pLVCD->nmcd.dwDrawStage )
{
*pRESULT = CDRF_NOTIFYITEMDRAW;
}
else if ( CDDS_ITEMPREPAINT == pLVCD->nmcd.dwDrawStage )
{
// This is the notification message for an item. We'll request
// notifications before each subitem's prepaint stage.
*pRESULT = CDRF_NOTIFYSUBITEMDRAW;
}
else if ( (CDDS_ITEMPREPAINT | CDDS_SUBITEM) == pLVCD->nmcd.dwDrawStage )
{//这里改变背景色

COLORREF clrBkgnd;
int nCount = pLayersInfo->GetLayersCount();
int nItem = static_cast<int>(pLVCD->nmcd.dwItemSpec);

if ( 3 == pLVCD->iSubItem )
{
if(0 <= nItem && nItem < nCount)
clrBkgnd = 指定颜色;
}

// Store the colors back in the NMLVCUSTOMDRAW struct.
pLVCD->clrTextBk = clrBkgnd;
// Tell Windows to paint the control itself.
*pRESULT = CDRF_DODEFAULT;
}
}
但是我想运行时点击这一列,在弹出的对话框里选择颜色动态的修改,用了
RedrawItems()这个函数但是没有反应,不知道为什么,有什么方法可以实现动态改变背景色呢?
上次问这个问题时斑竹提到owner draw fix 属性的方法,能不能具体说一下,因为旋转这个属性后使用上面那个函数就会出错。

搜索更多相关主题的帖子: 背景色 Listctr stage cast pRESULT 
2006-08-25 10:38
zhipeng0117
Rank: 1
等 级:新手上路
帖 子:71
专家分:0
注 册:2005-9-15
收藏
得分:0 
解决了,是我犯了个错误
可以使每行的第三列有不同的颜色

2006-08-26 19:57
快速回复:关于Listctr背景色的另一个问题l
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.033463 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved