一、CListCtrl在MFC中共有四種view可供選擇,每種view用不同的方式顯示列表的內容。
· 表徵圖視圖(Icon view)
每一項以全尺寸表徵圖(32×32像素)出現,下面有一個標籤。使用者可在列表視圖視窗拖動項到任意位置。
· 小表徵圖視圖(Small icon view)
視圖每一項以小表徵圖(16×16像素)出現,右邊有一個標籤。使用者可在列表視圖視窗拖動項到任意位置。
· 列表視圖(List view)
每一項以小表徵圖出現,下面有一個標籤。項按列排列,不能拖動到列表視圖視窗的任何位置。
· 報表視圖(Report view)
每一項在本行上出現,右邊有排列成列的附加資訊。最左邊的列包含小表徵圖和標籤,下一列包含應用指定的子項。
二、使用List Control控制項有兩種方法。
1.在對話方塊體上添加,直接從工具箱裡點List Control拖拉即可,在屬性裡view項設定檢視類型。
CListCtrl *pMyList;
pMyList = (CListCtrl*)GetDlgItem(IDC_LIST);
2.無對話方塊體,直接顯示在程式初始視圖視窗裡面。這時,如果基於CListView的類,聲明變數,然後調用CListView類裡的成員函數GetListCtrl()。
CListCtrl *pMyList;
pMyList = &GetListCtrl();
pMyList->ModifyStyle(0,LVS_ICON);//設定為檢視類型
三、其它設定。如顯示樣式、位置、背景等。
設定顯示樣式:網格,選中時整行高亮
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("節次"),LVCFMT_CENTER,iColumnWidth);
pMyList->InsertColumn(1,_T("課程"),LVCFMT_CENTER ,iColumnWidth);
pMyList->InsertItem(0,_T("第一節"));
pMyList->SetItemText(0,1,_T("語文"));
pMyList->InsertItem(1,_T("第二節"));
pMyList->SetItemText(1,1,_T("數學"));
五、一般都要為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("第一節")),改為pMyList->InsertItem(0,_T("第一節"),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();