1、添加新类,基类是ClistCtrl
class NL_ListCtrl : public CListCtrl
{...}
2、添加修改背景函数
BOOL NL_ListCtrl::OnEraseBkgnd(CDC* pDC)
{
CRect rect;
GetClientRect(rect);
pDC->FillRect(rect,&m_brush);
return true;
//return CListCtrl::OnEraseBkgnd(pDC);
//去掉这个才有效
}
3、添加成员函数
void NL_ListCtrl::PreSubclassWindow()
{
DWORD lcStyle;
lcStyle=GetStyle();
lcStyle|=LVS_REPORT|
LVS_SINGLESEL|
LVS_SHOWSELALWAYS|
LVS_OWNERDRAWFIXED; //窗口所有者进行操作 制作个性列表必须得有 发送 WM_DRAWITEM消息
lcStyle&=~LVS_EDITLABELS;
ModifyStyle(0,lcStyle);
CListCtrl::PreSubclassWindow();
}
4、重新修改虚拟函数 DrawItem(LPDRAWITEMSTRUCT lpDIS),而不是 OnDrawItem(...)
OnDrawItem(...)是消息响应函数,而不是处理函数
virtual void DrawItem(LPDRAWITEMSTRUCT lpDIS);
{
//在这里进行修改显示特性,主要用的函数有以下
//GetHeaderCtrl
//GetItemCount;
//GetColumnWidth;
//SetColumnWidth
//GetItemRect
//GetItem
//GetItemText
lpDIS->itemID;//当前项目号
lpDIS->rcItem;//当前项目的区域
//是否有选择
BOOL bFocus=(GetFocus()==this);
BOOL bSelected=(lvi.state&LVIS_SELECTED &&
(GetStyle()&LVS_SHOWSELALWAYS));
bSelected=bSelected||(lvi.state&LVIS_DROPHILITED);
}
5、如果修改头的外观请使用CHeaderCtrl,操作类似与上面
CButton
CCHeckListBox
CComboBox
CHeaderCtrl
CListBox
CMenu
CStatusBar
CStatusBarCtrl
CTabCtrl