如何创建多列列表框?

问题描述 投票:0回答:4

我正在开发一个程序,它应该列出所有文件及其大小(目前......)。我创建了一个简单的应用程序,它将数据写入列表框。我试图将数据写入两列(第一列应该是名称,在它旁边的另一列中,它是大小),但我不知道,我应该如何做到这一点。 有人可以帮助我吗?

提前致谢!

坎皮

更新:

我尝试使用ListControl,但不幸的是我不能。我可以成功编译我的应用程序,但我只能看到空矩形。有人知道我做错了什么吗?

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    
}
c++ windows listbox
4个回答
4
投票

列表框控件确实支持多列,但只支持单系列条目;多列支持只是使项目继续到下一列,因此不需要垂直滚动。

正如 Kornel 所建议的,“列表视图控件”可能更合适。创建列表视图控件后,使用 ListView_InsertColumn 创建列。然后使用 ListView_SetItemText 插入项目。 编辑: 我的歉意;您应该使用

ListView_InsertItem

插入一个项目(行),然后使用 ListView_SetItemText 更改子项目(列)。如果列表视图仍然只是一个没有任何标题的空白框,您是否初始化了常用控件?这可以使用 InitCommonControlsEx 来完成,指定 ICC_LISTVIEW_CLASSES 常量。这应该在创建控件之前完成。


请参阅

Microsoft 有关列表视图控件的文档


4
投票
LVS_REPORT

样式的 List Control

    


0
投票


0
投票

列表框或列表控件(要使用列表控件)
  1. 查看参数必须是Report模式
  2. 所有者数据必须设置为 False 截图显示了这些
  3. 向列表控件添加数据的编程流程是将列表控件更改为扩展列表视图(
ListView_SetExtendedListViewStyle

),创建布局(通过添加列),添加项目数据(针对所需的每一行)并添加最后添加子项目到每一列(对于之前添加的每个项目数据)。

    

© www.soinside.com 2019 - 2024. All rights reserved.