第二步 建立第一行
1、 在上一節中我們建立了一個列,那我們可以按照同樣的方法多建立幾個列。在
m_ListCtrl.InsertColumn(0, _T("姓名"), LVCFMT_LEFT, 90);
代碼後邊添入下列三行代碼:
m_ListCtrl.InsertColumn(1,_T("性别"),LVCFMT_LEFT,40);
m_ListCtrl.InsertColumn(2,_T("聯系方式"),LVCFMT_LEFT,160);
m_ListCtrl.InsertColumn(3,_T("備注"),LVCFMT_LEFT,180);
大家可以發現,隻有第一個參數和最後一個參數不同,這兩個參數的作用在上一節我們也介紹過了。第一個參數是建立列的索引值,是從0開始的,也就是說第一列的索引值是0,第二列的索引值是1,第三列的索引值是2,以此類推,是不是很像數組的下表啊?
2、 大家可以運作下看看結果,會出現4個列,列名分别為:姓名,性别,聯系方式,備注。
3、 既然我們已經建立好了列,那我們來建立行吧。
4、 首先要知道List Control在顯示為Report樣式時,主項為第一項,後面緊跟着的為子項。主項和子項的資料寫入不同,這将在後面提到。是以說,在我們的例子當中姓名就是主項了,而其餘的項就都是子項了。
5、 在我們剛才添加的代碼後邊繼續添加代碼:
m_ListCtrl.InsertItem(0,_T("王二小"));
這裡我們來看下這個函數的定義:
int InsertItem(const LVITEM* pItem)
int InsertItem(int nItem,LPCTSTR lpszItem)
int InsertItem(int nItem, LPCTSTR lpszItem,int nImage)
int InsertItem(UINT nMask,
int nItem,
LPCTSTR lpszItem,
UINT nState,
UINT nStateMask,
int nImage,
LPARAM lParam
)
傳回值:
如果成功,則傳回建立列的索引值,否則為-1。
參數:
pItem
指向指定項屬性LVITEM結構的指針,如聯機文檔“平台SDK”中所述。
nItem
被插入項的索引值。
lpszItem
包含項标簽的字元串的位址,或當項為回調項時,該變量為LPSTR_TEXT CALLBACK。要了解更多有關回調項的資訊,請參閱CListCtrl::GetCall backMask.
nImage
項圖象的索引值,或當項為回調項時,該變量為I_IMAGECALLBACK。要了解更多有關回調項的資訊,請參閱CListCtrl::GetCallbackMask
nMask
參數nMask指定了哪個項屬性作為參數傳遞是有效的。它可以是聯機文檔“平台SDK” 中LVITEM結構所描述的一個或多個掩碼值。有效的資料能夠通過位與運算來組合。
nState
訓示項的狀态、狀态圖象及輪廓圖象。請參閱聯機文檔“平台SDK”中的LVITEM來擷取更多資訊,并參閱有效标志清單中的清單視圖項狀态。
nStateMask
訓示狀态成員中的哪一位将被擷取或修改。請參閱聯機文檔“平台SDK”中的LVITEM來擷取更多資訊。
圖象清單之内項的圖象的索引。
lParam
與項相關聯的應用指定的32位值。如果該參數被指定,那麼必須設定nMask的屬性為LVIF_PARAM。
說明:向清單視圖控件中新插入一項。
很顯然,我們采用的是第二個函數,具有三個參數的函數。
6、 我們這行代碼的作用就是,插入主項:王二小,即在第一行第一列姓名中添加了王二小。
7、 那我們要如何插入子項呢?我們繼續添加代碼如下:
m_ListCtrl.SetItemText(0,1,_T("男"));
我們先來看下這個函數的定義:
BOOL SetItemText(int nItem,int nSubItem,LPTSTR lpszText)
傳回值:如果成功,則傳回非零值,否則為0。
要設定文本項的索引值。
nSubItem
子項的索引,若為零,則設定項标簽。
lpszText
指向包含新項文本字元串的指針。
說明:改變清單視圖項或子項的文本。
這個就很好了解了,參數很少,這個就是為了添加子項。由于是子項,需要确定添加的位置,是以肯定需要二維的坐标來确定自己的位置,是以需要兩個索引。類似于二維數組的下标。在我們的函數參數中,0,1,表示第1行第2列,而男就是要添加的内容了。
8、 我們按照這個方法繼續添加代碼如下:
m_ListCtrl.SetItemText(0,2,_T("15888888888"));
m_ListCtrl.SetItemText(0,3,_T("兒童團"));
9、 調試程式,我們将可以看到具有完整的一行資料的結果。如下圖:

10、同樣,我們可以采取同樣的方法,建立添加多行資料。