由于很少用界面对MFC不太熟,所在也参数了一下网络完成了一个自绘clistctrl类,不正确的请指出来。
//MyListCtrl.h
#pragma once
#include "afxcmn.h"
class CMyListCtrl :
public CListCtrl
{
public:
CString m_KeyStr;//要更改颜色的字符串
public:
CMyListCtrl(void);
~CMyListCtrl(void);
void GetKeyStrInfo(CString str);//获得要显示的字符串
protected:
//DECLARE_MESSAGE_MAP()
virtual void PreSubclassWindow();
public:
virtual void DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct);
};
//MyListCtrl.cpp
#include "StdAfx.h"
#include "MyListCtrl.h"
#include <vector>
#include <iostream>
CMyListCtrl::CMyListCtrl(void)
{
m_KeyStr = L"";
}
CMyListCtrl::~CMyListCtrl(void)
{
}
void CMyListCtrl::PreSubclassWindow()
{
// TODO: 在此添加专用代码和/或调用基类
ModifyStyle(0,LVS_OWNERDRAWFIXED);
CListCtrl::PreSubclassWindow();
}
//获得要显示的字符串
void CMyListCtrl::GetKeyStrInfo(CString str)
{
m_KeyStr = str;
}
void CMyListCtrl::DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct)
{
TCHAR lpBuffer[256];
LV_ITEM lvi;
LV_COLUMN lvc, lvcprev ;
::ZeroMemory(&lvc, sizeof(lvc));
::ZeroMemory(&lvcprev, sizeof(lvcprev));
lvc.mask = LVCF_WIDTH | LVCF_FMT;
lvcprev.mask = LVCF_WI