天天看點

一步一步學List Control控件的用法(第二步)----建立第一行

第二步  建立第一行

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、  調試程式,我們将可以看到具有完整的一行資料的結果。如下圖:

一步一步學List Control控件的用法(第二步)----建立第一行

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