[設定屬性]
首先用資源編輯器拖放一個ListCtrl控件到對話框中。
設定屬性。
Always Show Selection: True // 即便失去焦點依然高亮選擇
SingleSelection: True // 隻允許選中一行
View: Report // 報表方式,較常用
[初始化]
// 在對話框的OnInitialDialog中初始化ListCtrl
// 1. 設定樣式
m_ListCtrl.SetExtendedStyle( LVS_EX_FULLROWSELECT );
// LVS_EX_FULLROWSELECT: 表示選中整行,而非某一列
// LVS_EX_GRIDLINES: 顯示網格線
// LVS_EX_CHECKBOXES: 第一列前面顯示複選框
// LVS_EX_FLATSB: 比較平的滾動條
// 2. 插入列
m_ListCtrl.InsertColumn( 0, _T("列标題0"), LVCFMT_LEFT, 100 );
m_ListCtrl.InsertColumn( 1, _T("列标題1"), LVCFMT_LEFT, 100 );
// LVCFMT_LEFT表示列左對齊,還可以取LVCFMT_RIGHT,LVCFMT_CENTER
// 100為列寬
// 3. 插入行
// 可以在初始化時插入行,也可以動态插入行
m_ListCtrl.InsertItem( 0, _T("0 行 0 列") );
m_ListCtrl.SetItemText( 0, 1, _T("0 行 1 列") );
m_ListCtrl.InsertItem( 1, _T("1 行 0 列") );
m_ListCtrl.SetItemText( 1, 1, _T("0 行 1 列") );
[周遊所選]
POSITION selectItemPos = m_ListCtrl.GetFirstSelectedItemPosition();
while ( selectItemPos != NULL ) {
const int selectItemIndex = m_ListCtrl.GetNextSelectedItem( selectItemPos );
CString keyString = m_ListCtrl.GetItemText( selectItemIndex, 0 );
// selectItemIndex是基于0的索引
}
[删除所選]
POSITION selectItemPos = m_ListCtrl.GetFirstSelectedItemPosition();
int offset = 0;
while ( selectItemPos != NULL ) {
const int selectItemIndex = m_ListCtrl.GetNextSelectedItem( selectItemPos );
m_ListCtrl.DeleteItem( selectItemIndex - offset );
++offset;
}