MFC 在ListCtrl控件中插入圖標

        上篇博文中,寫了一遍關於ListCtrl控件的基本用法和引用兩個重繪類進行一些美化。

今天的項目中,需要用到在控件中插入圖標作爲狀態顯示用,於是網上查找了一些資料,將方法記錄下來:

先看效果圖:

圖片沒有找到好看的大家見諒,實現的功能是根據運行狀態,顯示不同的圖標表示運行狀態和停止狀態兩種。


實施方法如下:

首先是添加一個listCtrl控件和添加變量,這就不說了。

1、然後在XXXDlg.h頭文件中定義一個變量:CImageList m_IconList;

2、在XXXDlg.cpp的OnInitDialog()函數中,添加以下代碼:

	//添加圖標
	m_IconList.Create(25,25,1,10,4);
	m_IconList.Add(AfxGetApp()->LoadIcon(IDI_ICON2));
	m_IconList.Add(AfxGetApp()->LoadIcon(IDI_ICON1));
	m_list.SetImageList(&m_IconList,LVSIL_SMALL);

	CRect rt;
	GetClientRect(&rt);
	m_list.InsertColumn(0,_T("序號"),LVCFMT_LEFT,rt.Width()/8);
	m_list.InsertColumn(1,_T("IEDName"),LVCFMT_LEFT,rt.Width()/5);
	m_list.InsertColumn(2,_T("IP"),LVCFMT_LEFT,rt.Width()/5);
	m_list.InsertColumn(3,_T("註釋"),LVCFMT_LEFT,rt.Width()/4);
	m_list.InsertColumn(4,_T("網卡"),LVCFMT_LEFT,rt.Width()/5);

	m_list.SetExtendedStyle(LVS_EX_GRIDLINES | LVS_EX_FULLROWSELECT | 
		LVS_EDITLABELS| LVS_EX_SUBITEMIMAGES );             //一定要設置LVS_EX_SUBITEMIMAGES 

注意:第一、m_list.SetImageList(&m_IconList,LVSIL_SMALL)的時候,後面必須選LVSIL_SMALL類型,否則顯示不出來。第二,圖片用的是ICON類型,m_IconList.Create(25,25,1,10,4);前兩個參數是顯示的圖標大小,可以自己隨意設置,可不受原圖標的實際像素的限制。第三、就是類型設置的時候,需要添加LVS_EX_SUBITEMIMAGES

3、添加List數據

//輸出list數據
void CIPSetDlg::ShowList()
{
	m_list.DeleteAllItems();
	CString strindex;
	for (int i=0;i<m_ListVec.size();i++)
	{
		strindex.Format("   %d",m_ListVec[i].index);

		LV_ITEM lvitem;
		memset((char *)&lvitem,'\0',sizeof(LV_ITEM));
		lvitem.mask=LVIF_TEXT|LVIF_IMAGE|LVIF_STATE;
		lvitem.iItem=i;
		lvitem.iSubItem=0;
		lvitem.stateMask=0;
		lvitem.iImage=m_ListVec[i].RunState;       	//控制調用的圖片
		lvitem.pszText=strindex.GetBuffer(0);
		int iDX=m_list.InsertItem(&lvitem);

		//給其他列設置圖標,2爲列數,1爲圖標
//		m_list.SetItem(iDX,2,LVIF_IMAGE,NULL,1,0,0,0);

		m_list.SetItemText(i,1,m_ListVec[i].IEDName);
		m_list.SetItemText(i,2,m_ListVec[i].IP);
		m_list.SetItemText(i,3,m_ListVec[i].Desc);
		m_list.SetItemText(i,4,m_ListVec[i].Adapter);
	}
}
至此,就完成了圖標的添加,網上說了很多,有些還是有些誤導,以上經過實用沒有問題。





發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章