2010-01-30 130 views
4

我正在研究一個程序,它應該列出所有文件和它的大小(現在...)。我創建了一個簡單的應用程序,它應該將數據寫入列表框。我試圖寫在兩列的數據(第一個應該是名稱,並在旁邊,在另一列,它的大小),但我不明白,我該如何做到這一點。 有人可以幫我嗎?如何創建多列Listbox?

在此先感謝!

kampi

更新:

我嘗試使用列表控件,但遺憾的是我不能。我可以成功地編譯我的應用程序,但我只能看到空矩形。有人知道我做錯了什麼嗎?

BOOL CGetFileListDlg::OnInitDialog() 
{ 
CDialog::OnInitDialog(); 

// Set the icon for this dialog. The framework does this automatically 
// when the application's main window is not a dialog 
SetIcon(m_hIcon, TRUE);   // Set big icon 
SetIcon(m_hIcon, FALSE);  // Set small icon 

// TODO: Add extra initialization here 

LVITEM lvItem; 
LVCOLUMN lvColumn; 
int nCol; 

lvColumn.mask = LVCF_FMT | LVCF_TEXT | LVCF_WIDTH; 
lvColumn.fmt = LVCFMT_CENTER; 
lvColumn.cx = 10; 
lvColumn.pszText = _T("Filename"); 
ListView_InsertColumn(m_List, 0, &lvColumn); 
ListView_SetItemText(m_List, 0, 0, _T("TEST")); 

return TRUE; // return TRUE unless you set the focus to a control  
} 

回答

4

列表框控件確實支持多列,但它只支持一系列條目;多列支持只是使項目繼續到下一列,因此不需要垂直滾動。

正如Kornel所建議的,list view control可能更合適。創建列表視圖控件後,使用ListView_InsertColumn創建列。然後使用ListView_SetItemText插入項目。編輯: 我的apoligies;您應該使用ListView_InsertItem插入一個項目(一行),然後使用ListView_SetItemText來更改子項目(列)。如果列表視圖仍然只是一個沒有任何標題的空白框,您是否初始化了公共控件?這可以使用InitCommonControlsEx完成,指定ICC_LISTVIEW_CLASSES常數。這應該在創建控件之前完成。

請參閱Microsoft's documentation on list view controls。要檢查

+0

嗨!非常感謝您的幫助!我忘了初始化常用控件。再次感謝! – kampi

2

不要使用列表框,請使用帶有LVS_REPORT風格的List Control

+0

嗨!這看起來非常好!謝謝!我試過了,但沒有顯示任何內容。我只能看到白色的矩形。我做錯了什麼? – kampi

0

也許使用DataGridView和對象作爲數據源。

0

三個重要的參數是

  1. 列表框或列表控件(列表控制是使用)
  2. 查看參數必須是報告模式
  3. 所有者的數據必須設置爲False 的截圖顯示,這些 enter image description here

編程流程來將數據添加到列表控件被更改列表控制到擴展列表視圖(ListView_SetExtendedListViewStyle),創建佈局(通過添加列),添加項目數據(爲每個所需的行)&添加最後添加子項到每列(對於每個項目數據先前添加)。