天天看點

CListCtrl用法簡介

[設定屬性]

首先用資源編輯器拖放一個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;

 }

繼續閱讀