社区
界面
帖子详情
设置ClistCtrl 单元格颜色
liuduofu
2005-12-15 03:58:27
看了很多这方面的文章;并且改了很多类,都不太成功.
有没有那种只能改变单元格颜色的ClistCtrl,而基本的InsertColumn()函数和InsertItem(),SetItemText()函数不改变的.我找了很多,但都不合适,改造的ClistCtrl也不成功!
...全文
1225
12
打赏
收藏
设置ClistCtrl 单元格颜色
看了很多这方面的文章;并且改了很多类,都不太成功. 有没有那种只能改变单元格颜色的ClistCtrl,而基本的InsertColumn()函数和InsertItem(),SetItemText()函数不改变的.我找了很多,但都不合适,改造的ClistCtrl也不成功!
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用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
打赏
举报
回复
是单元格字体颜色!!!!!!!!!!!!!
【编程题】数组中只出现一次的数字(Java实现)
标题【编程题】数组中只出现一次的数字(Java实现) 题目来源 剑指offer第40题 https://www.nowcoder.com/questionTerminal/e02fdb54d7524710a7d664d082bb7811 题目描述 一个整型数组里除了两个数字之外,其他的数字都出现了两次。请写程序找出这两个只出现一次的数字。 题目代码 //num1,num2分别为长度为1的数组。传出...
数组中只出现一次的数字Java实现
一个整型数组里除了两个数字之外,其他的数字都出现了两次。请写程序找出这两个只出现一次的数字。 思路:异或数组所有元素,由于相同的数异或之后为0,所以最后剩下的是两个只出现一次的数异或。然后记下其中一个为1的位置。遍历整个数组,当和这个数做&操作时,为0的一起异或,则能找出其中一个只出现一次的数。然后为1的那个为另一个只出现一次的数。//num1,num2分别为长度为1的数组。传出参数 //将num1
数据结构与算法分析笔记与总结(java实现)--数组10:数组中只出现一次的数字
数据结构与算法分析笔记与总结(java实现)--数组10:数组中只出现一次的数字
《剑指offer》刷题——【面试中的各项能力】面试题56:数组中只出现一次的数字(java实现)
《剑指offer》刷题——【面试中的各项能力】面试题56:数组中只出现一次的数字(java实现)一、题目描述 一、题目描述 一个整型数组里除了两个数字之外,其他的数字都出现了两次。请写程序找出这两个只出现一次的 数字 ...
《剑指Offer》数组中只出现一次的数字(Java 实现)
文章目录一、题目1.1 题目描述1.2 题目链接二、实现代码 一、题目 1.1 题目描述 一个整型数组里除了两个数字之外,其他的数字都出现了两次。请写程序找出这两个只出现一次的数字。 1.2 题目链接 《牛客网》:数组中只出现一次的数字 二、实现代码 //num1,num2分别为长度为1的数组。传出参数 //将num1[0],num2[0]
设置
为返回结果 public class Solu...
界面
15,976
社区成员
115,866
社区内容
发帖
与我相关
我的任务
界面
VC/MFC 界面
复制链接
扫一扫
分享
社区描述
VC/MFC 界面
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章