ClistCtrl 하위 클래스
MyList.h
///////////////////////////////////////////////////////////////////////////
//CListCtrl
// :
//1、
//2、
//3、
// : CListCtrl
// ,
// , Windows ,
// , , ,
// , , , 。
// ,
//by l0g1n-------2012 6 12 17:44 QQ:519710 91
///////////////////////////////////////////////////////////////////////////
#pragma once
// CMyList
class CMyList : public CListCtrl
{
DECLARE_DYNAMIC(CMyList)
public:
CMyList();
virtual ~CMyList();
protected:
DECLARE_MESSAGE_MAP()
public:
afx_msg void OnNMCustomdraw(NMHDR *pNMHDR, LRESULT *pResult);
//
CImageList* SetImageList(CImageList *pImageList);
// id
BOOL SetItemImageId(int nItem,int nImageId);
// ,
int InsertItem(int nItem,LPCTSTR lpText,COLORREF fontcolor=RGB(0,0,0));
};
MyList.cpp
///////////////////////////////////////////////////////////////////////////
//CListCtrl
// :
//1、
//2、
//3、
// : CListCtrl
// ,
// , Windows ,
// , , ,
// , , , 。
// ,
//by l0g1n-------2012 6 12 17:44 QQ:519710391
///////////////////////////////////////////////////////////////////////////
#include "stdafx.h"
#include "ListControlDemo.h"
#include "MyList.h"
// CMyList
IMPLEMENT_DYNAMIC(CMyList, CListCtrl)
CMyList::CMyList()
{
}
CMyList::~CMyList()
{
}
BEGIN_MESSAGE_MAP(CMyList, CListCtrl)
ON_NOTIFY_REFLECT(NM_CUSTOMDRAW, &CMyList::OnNMCustomdraw)
END_MESSAGE_MAP()
CMap<DWORD , DWORD& , COLORREF , COLORREF&> MapItemColor;
void CMyList::OnNMCustomdraw(NMHDR *pNMHDR, LRESULT *pResult)
{
LPNMLVCUSTOMDRAW lplvcd = (LPNMLVCUSTOMDRAW)pNMHDR;
if (lplvcd->nmcd.dwDrawStage == CDDS_PREPAINT)
{
*pResult = CDRF_NOTIFYITEMDRAW;
}
else if (lplvcd->nmcd.dwDrawStage == CDDS_ITEMPREPAINT)
{
*pResult = CDRF_NOTIFYSUBITEMDRAW;
}
else if (lplvcd->nmcd.dwDrawStage == (CDDS_ITEMPREPAINT | CDDS_SUBITEM))
{
COLORREF ItemColor;
if(MapItemColor.Lookup((lplvcd->nmcd.dwItemSpec), ItemColor))
{
//lplvdr->clrText = RGB(0,0,0);//ItemColor;
lplvcd->clrText = ItemColor;
*pResult = CDRF_DODEFAULT;
}
}
}
// CMyList
//
CImageList* CMyList::SetImageList(CImageList *pImageList)
{
return CListCtrl::SetImageList(pImageList,LVSIL_SMALL);
}
// id
BOOL CMyList::SetItemImageId(int nItem,int nImageId)
{
return CListCtrl::SetItem(nItem,0,LVIF_IMAGE,NULL,nImageId,0,0,0);
}
// ,
int CMyList::InsertItem(int nItem,LPCTSTR lpText,COLORREF fontcolor)
{
const int IDX = CListCtrl::InsertItem(nItem, lpText);
//
DWORD iItem=(DWORD)nItem;
MapItemColor.SetAt(iItem, fontcolor);
return IDX;
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Java 다중 스레드를 순차적으로 실행하는 몇 가지 방법 요약Java 다중 스레드를 순차적으로 실행하는 몇 가지 방법 요약 동료는 무심결에 이 문제를 제기하고 두 가지 방법을 직접 실천했다.물론 더 좋은 방법이 있을 거야. 방법 1 이런 방법은 비교적 흔히 볼 수 있는 해결 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.