1.新建MFC对话框应用程序
2.在对话框中添加一个ListCtrl控件,并将其属性中的view改为Report
3.准备两张Icon图标,然后添加到资源ICON中
4.为ListCtrl添加一个控制变量m_ListIcon,并添加一个CImageList类型的变量m_ImageList,在OnDialogInit中进行初始化
void CListSubItem0IconDlg::OnListIconInit()
{
m_ListIcon.InsertColumn(0, _T("ID"), LVCFMT_LEFT, 50, -1);//插入列0
m_ListIcon.InsertColumn(1, _T("IP"), LVCFMT_LEFT, 100, -1);//插入列1
m_ListIcon.InsertColumn(2, _T("MAC"), LVCFMT_LEFT, 130, -1);//插入列2
m_ListIcon.InsertColumn(3, _T("Descriptor"), LVCFMT_LEFT, 200, -1);//插入列3
m_ImageList.Create(16, 16, ILC_COLOR32, 2, 2); //貌似32位的不会有黑色的阴影
m_ImageList.Add(AfxGetApp()->LoadIcon(IDI_ICON_OK));//加载Icon图标
m_ImageList.Add(AfxGetApp()->LoadIcon(IDI_ICON_ERR));//加载Icon图标
m_ListIcon.SetImageList(&m_ImageList, LVSIL_SMALL);//设置关联
m_ListIcon.SetExtendedStyle(LVS_EX_FULLROWSELECT | LVS_EX_GRIDLINES/* | LVS_EX_CHECKBOXES*/);
#ifdef DEBUG
CString bufs;
UINT Count = 1;
INT Row;
for (;Count <= 63; Count++)
{
bufs.Format(_T("%d"), Count);
Row = m_ListIcon.InsertItem(Count, bufs); //插入行Row,列0
m_ListIcon.SetItemText(Row, 1, _T("MACRow")); //插入列1
m_ListIcon.SetItemText(Row, 2, _T("IPRow")); //插入列2
m_ListIcon.SetItemText(Row, 3, _T("Descriptor"));//插入列3
}
#endif
}
5.编译运行的效果
6.动态改变图标,可以在类向导中添加定时器处理函数,通过定时器来定时改变图标,添加定时器处理函数OnTimer()
相关代码如下:
void CListSubItem0IconDlg::OnTimer(UINT_PTR nIDEvent)
{
// TODO: Add your message handler code here and/or call default
if(nIDEvent == 0)
{
LVITEM lvi;
lvi.mask = LVIF_IMAGE | LVIF_STATE | LVIF_INDENT | LVIF_PARAM;
lvi.iItem = m_ListItem++;
lvi.iSubItem = 0;
lvi.stateMask = 0xFFFF; // get all state flags
m_ListIcon.GetItem(&lvi);
TRACE(_T("item = %d\n"), m_ListItem);
lvi.iImage = 1;
LPWSTR str1;
str1 = (LPWSTR)+1;
lvi.pszText = str1;
m_ListIcon.SetItem(&lvi);
if (m_ListItem == m_ListIcon.GetItemCount())
{
KillTimer(0);
}
}
CDialogEx::OnTimer(nIDEvent);
}
运行效果:
源代码下载:http://download.youkuaiyun.com/download/sinat_27261621/10129706