Windows的控制項與對應類的關係:給每個控制項關聯了一個類,在類中封裝相應的控制項。ClistCtrl
encapsulates the functionality of a “list view contrl”.list view control:displays a collection of items each consisting of an icon(from
an image list)and a label.
建立:①拖拉控制項的方式,相當於建立了一個ClistCtrl對象。②動態建立:構造ClistCtrl對象,其方式GDI的建立一樣,先構造類對象,再建立list
view control。在此可做個推斷,所有和windows對象關聯的類建立對象時都需要兩步,先構造類對象,再建立windows對象將其關聯起來。對GDI使用完後需銷毀GDI對象,而list
view control不用銷毀。
列表視圖控制項可用四種不同方式顯示其內容,稱為視圖。Icon、Small icon、List、Report。直觀的理解:windows資源管理員,“查看”標籤下的“大表徵圖,小表徵圖,列表,詳細資料”。實際使用一般都是report。How:設定其view屬性或代碼設定其style。
改變style:ClistCtrl建立後可在任何時刻改變它的style。How:①SetView②GetWindowLong獲得控制項當前格式,然後SetWindowLong設定控制項格式。
區分三個單詞Column、Item、SubItem:column指列;item指行;subitem指子行,與item配合實用,即第item行第subitem列。要增加資料有兩種方式:①一次插入一行或一列,再設定其值。②直接SetColumnWidth或SetItemCount插入n個行或列,再設定其值。
一直選中Item,即讓選中行一直高亮顯示,兩種方式:①設屬性Always show select為TRUE②添加擴充樣式LVS_SHOWSELALWAYS。區別:①方式選中一行,再執行別的操作,該選中行的底色會變成暗灰色,更實用。②方式會一直以深藍色顯示。
得到單擊的ClistCtrl的行列號:添加控制項的NM_CLICK訊息相應函數:
NM_LISTVIEW* pNMListView=(NM_LISTVIEW*)pNMHDR;
if(pNMListView->iItem!=-1)
{
CString strtemp;
strtemp.Format(_T("單擊的是第%d行第%d列"),
pNMListView->iItem, pNMListView->iSubItem);
AfxMessageBox(strtemp);
}
*pResult = 0;
進行大資料量更新時,避免閃爍:
m_ListCtrl.SetRedraw(FALSE);
//更新內容
m_ListCtrl.SetRedraw(TRUE);
m_ListCtrl.Invalidate();
m_ListCtrl.UpdateWindow();
關於:一般在CListCtrl中,每列只能顯示260個字元,多一個都會被截掉,但是取出來的資料卻是正確的和可編輯子項的CListCtrl類
。