制作个性列表

来源:互联网 发布:js 5秒倒计时 编辑:程序博客网 时间:2024/04/29 12:32



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
原创粉丝点击