社区
界面
帖子详情
设置ClistCtrl 单元格颜色
liuduofu
2005-12-15 03:58:27
看了很多这方面的文章;并且改了很多类,都不太成功.
有没有那种只能改变单元格颜色的ClistCtrl,而基本的InsertColumn()函数和InsertItem(),SetItemText()函数不改变的.我找了很多,但都不合适,改造的ClistCtrl也不成功!
...全文
1146
12
打赏
收藏
设置ClistCtrl 单元格颜色
看了很多这方面的文章;并且改了很多类,都不太成功. 有没有那种只能改变单元格颜色的ClistCtrl,而基本的InsertColumn()函数和InsertItem(),SetItemText()函数不改变的.我找了很多,但都不合适,改造的ClistCtrl也不成功!
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
12 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
liuduofu
2005-12-16
打赏
举报
回复
to Mackz(在相互)
你有这样的类吗?我可以在给你单独开分!
菜牛
2005-12-16
打赏
举报
回复
所谓自绘,是从CListCtrl继承一个类,当然原来的成员函数都可以用。
为了设置单元格颜色,需要添加一个成员变量和成员函数,然后在自绘中实现。编一下的话,50分太少。
liuduofu
2005-12-16
打赏
举报
回复
to tangjun237(tangjun2371)
这个函数是改变所有的字体颜色了吧,给我要的不太符合
liuduofu
2005-12-16
打赏
举报
回复
to vcmute(横秋)
我这个只能用ClistCtrl 控件了,是不是只要改变单元格字体的颜色,就必须自绘列头和添加项.
菜牛
2005-12-16
打赏
举报
回复
使用:
对话框上添加一个ListCtrl控件,添加控件变量m_ListCtrl,将变量类型改为CColorListCtrl
在OnInitDialog()中:
m_ListCtrl.InsertColumn(0, _T("Column 1"), 0, 100);
m_ListCtrl.InsertColumn(1, _T("Column 2"), LVCFMT_CENTER, 100);
m_ListCtrl.InsertColumn(2, _T("Column 3"), LVCFMT_RIGHT, 100);
int nItem = m_ListCtrl.InsertItem(0, _T("Row 1"));
m_ListCtrl.SetItemColor(nItem, 0, RGB(255, 0, 0));
m_ListCtrl.SetItemText(nItem, 1, _T("Row 1-2"));
m_ListCtrl.SetItemColor(nItem, 1, RGB(255, 255, 0));
m_ListCtrl.SetItemText(nItem, 2, _T("Row 1-3"));
m_ListCtrl.SetItemColor(nItem, 2, RGB(255, 0, 255));
nItem = m_ListCtrl.InsertItem(1, _T("Row 2"));
m_ListCtrl.SetItemColor(nItem, 0, RGB(100, 0, 255));
m_ListCtrl.SetItemText(nItem, 1, _T("Row 2-2"));
m_ListCtrl.SetItemColor(nItem, 1, RGB(255, 100, 0));
m_ListCtrl.SetItemText(nItem, 2, _T("Row 2-3"));
m_ListCtrl.SetItemColor(nItem, 2, RGB(255, 0, 100));
nItem = m_ListCtrl.InsertItem(2, _T("Row 3"));
m_ListCtrl.SetItemText(nItem, 1, _T("Row 3-2"));
m_ListCtrl.SetItemText(nItem, 2, _T("Row 3-3"));
//m_ListCtrl.SetItemColor(nItem, 2, RGB(255, 100, 100));
这个控件比较简单,主要实现“改变单元格颜色”这一个功能。真正要用,还需要添加一些错误处理功能和绘制列表项状态、编辑等等的功能。
菜牛
2005-12-16
打赏
举报
回复
// ColorListCtrl.cpp : 实现文件
//
#include "stdafx.h"
#include "DlgTest.h"
#include "ColorListCtrl.h"
#include ".\colorlistctrl.h"
// CColorListCtrl
IMPLEMENT_DYNAMIC(CColorListCtrl, CListCtrl)
CColorListCtrl::CColorListCtrl()
{
}
CColorListCtrl::~CColorListCtrl()
{
POSITION pos = m_lstItemColor.GetHeadPosition();
while (pos)
{
delete []m_lstItemColor.GetNext(pos);
}
}
BEGIN_MESSAGE_MAP(CColorListCtrl, CListCtrl)
END_MESSAGE_MAP()
void CColorListCtrl::PreSubclassWindow()
{
// TODO: 在此添加专用代码和/或调用基类
ModifyStyle(0, LVS_OWNERDRAWFIXED | LVS_REPORT, 0);
CListCtrl::PreSubclassWindow();
}
void CColorListCtrl::DrawItem(LPDRAWITEMSTRUCT lpDIS)
{
// TODO: 添加您的代码以绘制指定项
CDC *pDC = CDC::FromHandle(lpDIS->hDC);
int nRows = m_lstItemColor.GetCount();
COLORREF *clrCol = NULL;
if (nRows && lpDIS->itemID < nRows)
{
clrCol = m_lstItemColor.GetAt(m_lstItemColor.FindIndex(lpDIS->itemID));
}
CRect rcItem(lpDIS->rcItem);
LVCOLUMN lvColumn;
ZeroMemory(&lvColumn, sizeof(LVCOLUMN));
lvColumn.mask = LVCF_FMT | LVCF_WIDTH;
for (int nCol = 0; nCol < GetHeaderCtrl()->GetItemCount(); nCol++)
{
if (clrCol)
pDC->SetTextColor(clrCol[nCol]);
GetColumn(nCol, &lvColumn);
UINT uStyle = DT_SINGLELINE | DT_END_ELLIPSIS;
if (lvColumn.fmt & LVCFMT_LEFT)
uStyle |= DT_LEFT;
if (lvColumn.fmt & LVCFMT_RIGHT)
uStyle |= DT_RIGHT;
if (lvColumn.fmt & LVCFMT_CENTER)
uStyle |= DT_CENTER;
rcItem.right = rcItem.left + lvColumn.cx;
pDC->DrawText(GetItemText(lpDIS->itemID, nCol), rcItem, uStyle);
rcItem.left += lvColumn.cx;
}
}
// CColorListCtrl 消息处理程序
COLORREF CColorListCtrl::SetItemColor(int nRow, int nCol, COLORREF clrItem)
{
int nCols = GetHeaderCtrl()->GetItemCount();
int nRows = GetItemCount();
if (nCol >= nCols || nRow >= nRows)
return COLORREF(-1);
for (int i = m_lstItemColor.GetCount(); i < nRow + 1; i++)
{
COLORREF *clrCol = new COLORREF[nCols];
ZeroMemory(clrCol, sizeof(clrCol));
m_lstItemColor.AddTail(clrCol);
}
for (int i = 0; i < nRows; i++)
{
if (i == nRow)
{
COLORREF *clrCol = m_lstItemColor.GetAt(m_lstItemColor.FindIndex(nRow));
COLORREF clrRet = clrCol[nCol];
clrCol[nCol] = clrItem;
return clrRet;
}
}
return COLORREF(-1);
}
COLORREF CColorListCtrl::SetItemColor(LVITEM* plvItem, COLORREF clrItem)
{
if (!plvItem)
{
return COLORREF(0);
}
int nRow = plvItem->iItem;
int nCol = plvItem->iSubItem;
return SetItemColor(nCol, nRow, clrItem);
return COLORREF(-1);
}
菜牛
2005-12-16
打赏
举报
回复
简单写一下:
//ColorListCtrl.h
#pragma once
#include <afxtempl.h>
// CColorListCtrl
class CColorListCtrl : public CListCtrl
{
DECLARE_DYNAMIC(CColorListCtrl)
public:
CColorListCtrl();
virtual ~CColorListCtrl();
protected:
DECLARE_MESSAGE_MAP()
protected:
virtual void PreSubclassWindow();
public:
virtual void DrawItem(LPDRAWITEMSTRUCT /*lpDrawItemStruct*/);
COLORREF SetItemColor(int nRow, int nCol, COLORREF clrItem);
COLORREF SetItemColor(LVITEM* plvItem = NULL, COLORREF clrItem = RGB(0, 0, 0));
private:
CList<COLORREF*, COLORREF*> m_lstItemColor;
};
vcmute
2005-12-15
打赏
举报
回复
http://www.codeproject.com/miscctrl/#Grid+Control
tangjun237
2005-12-15
打赏
举报
回复
在你InsertItem()或SetItemText()之前SetTextColor()试试
liuduofu
2005-12-15
打赏
举报
回复
我是只改变一个单元格字体的颜色,,而不是全部.如果自画,那些基本的函数都不能用了吗??
duyhui
2005-12-15
打赏
举报
回复
只能自画
另外改变单元格字体颜色,SetItemText()的话,字体颜色也会改变的.
不太明白楼主的需求
liuduofu
2005-12-15
打赏
举报
回复
是单元格字体颜色!!!!!!!!!!!!!
设置
CLi
stCtrl
单元格
颜色
和背景色VC++6.0
总结起来,实现
CLi
stCtrl
单元格
颜色
和背景色的单独
设置
,主要涉及以下几个步骤: 1. 创建一个继承自
CLi
stCtrl
的新类。 2. 重写OnDrawItem和OnDrawSubItem函数,使用SetBkColor和SetTextColor
设置
颜色
。 3. 可以在...
设置
CLi
stCtrl
单元格
颜色
和背景色
本文将深入探讨如何动态
设置
CLi
stCtrl
单元格
的
颜色
和背景色。 首先,我们需要理解
CLi
stCtrl
的工作原理。它通过插入LVITEM结构来添加或修改列表项,该结构包含了文本、图像等信息。为了
设置
单元格
颜色
,我们需要利用...
MFC
CLi
stCtrl
设置
每行
颜色
、每列
颜色
或者单独项
颜色
2. **
颜色
设置
**:默认情况下,
CLi
stCtrl
的所有项都使用相同的
颜色
。然而,通过编程方式,我们可以为每个项的字体或背景
设置
不同的
颜色
,从而提高视觉效果和用户体验。 3. **自定义绘制**:为了实现每行、每列或...
CLi
stCtrl
设置
不同行不同
颜色
,字体
颜色
在某些应用中,我们可能需要为`
CLi
stCtrl
`的不同行
设置
不同的
颜色
或者字体
颜色
,以增强界面的可读性和视觉效果。本篇文章将详细介绍如何实现这一功能,以及如何指定行高和行宽。 首先,要为`
CLi
stCtrl
`的不同行
设置
...
改变li
stctrl
单元格
背景及文字
颜色
(非重写控件)
总之,虽然`
CLi
stCtrl
`本身不直接支持
单元格
颜色
的修改,但通过利用Owner-Drawn特性以及GDI绘图功能,我们可以实现这一功能,以满足特定的界面需求。这个过程需要对Windows消息机制和GDI有深入的理解。
界面
15,980
社区成员
115,867
社区内容
发帖
与我相关
我的任务
界面
VC/MFC 界面
复制链接
扫一扫
分享
社区描述
VC/MFC 界面
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章