一步一步学List Control控件的用法(第二步)----创建第一行
第二步? 創(chuàng)建第一行
?
1、? 在上一節(jié)中我們創(chuàng)建了一個(gè)列,那我們可以按照同樣的方法多創(chuàng)建幾個(gè)列。在
???? m_ListCtrl.InsertColumn(0, _T("姓名"), LVCFMT_LEFT, 90);
???? 代碼后邊添入下列三行代碼:
???????? m_ListCtrl.InsertColumn(1,_T("性別"),LVCFMT_LEFT,40);
???????? m_ListCtrl.InsertColumn(2,_T("聯(lián)系方式"),LVCFMT_LEFT,160);
m_ListCtrl.InsertColumn(3,_T("備注"),LVCFMT_LEFT,180);
大家可以發(fā)現(xiàn),只有第一個(gè)參數(shù)和最后一個(gè)參數(shù)不同,這兩個(gè)參數(shù)的作用在上一節(jié)我們也介紹過了。第一個(gè)參數(shù)是新建列的索引值,是從0開始的,也就是說第一列的索引值是0,第二列的索引值是1,第三列的索引值是2,以此類推,是不是很像數(shù)組的下表啊?
2、? 大家可以運(yùn)行下看看結(jié)果,會(huì)出現(xiàn)4個(gè)列,列名分別為:姓名,性別,聯(lián)系方式,備注。
3、? 既然我們已經(jīng)創(chuàng)建好了列,那我們來創(chuàng)建行吧。
4、? 首先要知道List Control在顯示為Report樣式時(shí),主項(xiàng)為第一項(xiàng),后面緊跟著的為子項(xiàng)。主項(xiàng)和子項(xiàng)的數(shù)據(jù)寫入不同,這將在后面提到。所以說,在我們的例子當(dāng)中姓名就是主項(xiàng)了,而其余的項(xiàng)就都是子項(xiàng)了。
5、? 在我們剛才添加的代碼后邊繼續(xù)添加代碼:
m_ListCtrl.InsertItem(0,_T("王二小"));
這里我們來看下這個(gè)函數(shù)的定義:
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。
參數(shù):
| pItem | 指向指定項(xiàng)屬性LVITEM結(jié)構(gòu)的指針,如聯(lián)機(jī)文檔“平臺(tái)SDK”中所述。 |
| nItem | 被插入項(xiàng)的索引值。 |
| lpszItem | 包含項(xiàng)標(biāo)簽的字符串的地址,或當(dāng)項(xiàng)為回調(diào)項(xiàng)時(shí),該變量為LPSTR_TEXT CALLBACK。要了解更多有關(guān)回調(diào)項(xiàng)的信息,請(qǐng)參閱CListCtrl::GetCall backMask. |
| nImage | 項(xiàng)圖象的索引值,或當(dāng)項(xiàng)為回調(diào)項(xiàng)時(shí),該變量為I_IMAGECALLBACK。要了解更多有關(guān)回調(diào)項(xiàng)的信息,請(qǐng)參閱CListCtrl::GetCallbackMask |
| nMask | 參數(shù)nMask指定了哪個(gè)項(xiàng)屬性作為參數(shù)傳遞是有效的。它可以是聯(lián)機(jī)文檔“平臺(tái)SDK” 中LVITEM結(jié)構(gòu)所描述的一個(gè)或多個(gè)掩碼值。有效的數(shù)據(jù)能夠通過位與運(yùn)算來組合。 |
| nState | 指示項(xiàng)的狀態(tài)、狀態(tài)圖象及輪廓圖象。請(qǐng)參閱聯(lián)機(jī)文檔“平臺(tái)SDK”中的LVITEM來獲取更多信息,并參閱有效標(biāo)志列表中的列表視圖項(xiàng)狀態(tài)。 |
| nStateMask | 指示狀態(tài)成員中的哪一位將被獲取或修改。請(qǐng)參閱聯(lián)機(jī)文檔“平臺(tái)SDK”中的LVITEM來獲取更多信息。 |
| nImage | 圖象列表之內(nèi)項(xiàng)的圖象的索引。 |
| lParam | 與項(xiàng)相關(guān)聯(lián)的應(yīng)用指定的32位值。如果該參數(shù)被指定,那么必須設(shè)置nMask的屬性為LVIF_PARAM。 |
說明:向列表視圖控件中新插入一項(xiàng)。
?
很顯然,我們采用的是第二個(gè)函數(shù),具有三個(gè)參數(shù)的函數(shù)。
6、? 我們這行代碼的作用就是,插入主項(xiàng):王二小,即在第一行第一列姓名中添加了王二小。
7、? 那我們要如何插入子項(xiàng)呢?我們繼續(xù)添加代碼如下:
m_ListCtrl.SetItemText(0,1,_T("男"));
我們先來看下這個(gè)函數(shù)的定義:
?
BOOL SetItemText(int nItem,int nSubItem,LPTSTR lpszText)
返回值:如果成功,則返回非零值,否則為0。
參數(shù):
| nItem | 要設(shè)定文本項(xiàng)的索引值。 |
| nSubItem | 子項(xiàng)的索引,若為零,則設(shè)置項(xiàng)標(biāo)簽。 |
| lpszText | 指向包含新項(xiàng)文本字符串的指針。 |
說明:改變列表視圖項(xiàng)或子項(xiàng)的文本。
?
這個(gè)就很好理解了,參數(shù)很少,這個(gè)就是為了添加子項(xiàng)。由于是子項(xiàng),需要確定添加的位置,所以肯定需要二維的坐標(biāo)來確定自己的位置,所以需要兩個(gè)索引。類似于二維數(shù)組的下標(biāo)。在我們的函數(shù)參數(shù)中,0,1,表示第1行第2列,而男就是要添加的內(nèi)容了。
8、? 我們按照這個(gè)方法繼續(xù)添加代碼如下:
???? ???? m_ListCtrl.SetItemText(0,2,_T("15888888888"));
m_ListCtrl.SetItemText(0,3,_T("兒童團(tuán)"));
9、? 調(diào)試程序,我們將可以看到具有完整的一行數(shù)據(jù)的結(jié)果。如下圖:
10、同樣,我們可以采取同樣的方法,創(chuàng)建添加多行數(shù)據(jù)。
轉(zhuǎn)載于:https://www.cnblogs.com/ainima/archive/2010/03/17/6332037.html
總結(jié)
以上是生活随笔為你收集整理的一步一步学List Control控件的用法(第二步)----创建第一行的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【邮件】生产数据库优化第一步:重建索引
- 下一篇: QCon 2010(InfoQ北京敏捷大