一、CListCtrl在MFC中共有四種view可供選擇,每種view用不同的方式顯示列表的內(nèi)容。
· 圖標視圖(Icon view)
每一項以全尺寸圖標(32×32像素)出現(xiàn),下面有一個標簽。用戶可在列表視圖窗口拖動項到任意位置。
· 小圖標視圖(Small icon view)
視圖每一項以小圖標(16×16像素)出現(xiàn),右邊有一個標簽。用戶可在列表視圖窗口拖動項到任意位置。
· 列表視圖(List view)
每一項以小圖標出現(xiàn),下面有一個標簽。項按列排列,不能拖動到列表視圖窗口的任何位置。
· 報表視圖(Report view)
每一項在本行上出現(xiàn),右邊有排列成列的附加信息。最左邊的列包含小圖標和標簽,下一列包含應用指定的子項。
二、使用List Control控件有兩種方法。
1.在對話框體上添加,直接從工具箱里點List Control拖拉即可,在屬性里view項設置視圖類型。
CListCtrl *pMyList;
pMyList = (CListCtrl*)GetDlgItem(IDC_LIST);
2.無對話框體,直接顯示在程序初始視圖窗口里面。這時,如果基于CListView的類,聲明變量,然后調(diào)用CListView類里的成員函數(shù)GetListCtrl()。
CListCtrl *pMyList;
pMyList = &GetListCtrl();
pMyList->ModifyStyle(0,LVS_ICON);//設置為視圖類型
三、其它設置。如顯示樣式、位置、背景等。
設置顯示樣式:網(wǎng)格,選中時整行高亮
pMyList->SetExtendedStyle( LVS_EX_FULLROWSELECT|LVS_EX_GRIDLINES );
如要固定每列不能用鼠標拖動,添加如下代碼:
CHeaderCtrl* pHeaderCtrl = (CHeaderCtrl*)pMyList->GetHeaderCtrl();
pHeaderCtrl->EnableWindow( FALSE ) ;
四、之后可以插入行、列。下例為Report view 類型的List,除第一行為標題,其余每行的第一列為item項,第二列為subitem。
pMyList->InsertColumn(0,_T("節(jié)次"),LVCFMT_CENTER,iColumnWidth);
pMyList->InsertColumn(1,_T("課程"),LVCFMT_CENTER ,iColumnWidth);
pMyList->InsertItem(0,_T("第一節(jié)"));
pMyList->SetItemText(0,1,_T("語文"));
pMyList->InsertItem(1,_T("第二節(jié)"));
pMyList->SetItemText(1,1,_T("數(shù)學"));
五、一般都要為List加圖標的,可以加bitmap或者icon圖標。
1.Bitmap圖標。
CBitmap *pBitmap=new CBitmap;
CImageList *pImageList=new CImageList;
pBitmap->LoadBitmap(IDB_BITMAP1);
pImageList->Create (48,48,ILC_COLOR,7,2);
pImageList->Add(PBitmap,RGB(0,0,0));
pListView->SetImageList(pImageList,LVSIL_NORMAL);//ICON 視圖加上這行
然后pMyList->InsertItem(0,_T("第一節(jié)")),改為pMyList->InsertItem(0,_T("第一節(jié)"),iImage),iImage為ImageList中的圖片編號
2.當然也可添加ICON圖標,如下。
//新建用來存放圖標的列表
CImageList* imageList = new CImageList();
imageList->Create(32,32,ILC_COLORDDB|ILC_MASK,7,7);
//從資源加載圖標
HICON hIcon = ::LoadIcon(AfxGetResourceHandle(), MAKEINTRESOURCE(IDI_ICON));
imageList->Add(hIcon);
獲取當前選中列表項編號:int i =pMyList->GetSelectionMark();