您的位置:首页 > 编程语言 > C语言/C++

[MFC]ListControl控件列表report类型添加列表图标

2014-03-11 13:25 549 查看
之前遇到过需要在列表中插入图标作为状态的功能,类似任务管理器,网上资料很少,研究了几天后,终于弄好了。

希望能够帮助到遇到同样问题的朋友们。

HICON m_online;
HICON m_offline;
HICON m_setsucceed;

4000
HICON m_seterror;

m_online = AfxGetApp()->LoadIcon(IDI_ONLINE);
m_offline = AfxGetApp()->LoadIcon(IDI_OFFLINE);
m_setsucceed = AfxGetApp()->LoadIcon(IDI_SETSUCCEED);
m_seterror = AfxGetApp()->LoadIcon(IDI_SETERROR);

CListCtrl m_listAp;

LONG lStyle; 

lStyle = GetWindowLong(m_listAp.m_hWnd, GWL_STYLE);// 获取当前窗口style 

//m_listAp是控件变量

lStyle = lStyle&(-LVS_TYPEMASK);  //清楚显示方式
lStyle = lStyle|LVS_REPORT;
SetWindowLong(m_listAp.m_hWnd, GWL_STYLE, lStyle);// 设置style 
DWORD dwStyle = m_listAp.GetExtendedStyle(); 
dwStyle |= LVS_EX_FULLROWSELECT;// 选中某行使整行高亮(只适用与report 风格的listctrl ) 
dwStyle |= LVS_EX_GRIDLINES;// 网格线(只适用与report 风格的listctrl ) 
dwStyle |= LVS_EX_CHECKBOXES;//item 前生成checkbox 控件 
dwStyle |= LVS_EX_SUBITEMIMAGES;
m_listAp.SetExtendedStyle(dwStyle); // 设置扩展风格 

//设置好风格之后

CImageList m_image;//成员变量

m_image.Create(16,16,ILC_COLOR24|ILC_MASK,1,1);  

m_image.SetBkColor(RGB(255,255,255));  
m_image.Add(m_online);//icon变量
m_image.Add(m_offline);//icon变量
m_image.Add(m_setsucceed);//icon变量
m_image.Add(m_seterror);//icon变量
m_listAp.SetImageList(&m_image,LVSIL_SMALL); 

...

m_listAp.SetItem(i,MODEL_POSITION,LVIF_TEXT|LVIF_IMAGE,ap.model,setstate,0,0,0);

//插入数据或者更新数据后设置图标,setstate是m_image的序号,我这个代码里面,setstate=0代表使用m_online图标,1代表使用m_offline图标,以此类推...

//ap.model是我这边显示插入数据列的文本,i是插入数据的行号,MODEL_POSITION是列号,LVIF_TEXT|LVIF_IMAGE,代表插入文本和图标
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息